Skip to content

Commit 4018188

Browse files
committed
[vpr][place] use prefix sum to populate chanz_place_cost_fac_
1 parent 400b5a1 commit 4018188

File tree

1 file changed

+17
-15
lines changed

1 file changed

+17
-15
lines changed

vpr/src/place/net_cost_handler.cpp

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -284,22 +284,24 @@ void NetCostHandler::alloc_and_load_for_fast_vertical_cost_update_(float place_c
284284
tile_num_inter_die_conn[0][y];
285285
}
286286

287-
for (size_t x_high = 0; x_high < device_ctx.grid.width(); x_high++) {
288-
for (size_t y_high = 0; y_high < device_ctx.grid.height(); y_high++) {
289-
for (int x_low = 0; x_low <= x_high; x_low++) {
290-
for (int y_low = 0; y_low <= y_high; y_low++) {
291-
int num_inter_die_conn = 0;
292-
for (int x = x_low; x <= x_high; x++) {
293-
for (int y = y_low; y <= y_high; y++) {
294-
num_inter_die_conn += tile_num_inter_die_conn[x][y];
295-
}
296-
}
287+
for (size_t x_high = 1; x_high < device_ctx.grid.width(); x_high++) {
288+
for (size_t y_high = 1; y_high < device_ctx.grid.height(); y_high++) {
289+
for (size_t x_low = 1; x_low <= x_high; x_low++) {
290+
for (size_t y_low = 1; y_low <= y_high; y_low++) {
291+
int num_inter_die_conn = acc_tile_num_inter_die_conn[x_high][y_high] - \
292+
acc_tile_num_inter_die_conn[x_low-1][y_high] - \
293+
acc_tile_num_inter_die_conn[x_high][y_low-1] + \
294+
acc_tile_num_inter_die_conn[x_low-1][y_low-1];
297295
int seen_num_tiles = (x_high - x_low + 1) * (y_high - y_low + 1);
298-
chanz_place_cost_fac_[x_high][y_high][x_low][y_low] = seen_num_tiles / static_cast<float>(num_inter_die_conn);
299-
300-
chanz_place_cost_fac_[x_high][y_high][x_low][y_low] = pow(
301-
(double)chanz_place_cost_fac_[x_high][y_high][x_low][y_low],
302-
(double)place_cost_exp);
296+
if (num_inter_die_conn == 0) {
297+
VTR_LOG_WARN("CHANZ place cost fac is 0 at (%lu,%lu), (%lu,%lu)\n", x_low, y_low, x_high, y_high);
298+
chanz_place_cost_fac_[x_high][y_high][x_low][y_low] = 1.0f;
299+
} else {
300+
chanz_place_cost_fac_[x_high][y_high][x_low][y_low] = seen_num_tiles / static_cast<float>(num_inter_die_conn);
301+
chanz_place_cost_fac_[x_high][y_high][x_low][y_low] = pow(
302+
(double)chanz_place_cost_fac_[x_high][y_high][x_low][y_low],
303+
(double)place_cost_exp);
304+
}
303305
}
304306
}
305307
}

0 commit comments

Comments
 (0)