diff --git a/src/interstellar/cost_model.py b/src/interstellar/cost_model.py index e0ccec734c69cba322e260c8d7fd60010c403698..7e2904da858f8159398763ffa5a11c60ce8916b6 100644 --- a/src/interstellar/cost_model.py +++ b/src/interstellar/cost_model.py @@ -143,13 +143,28 @@ def get_if_access(resource, point, layer, mac_capacity=1): for i in range(le.NUM): if i not in irrelevant_loops: if i == le.OX: - block_size *= point.loop_blockings[i][lower_level] + ( - point.loop_blockings[le.FX][lower_level] - 1 - ) + stride = layer.wstd + # stride should be ignored for L0 level or if FX/FY = 1 + if ( + lower_level == 0 + or point.loop_blockings[le.FX][lower_level] == 1 + ): + stride = 1 + + block_size *= point.loop_blockings[i][ + lower_level + ] * stride + (point.loop_blockings[le.FX][lower_level] - 1) elif i == le.OY: - block_size *= point.loop_blockings[i][lower_level] + ( - point.loop_blockings[le.FY][lower_level] - 1 - ) + stride = layer.hstd + # stride should be ignored for L0 level or if FX/FY = 1 + if ( + lower_level == 0 + or point.loop_blockings[le.FY][lower_level] == 1 + ): + stride = 1 + block_size *= point.loop_blockings[i][ + lower_level + ] * stride + (point.loop_blockings[le.FY][lower_level] - 1) else: block_size *= point.loop_blockings[i][lower_level] block_size *= point.loop_partitionings[i][lower_level]