Skip to content

Commit d71ee16

Browse files
committed
Reduce channel width for placement delay lookup.
When no channel width is specified, instead of picking a channel width of 4x the maximum number of pins on a block, pick 4x the number of pins on the FILL_TYPE (when doing the placement delay lookup we build an FPGA of only IO and FILL_TYPE). This produces more reasonable channel widths e.g. W=532 (instead of W=900) on the Titan Stratix IV architecture capture.
1 parent f2a0261 commit d71ee16

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

vpr/SRC/place/timing_place_lookup.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -460,19 +460,19 @@ static void setup_chan_width(struct s_router_opts router_opts,
460460
/*we give plenty of tracks, this increases routability for the */
461461
/*lookup table generation */
462462

463-
int width_fac, i, max_pins_per_clb;
464-
465-
max_pins_per_clb = 0;
466-
for (i = 0; i < num_types; i++) {
467-
max_pins_per_clb = max(max_pins_per_clb, type_descriptors[i].num_pins);
468-
}
469-
470-
if (router_opts.fixed_channel_width == NO_FIXED_CHANNEL_WIDTH)
471-
width_fac = 4 * max_pins_per_clb; /*this is 2x the value that binary search starts */
472-
/*this should be enough to allow most pins to */
473-
/*connect to tracks in the architecture */
474-
else
463+
int width_fac;
464+
465+
if (router_opts.fixed_channel_width == NO_FIXED_CHANNEL_WIDTH) {
466+
//We use the number of pins on the FILL_TYPE, since
467+
//while building the placement timing model we use a
468+
//uniformly filled FPGA architecture.
469+
width_fac = 4 * FILL_TYPE->num_pins;
470+
/*this is 2x the value that binary search starts */
471+
/*this should be enough to allow most pins to */
472+
/*connect to tracks in the architecture */
473+
} else {
475474
width_fac = router_opts.fixed_channel_width;
475+
}
476476

477477
init_chan(width_fac, 0, chan_width_dist);
478478
}

0 commit comments

Comments
 (0)