Skip to content

Commit 788c9fd

Browse files
fix grid_loc_to_compressed_loc_approx_round_up()
1 parent 72b4146 commit 788c9fd

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

vpr/src/place/compressed_grid.h

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,14 +63,22 @@ struct t_compressed_block_grid {
6363
auto itr_x = std::upper_bound(compressed_to_grid_x[layer_num].begin(), compressed_to_grid_x[layer_num].end(), grid_loc.x);
6464
if (itr_x == compressed_to_grid_x[layer_num].begin())
6565
cx = 0;
66-
else
66+
else if (*(itr_x - 1) == grid_loc.x)
6767
cx = std::distance(compressed_to_grid_x[layer_num].begin(), itr_x - 1);
68+
else if (itr_x == compressed_to_grid_x[layer_num].end())
69+
cx = compressed_to_grid_x[layer_num].size();
70+
else
71+
cx = std::distance(compressed_to_grid_x[layer_num].begin(), itr_x);
6872

6973
auto itr_y = std::upper_bound(compressed_to_grid_y[layer_num].begin(), compressed_to_grid_y[layer_num].end(), grid_loc.y);
7074
if (itr_y == compressed_to_grid_y[layer_num].begin())
7175
cy = 0;
72-
else
76+
else if (*(itr_y - 1) == grid_loc.y)
7377
cy = std::distance(compressed_to_grid_y[layer_num].begin(), itr_y - 1);
78+
else if (itr_y == compressed_to_grid_y[layer_num].end())
79+
cy = compressed_to_grid_y[layer_num].size();
80+
else
81+
cy = std::distance(compressed_to_grid_y[layer_num].begin(), itr_y);
7482

7583
return {cx, cy, layer_num};
7684
}

0 commit comments

Comments
 (0)