@@ -2348,6 +2348,11 @@ static void alloc_and_load_for_fast_cost_update(float place_cost_exp) {
2348
2348
2349
2349
for (size_t high = 0 ; high < device_ctx.grid .height (); high++)
2350
2350
for (size_t low = 0 ; low <= high; low++) {
2351
+ /* Since we will divide the wiring cost by the average channel *
2352
+ * capacity between high and low, having only 0 width channels *
2353
+ * will result in infinite wiring capacity normalization *
2354
+ * factor, and extremely bad placer behaviour. Hence we change *
2355
+ * this to a small (1 track) channel capacity instead. */
2351
2356
if (chanx_place_cost_fac[high][low] == 0 .0f ) {
2352
2357
VTR_LOG_WARN (" CHANX place cost fac is 0 at %d %d\n " , high, low);
2353
2358
chanx_place_cost_fac[high][low] = 1 .0f ;
@@ -2375,6 +2380,11 @@ static void alloc_and_load_for_fast_cost_update(float place_cost_exp) {
2375
2380
2376
2381
for (size_t high = 0 ; high < device_ctx.grid .width (); high++)
2377
2382
for (size_t low = 0 ; low <= high; low++) {
2383
+ /* Since we will divide the wiring cost by the average channel *
2384
+ * capacity between high and low, having only 0 width channels *
2385
+ * will result in infinite wiring capacity normalization *
2386
+ * factor, and extremely bad placer behaviour. Hence we change *
2387
+ * this to a small (1 track) channel capacity instead. */
2378
2388
if (chany_place_cost_fac[high][low] == 0 .0f ) {
2379
2389
VTR_LOG_WARN (" CHANY place cost fac is 0 at %d %d\n " , high, low);
2380
2390
chany_place_cost_fac[high][low] = 1 .0f ;
0 commit comments