@@ -55,14 +55,10 @@ static vtr::NdMatrix<float, 2> chanx_place_cost_fac({0, 0}); // [0...device_ctx.
55
55
static vtr::NdMatrix<float , 2 > chany_place_cost_fac ({0 , 0 }); // [0...device_ctx.grid.height()-2]
56
56
57
57
/* *
58
- * @brief Cost of a net, and a temporary cost of a net used during move assessment.
58
+ * @brief For the first two element in the struct: Cost of a net, and a temporary cost of a net used during move assessment.
59
59
* We also use negative cost values in proposed_net_cost as a flag to indicate that
60
60
* the cost of a net has not yet been updated.
61
- */
62
- static vtr::vector<ClusterNetId, double > net_cost, proposed_net_cost;
63
-
64
- /* * *
65
- * @brief Flag array to indicate whether the specific bounding box has been updated
61
+ * For the last one element in the struct: Flag array to indicate whether the specific bounding box has been updated
66
62
* in this particular swap or not. If it has been updated before, the code
67
63
* must use the updated data, instead of the out-of-date data passed into the
68
64
* subroutine, particularly used in try_swap(). The value NOT_UPDATED_YET
@@ -74,7 +70,12 @@ static vtr::vector<ClusterNetId, double> net_cost, proposed_net_cost;
74
70
* bounding box is got from scratch, so the bounding box would definitely be
75
71
* right, DO NOT update again.
76
72
*/
77
- static vtr::vector<ClusterNetId, NetUpdateState> bb_updated_before; // [0...cluster_ctx.clb_nlist.nets().size()-1]
73
+ struct NetInfo {
74
+ vtr::vector<ClusterNetId, double > net_cost;
75
+ vtr::vector<ClusterNetId, double > proposed_net_cost;
76
+ vtr::vector<ClusterNetId, NetUpdateState> bb_update_status; // [0...cluster_ctx.clb_nlist.nets().size()-1]
77
+ } NetInfo;
78
+ static struct NetInfo net_info;
78
79
79
80
/* The following arrays are used by the try_swap function for speed. */
80
81
@@ -477,7 +478,7 @@ static void update_net_bb(const ClusterNetId& net,
477
478
if (cluster_ctx.clb_nlist .net_sinks (net).size () < SMALL_NET) {
478
479
// For small nets brute-force bounding box update is faster
479
480
480
- if (bb_updated_before [net] == NetUpdateState::NOT_UPDATED_YET) { // Only once per-net
481
+ if (net_info. bb_update_status [net] == NetUpdateState::NOT_UPDATED_YET) { // Only once per-net
481
482
get_non_updatable_bb (net,
482
483
ts_bb_coord_new[net],
483
484
ts_layer_sink_pin_count[size_t (net)]);
@@ -515,7 +516,7 @@ static void update_net_layer_bb(const ClusterNetId& net,
515
516
if (cluster_ctx.clb_nlist .net_sinks (net).size () < SMALL_NET) {
516
517
// For small nets brute-force bounding box update is faster
517
518
518
- if (bb_updated_before [net] == NetUpdateState::NOT_UPDATED_YET) { // Only once per-net
519
+ if (net_info. bb_update_status [net] == NetUpdateState::NOT_UPDATED_YET) { // Only once per-net
519
520
get_non_updatable_layer_bb (net,
520
521
layer_ts_bb_coord_new[net],
521
522
ts_layer_sink_pin_count[size_t (net)]);
@@ -651,13 +652,13 @@ static void update_td_delta_costs(const PlaceDelayModel* delay_model,
651
652
static void record_affected_net (const ClusterNetId net,
652
653
int & num_affected_nets) {
653
654
/* Record effected nets. */
654
- if (proposed_net_cost[net] < 0 .) {
655
+ if (net_info. proposed_net_cost [net] < 0 .) {
655
656
/* Net not marked yet. */
656
657
ts_nets_to_update[num_affected_nets] = net;
657
658
num_affected_nets++;
658
659
659
660
/* Flag to say we've marked this net. */
660
- proposed_net_cost[net] = 1 .;
661
+ net_info. proposed_net_cost [net] = 1 .;
661
662
}
662
663
}
663
664
@@ -875,18 +876,18 @@ static void update_bb(ClusterNetId net_id,
875
876
pin_old_loc.layer_num = max (min<int >(pin_old_loc.layer_num , device_ctx.grid .get_num_layers () - 1 ), 0 );
876
877
877
878
/* Check if the net had been updated before. */
878
- if (bb_updated_before [net_id] == NetUpdateState::GOT_FROM_SCRATCH) {
879
+ if (net_info. bb_update_status [net_id] == NetUpdateState::GOT_FROM_SCRATCH) {
879
880
/* The net had been updated from scratch, DO NOT update again! */
880
881
return ;
881
882
}
882
883
883
- vtr::NdMatrixProxy<int , 1 > curr_num_sink_pin_layer = (bb_updated_before [net_id] == NetUpdateState::NOT_UPDATED_YET) ? place_move_ctx.num_sink_pin_layer [size_t (net_id)] : num_sink_pin_layer_new;
884
+ vtr::NdMatrixProxy<int , 1 > curr_num_sink_pin_layer = (net_info. bb_update_status [net_id] == NetUpdateState::NOT_UPDATED_YET) ? place_move_ctx.num_sink_pin_layer [size_t (net_id)] : num_sink_pin_layer_new;
884
885
885
- if (bb_updated_before [net_id] == NetUpdateState::NOT_UPDATED_YET) {
886
+ if (net_info. bb_update_status [net_id] == NetUpdateState::NOT_UPDATED_YET) {
886
887
/* The net had NOT been updated before, could use the old values */
887
888
curr_bb_edge = &place_move_ctx.bb_num_on_edges [net_id];
888
889
curr_bb_coord = &place_move_ctx.bb_coords [net_id];
889
- bb_updated_before [net_id] = NetUpdateState::UPDATED_ONCE;
890
+ net_info. bb_update_status [net_id] = NetUpdateState::UPDATED_ONCE;
890
891
} else {
891
892
/* The net had been updated before, must use the new values */
892
893
curr_bb_coord = &bb_coord_new;
@@ -902,7 +903,7 @@ static void update_bb(ClusterNetId net_id,
902
903
if (pin_old_loc.x == curr_bb_coord->xmax ) { /* Old position at xmax. */
903
904
if (curr_bb_edge->xmax == 1 ) {
904
905
get_bb_from_scratch (net_id, bb_coord_new, bb_edge_new, num_sink_pin_layer_new);
905
- bb_updated_before [net_id] = NetUpdateState::GOT_FROM_SCRATCH;
906
+ net_info. bb_update_status [net_id] = NetUpdateState::GOT_FROM_SCRATCH;
906
907
return ;
907
908
} else {
908
909
bb_edge_new.xmax = curr_bb_edge->xmax - 1 ;
@@ -934,7 +935,7 @@ static void update_bb(ClusterNetId net_id,
934
935
if (pin_old_loc.x == curr_bb_coord->xmin ) { /* Old position at xmin. */
935
936
if (curr_bb_edge->xmin == 1 ) {
936
937
get_bb_from_scratch (net_id, bb_coord_new, bb_edge_new, num_sink_pin_layer_new);
937
- bb_updated_before [net_id] = NetUpdateState::GOT_FROM_SCRATCH;
938
+ net_info. bb_update_status [net_id] = NetUpdateState::GOT_FROM_SCRATCH;
938
939
return ;
939
940
} else {
940
941
bb_edge_new.xmin = curr_bb_edge->xmin - 1 ;
@@ -975,7 +976,7 @@ static void update_bb(ClusterNetId net_id,
975
976
if (pin_old_loc.y == curr_bb_coord->ymax ) { /* Old position at ymax. */
976
977
if (curr_bb_edge->ymax == 1 ) {
977
978
get_bb_from_scratch (net_id, bb_coord_new, bb_edge_new, num_sink_pin_layer_new);
978
- bb_updated_before [net_id] = NetUpdateState::GOT_FROM_SCRATCH;
979
+ net_info. bb_update_status [net_id] = NetUpdateState::GOT_FROM_SCRATCH;
979
980
return ;
980
981
} else {
981
982
bb_edge_new.ymax = curr_bb_edge->ymax - 1 ;
@@ -1007,7 +1008,7 @@ static void update_bb(ClusterNetId net_id,
1007
1008
if (pin_old_loc.y == curr_bb_coord->ymin ) { /* Old position at ymin. */
1008
1009
if (curr_bb_edge->ymin == 1 ) {
1009
1010
get_bb_from_scratch (net_id, bb_coord_new, bb_edge_new, num_sink_pin_layer_new);
1010
- bb_updated_before [net_id] = NetUpdateState::GOT_FROM_SCRATCH;
1011
+ net_info. bb_update_status [net_id] = NetUpdateState::GOT_FROM_SCRATCH;
1011
1012
return ;
1012
1013
} else {
1013
1014
bb_edge_new.ymin = curr_bb_edge->ymin - 1 ;
@@ -1057,7 +1058,7 @@ static void update_bb(ClusterNetId net_id,
1057
1058
if (pin_old_loc.layer_num == curr_bb_coord->layer_max ) {
1058
1059
if (curr_bb_edge->layer_max == 1 ) {
1059
1060
get_bb_from_scratch (net_id, bb_coord_new, bb_edge_new, num_sink_pin_layer_new);
1060
- bb_updated_before [net_id] = NetUpdateState::GOT_FROM_SCRATCH;
1061
+ net_info. bb_update_status [net_id] = NetUpdateState::GOT_FROM_SCRATCH;
1061
1062
return ;
1062
1063
} else {
1063
1064
bb_edge_new.layer_max = curr_bb_edge->layer_max - 1 ;
@@ -1086,7 +1087,7 @@ static void update_bb(ClusterNetId net_id,
1086
1087
if (pin_old_loc.layer_num == curr_bb_coord->layer_min ) {
1087
1088
if (curr_bb_edge->layer_min == 1 ) {
1088
1089
get_bb_from_scratch (net_id, bb_coord_new, bb_edge_new, num_sink_pin_layer_new);
1089
- bb_updated_before [net_id] = NetUpdateState::GOT_FROM_SCRATCH;
1090
+ net_info. bb_update_status [net_id] = NetUpdateState::GOT_FROM_SCRATCH;
1090
1091
return ;
1091
1092
} else {
1092
1093
bb_edge_new.layer_min = curr_bb_edge->layer_min - 1 ;
@@ -1123,8 +1124,8 @@ static void update_bb(ClusterNetId net_id,
1123
1124
bb_edge_new.layer_max = curr_bb_edge->layer_max ;
1124
1125
}
1125
1126
1126
- if (bb_updated_before [net_id] == NetUpdateState::NOT_UPDATED_YET) {
1127
- bb_updated_before [net_id] = NetUpdateState::UPDATED_ONCE;
1127
+ if (net_info. bb_update_status [net_id] == NetUpdateState::NOT_UPDATED_YET) {
1128
+ net_info. bb_update_status [net_id] = NetUpdateState::UPDATED_ONCE;
1128
1129
}
1129
1130
}
1130
1131
@@ -1145,19 +1146,19 @@ static void update_layer_bb(ClusterNetId net_id,
1145
1146
pin_old_loc.y = max (min<int >(pin_old_loc.y , device_ctx.grid .height () - 2 ), 1 ); // -2 for no perim channels
1146
1147
1147
1148
/* Check if the net had been updated before. */
1148
- if (bb_updated_before [net_id] == NetUpdateState::GOT_FROM_SCRATCH) {
1149
+ if (net_info. bb_update_status [net_id] == NetUpdateState::GOT_FROM_SCRATCH) {
1149
1150
/* The net had been updated from scratch, DO NOT update again! */
1150
1151
return ;
1151
1152
}
1152
1153
1153
- const vtr::NdMatrixProxy<int , 1 > curr_layer_pin_sink_count = (bb_updated_before [net_id] == NetUpdateState::NOT_UPDATED_YET) ? place_move_ctx.num_sink_pin_layer [size_t (net_id)] : bb_pin_sink_count_new;
1154
+ const vtr::NdMatrixProxy<int , 1 > curr_layer_pin_sink_count = (net_info. bb_update_status [net_id] == NetUpdateState::NOT_UPDATED_YET) ? place_move_ctx.num_sink_pin_layer [size_t (net_id)] : bb_pin_sink_count_new;
1154
1155
1155
1156
const std::vector<t_2D_bb>*curr_bb_edge, *curr_bb_coord;
1156
- if (bb_updated_before [net_id] == NetUpdateState::NOT_UPDATED_YET) {
1157
+ if (net_info. bb_update_status [net_id] == NetUpdateState::NOT_UPDATED_YET) {
1157
1158
/* The net had NOT been updated before, could use the old values */
1158
1159
curr_bb_edge = &place_move_ctx.layer_bb_num_on_edges [net_id];
1159
1160
curr_bb_coord = &place_move_ctx.layer_bb_coords [net_id];
1160
- bb_updated_before [net_id] = NetUpdateState::UPDATED_ONCE;
1161
+ net_info. bb_update_status [net_id] = NetUpdateState::UPDATED_ONCE;
1161
1162
} else {
1162
1163
/* The net had been updated before, must use the new values */
1163
1164
curr_bb_edge = &bb_edge_new;
@@ -1199,8 +1200,8 @@ static void update_layer_bb(ClusterNetId net_id,
1199
1200
bb_coord_new);
1200
1201
}
1201
1202
1202
- if (bb_updated_before [net_id] == NetUpdateState::NOT_UPDATED_YET) {
1203
- bb_updated_before [net_id] = NetUpdateState::UPDATED_ONCE;
1203
+ if (net_info. bb_update_status [net_id] == NetUpdateState::NOT_UPDATED_YET) {
1204
+ net_info. bb_update_status [net_id] = NetUpdateState::UPDATED_ONCE;
1204
1205
}
1205
1206
}
1206
1207
@@ -1231,7 +1232,7 @@ static inline void update_bb_same_layer(ClusterNetId net_id,
1231
1232
curr_bb_coord[layer_num].xmax ,
1232
1233
bb_edge_new[layer_num].xmax ,
1233
1234
bb_coord_new[layer_num].xmax );
1234
- if (bb_updated_before [net_id] == NetUpdateState::GOT_FROM_SCRATCH) {
1235
+ if (net_info. bb_update_status [net_id] == NetUpdateState::GOT_FROM_SCRATCH) {
1235
1236
return ;
1236
1237
}
1237
1238
}
@@ -1254,7 +1255,7 @@ static inline void update_bb_same_layer(ClusterNetId net_id,
1254
1255
curr_bb_coord[layer_num].xmin ,
1255
1256
bb_edge_new[layer_num].xmin ,
1256
1257
bb_coord_new[layer_num].xmin );
1257
- if (bb_updated_before [net_id] == NetUpdateState::GOT_FROM_SCRATCH) {
1258
+ if (net_info. bb_update_status [net_id] == NetUpdateState::GOT_FROM_SCRATCH) {
1258
1259
return ;
1259
1260
}
1260
1261
}
@@ -1278,7 +1279,7 @@ static inline void update_bb_same_layer(ClusterNetId net_id,
1278
1279
curr_bb_coord[layer_num].ymax ,
1279
1280
bb_edge_new[layer_num].ymax ,
1280
1281
bb_coord_new[layer_num].ymax );
1281
- if (bb_updated_before [net_id] == NetUpdateState::GOT_FROM_SCRATCH) {
1282
+ if (net_info. bb_update_status [net_id] == NetUpdateState::GOT_FROM_SCRATCH) {
1282
1283
return ;
1283
1284
}
1284
1285
}
@@ -1301,7 +1302,7 @@ static inline void update_bb_same_layer(ClusterNetId net_id,
1301
1302
curr_bb_coord[layer_num].ymin ,
1302
1303
bb_edge_new[layer_num].ymin ,
1303
1304
bb_coord_new[layer_num].ymin );
1304
- if (bb_updated_before [net_id] == NetUpdateState::GOT_FROM_SCRATCH) {
1305
+ if (net_info. bb_update_status [net_id] == NetUpdateState::GOT_FROM_SCRATCH) {
1305
1306
return ;
1306
1307
}
1307
1308
}
@@ -1346,7 +1347,7 @@ static inline void update_bb_layer_changed(ClusterNetId net_id,
1346
1347
curr_bb_coord[old_layer_num].xmax ,
1347
1348
bb_edge_new[old_layer_num].xmax ,
1348
1349
bb_coord_new[old_layer_num].xmax );
1349
- if (bb_updated_before [net_id] == NetUpdateState::GOT_FROM_SCRATCH) {
1350
+ if (net_info. bb_update_status [net_id] == NetUpdateState::GOT_FROM_SCRATCH) {
1350
1351
return ;
1351
1352
}
1352
1353
} else if (x_old == curr_bb_coord[old_layer_num].xmin ) {
@@ -1358,7 +1359,7 @@ static inline void update_bb_layer_changed(ClusterNetId net_id,
1358
1359
curr_bb_coord[old_layer_num].xmin ,
1359
1360
bb_edge_new[old_layer_num].xmin ,
1360
1361
bb_coord_new[old_layer_num].xmin );
1361
- if (bb_updated_before [net_id] == NetUpdateState::GOT_FROM_SCRATCH) {
1362
+ if (net_info. bb_update_status [net_id] == NetUpdateState::GOT_FROM_SCRATCH) {
1362
1363
return ;
1363
1364
}
1364
1365
}
@@ -1372,7 +1373,7 @@ static inline void update_bb_layer_changed(ClusterNetId net_id,
1372
1373
curr_bb_coord[old_layer_num].ymax ,
1373
1374
bb_edge_new[old_layer_num].ymax ,
1374
1375
bb_coord_new[old_layer_num].ymax );
1375
- if (bb_updated_before [net_id] == NetUpdateState::GOT_FROM_SCRATCH) {
1376
+ if (net_info. bb_update_status [net_id] == NetUpdateState::GOT_FROM_SCRATCH) {
1376
1377
return ;
1377
1378
}
1378
1379
} else if (y_old == curr_bb_coord[old_layer_num].ymin ) {
@@ -1384,7 +1385,7 @@ static inline void update_bb_layer_changed(ClusterNetId net_id,
1384
1385
curr_bb_coord[old_layer_num].ymin ,
1385
1386
bb_edge_new[old_layer_num].ymin ,
1386
1387
bb_coord_new[old_layer_num].ymin );
1387
- if (bb_updated_before [net_id] == NetUpdateState::GOT_FROM_SCRATCH) {
1388
+ if (net_info. bb_update_status [net_id] == NetUpdateState::GOT_FROM_SCRATCH) {
1388
1389
return ;
1389
1390
}
1390
1391
}
@@ -1424,7 +1425,7 @@ static inline void update_bb_edge(ClusterNetId net_id,
1424
1425
bb_edge_new,
1425
1426
bb_coord_new,
1426
1427
bb_layer_pin_sink_count);
1427
- bb_updated_before [net_id] = NetUpdateState::GOT_FROM_SCRATCH;
1428
+ net_info. bb_update_status [net_id] = NetUpdateState::GOT_FROM_SCRATCH;
1428
1429
return ;
1429
1430
} else {
1430
1431
new_num_block_on_edge = old_num_block_on_edge - 1 ;
@@ -1838,7 +1839,7 @@ static double recompute_bb_cost() {
1838
1839
for (auto net_id : cluster_ctx.clb_nlist .nets ()) { /* for each net ... */
1839
1840
if (!cluster_ctx.clb_nlist .net_is_ignored (net_id)) { /* Do only if not ignored. */
1840
1841
/* Bounding boxes don't have to be recomputed; they're correct. */
1841
- cost += net_cost[net_id];
1842
+ cost += net_info. net_cost [net_id];
1842
1843
}
1843
1844
}
1844
1845
@@ -1863,15 +1864,15 @@ static void set_bb_delta_cost(const int num_affected_nets, double& bb_delta_c) {
1863
1864
const auto & cube_bb = g_vpr_ctx.placement ().cube_bb ;
1864
1865
1865
1866
if (cube_bb) {
1866
- proposed_net_cost[net_id] = get_net_cost (net_id,
1867
+ net_info. proposed_net_cost [net_id] = get_net_cost (net_id,
1867
1868
ts_bb_coord_new[net_id]);
1868
1869
} else {
1869
- proposed_net_cost[net_id] = get_net_layer_bb_wire_cost (net_id,
1870
+ net_info. proposed_net_cost [net_id] = get_net_layer_bb_wire_cost (net_id,
1870
1871
layer_ts_bb_coord_new[net_id],
1871
1872
ts_layer_sink_pin_count[size_t (net_id)]);
1872
1873
}
1873
1874
1874
- bb_delta_c += proposed_net_cost[net_id] - net_cost[net_id];
1875
+ bb_delta_c += net_info. proposed_net_cost [net_id] - net_info. net_cost [net_id];
1875
1876
}
1876
1877
}
1877
1878
@@ -1945,8 +1946,8 @@ double comp_bb_cost(e_cost_methods method) {
1945
1946
place_move_ctx.num_sink_pin_layer [size_t (net_id)]);
1946
1947
}
1947
1948
1948
- net_cost[net_id] = get_net_cost (net_id, place_move_ctx.bb_coords [net_id]);
1949
- cost += net_cost[net_id];
1949
+ net_info. net_cost [net_id] = get_net_cost (net_id, place_move_ctx.bb_coords [net_id]);
1950
+ cost += net_info. net_cost [net_id];
1950
1951
if (method == CHECK)
1951
1952
expected_wirelength += get_net_wirelength_estimate (net_id, place_move_ctx.bb_coords [net_id]);
1952
1953
}
@@ -1982,10 +1983,10 @@ double comp_layer_bb_cost(e_cost_methods method) {
1982
1983
place_move_ctx.num_sink_pin_layer [size_t (net_id)]);
1983
1984
}
1984
1985
1985
- net_cost[net_id] = get_net_layer_bb_wire_cost (net_id,
1986
+ net_info. net_cost [net_id] = get_net_layer_bb_wire_cost (net_id,
1986
1987
place_move_ctx.layer_bb_coords [net_id],
1987
1988
place_move_ctx.num_sink_pin_layer [size_t (net_id)]);
1988
- cost += net_cost[net_id];
1989
+ cost += net_info. net_cost [net_id];
1989
1990
if (method == CHECK)
1990
1991
expected_wirelength += get_net_wirelength_from_layer_bb (net_id,
1991
1992
place_move_ctx.layer_bb_coords [net_id],
@@ -2029,11 +2030,11 @@ void update_move_nets(int num_nets_affected,
2029
2030
}
2030
2031
}
2031
2032
2032
- net_cost[net_id] = proposed_net_cost[net_id];
2033
+ net_info. net_cost [net_id] = net_info. proposed_net_cost [net_id];
2033
2034
2034
2035
/* negative proposed_net_cost value is acting as a flag to mean not computed yet. */
2035
- proposed_net_cost[net_id] = -1 ;
2036
- bb_updated_before [net_id] = NetUpdateState::NOT_UPDATED_YET;
2036
+ net_info. proposed_net_cost [net_id] = -1 ;
2037
+ net_info. bb_update_status [net_id] = NetUpdateState::NOT_UPDATED_YET;
2037
2038
}
2038
2039
}
2039
2040
@@ -2042,8 +2043,8 @@ void reset_move_nets(int num_nets_affected) {
2042
2043
for (int inet_affected = 0 ; inet_affected < num_nets_affected;
2043
2044
inet_affected++) {
2044
2045
ClusterNetId net_id = ts_nets_to_update[inet_affected];
2045
- proposed_net_cost[net_id] = -1 ;
2046
- bb_updated_before [net_id] = NetUpdateState::NOT_UPDATED_YET;
2046
+ net_info. proposed_net_cost [net_id] = -1 ;
2047
+ net_info. bb_update_status [net_id] = NetUpdateState::NOT_UPDATED_YET;
2047
2048
}
2048
2049
}
2049
2050
@@ -2217,18 +2218,18 @@ void free_chan_w_factors_for_place_cost () {
2217
2218
}
2218
2219
2219
2220
void init_place_move_structs (size_t num_nets) {
2220
- net_cost.resize (num_nets, -1 .);
2221
- proposed_net_cost.resize (num_nets, -1 .);
2221
+ net_info. net_cost .resize (num_nets, -1 .);
2222
+ net_info. proposed_net_cost .resize (num_nets, -1 .);
2222
2223
/* Used to store costs for moves not yet made and to indicate when a net's *
2223
2224
* cost has been recomputed. proposed_net_cost[inet] < 0 means net's cost hasn't *
2224
2225
* been recomputed. */
2225
- bb_updated_before .resize (num_nets, NetUpdateState::NOT_UPDATED_YET);
2226
+ net_info. bb_update_status .resize (num_nets, NetUpdateState::NOT_UPDATED_YET);
2226
2227
}
2227
2228
2228
2229
void free_place_move_structs () {
2229
- vtr::release_memory (net_cost);
2230
- vtr::release_memory (proposed_net_cost);
2231
- vtr::release_memory (bb_updated_before );
2230
+ vtr::release_memory (net_info. net_cost );
2231
+ vtr::release_memory (net_info. proposed_net_cost );
2232
+ vtr::release_memory (net_info. bb_update_status );
2232
2233
}
2233
2234
2234
2235
void init_try_swap_net_cost_structs (size_t num_nets, bool cube_bb) {
0 commit comments