Skip to content

Commit e783661

Browse files
committed
vpr: Change default timing-driven base cost delay_normalized_length
Using a length-scaled base cost helps the router to resolve congestion and converge faster -- particularly with the 'map' router lookahead. With the previous default 'delay_normalized' all routing wires had the same base cost. This provided no guidance to the router about whether taking a long or short wire was better. By scaling by length the router now sees longer wires as inherently more expensive which biases the router to use them for more timing critical connections (i.e. non-critical connections would prefer lower cost short wires). This improve router run-time since this avoids having to wait for congestion costs to move such signals off the long wires. This also helps to reduce wirelength since long wires are now viewed as more expensive, making them less likely to be used for short connections.
1 parent dacc432 commit e783661

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

vpr/src/base/read_options.cpp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1035,8 +1035,17 @@ static argparse::ArgumentParser create_arg_parser(std::string prog_name, t_optio
10351035
route_grp.add_argument<e_base_cost_type,ParseBaseCost>(args.base_cost_type, "--base_cost_type")
10361036
.help("Sets the basic cost of routing resource nodes:\n"
10371037
" * demand_only: based on expected demand of node type\n"
1038-
" * delay_normalized: like demand_only but normalized to magnitude of typical routing resource delay\n"
1039-
"(Default: demand_only for breadth-first router, delay_normalized for timing-driven router)")
1038+
" * delay_normalized: like demand_only but normalized\n"
1039+
" to magnitude of typical routing resource delay\n"
1040+
" * delay_normalized_length: like delay_normalized but\n"
1041+
" scaled by routing resource length\n"
1042+
" * delay_normalized_freqeuncy: like delay_normalized\n"
1043+
" but scaled inversely by segment type frequency\n"
1044+
" * delay_normalized_length_freqeuncy: like delay_normalized\n"
1045+
" but scaled by routing resource length, and inversely\n"
1046+
" by segment type frequency\n"
1047+
"(Default: demand_only for breadth-first router,\n"
1048+
" delay_normalized_length for timing-driven router)")
10401049
.show_in(argparse::ShowIn::HELP_ONLY);
10411050

10421051
route_grp.add_argument(args.bend_cost, "--bend_cost")
@@ -1387,7 +1396,7 @@ static void set_conditional_defaults(t_options& args) {
13871396
args.base_cost_type.set(DEMAND_ONLY, Provenance::INFERRED);
13881397
} else {
13891398
VTR_ASSERT(args.RouterAlgorithm == TIMING_DRIVEN);
1390-
args.base_cost_type.set(DELAY_NORMALIZED, Provenance::INFERRED);
1399+
args.base_cost_type.set(DELAY_NORMALIZED_LENGTH, Provenance::INFERRED);
13911400
}
13921401
}
13931402

0 commit comments

Comments
 (0)