Skip to content

Commit cb015ea

Browse files
committed
[Router] Added YOYO Routing Budgets Algorithm Option to the CLI and Docs
The option to turn on the YOYO routing budgets algorithm (i.e., using RCV) was previously missing in both the VPR CLI and the documents, and this commit fixed the issues. Additionally, this commit added regression tests for the YOYO option.
1 parent 9dcb514 commit cb015ea

File tree

7 files changed

+63
-4
lines changed

7 files changed

+63
-4
lines changed

doc/src/vpr/command_line_usage.rst

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1376,15 +1376,17 @@ The following options are only valid when the router is in timing-driven mode (t
13761376

13771377
**Default:** ``safe``
13781378

1379-
.. option:: --routing_budgets_algorithm { disable | minimax | scale_delay }
1379+
.. option:: --routing_budgets_algorithm { disable | minimax | yoyo | scale_delay }
13801380

13811381
.. warning:: Experimental
13821382

13831383
Controls how the routing budgets are created. Routing budgets are used to guid VPR's routing algorithm to consider both short path and long path timing constraints :cite:`RCV_algorithm`.
13841384

13851385
``disable`` is used to disable the budget feature. This uses the default VPR and ignores hold time constraints.
13861386

1387-
``minimax`` sets the minimum and maximum budgets by distributing the long path and short path slacks depending on the the current delay values. This uses the routing cost valleys and Minimax-PERT algorithm :cite:`minimax_pert,RCV_algorithm`.
1387+
``minimax`` sets the minimum and maximum budgets by distributing the long path and short path slacks depending on the the current delay values. This uses the Minimax-PERT algorithm :cite:`minimax_pert`.
1388+
1389+
``yoyo`` allocates budgets using minimax algorithm (as above), and enables hold slack resolution in the router using the Routing Cost Valleys (RCV) algorithm :cite:`RCV_algorithm`.
13881390

13891391
``scale_delay`` has the minimum budgets set to 0 and the maximum budgets is set to the delay of a net scaled by the pin criticality (net delay/pin criticality).
13901392

vpr/src/base/read_options.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ struct RouteBudgetsAlgorithm {
272272
}
273273

274274
std::vector<std::string> default_choices() {
275-
return {"minimax", "scale_delay", "disable"};
275+
return {"minimax", "yoyo", "scale_delay", "disable"};
276276
}
277277
};
278278

vpr/src/route/connection_router.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ class ConnectionRouter : public ConnectionRouterInterface {
4545
, router_stats_(nullptr)
4646
, router_debug_(false) {
4747
heap_.init_heap(grid);
48-
// heap_.set_prune_limit(rr_nodes_.size(), kHeapPruneFactor * rr_nodes_.size());
4948
only_opin_inter_layer = (grid.get_num_layers() > 1) && inter_layer_connections_limited_to_opin(*rr_graph);
5049
rr_node_R_upstream.resize(rr_node_route_inf.size());
5150
rcv_path_data.resize(rr_node_route_inf.size());
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
##############################################
2+
# Configuration file for running experiments
3+
##############################################
4+
5+
# Path to directory of circuits to use
6+
circuits_dir=benchmarks/verilog
7+
8+
# Path to directory of architectures to use
9+
archs_dir=arch/timing
10+
11+
# Add circuits to list to sweep
12+
circuit_list_add=stereovision3.v
13+
14+
# Add architectures to list to sweep
15+
arch_list_add=k6_frac_N10_frac_chain_mem32K_40nm.xml
16+
17+
# Parse info and how to parse
18+
parse_file=vpr_fixed_chan_width.txt
19+
20+
# How to parse QoR info
21+
qor_parse_file=qor_fixed_chan_width.txt
22+
23+
# Pass requirements
24+
pass_requirements_file=pass_requirements_fixed_chan_width.txt
25+
26+
# Script parameters
27+
script_params = --routing_budgets_algorithm yoyo --route_chan_width 100 -sdc_file sdc/samples/stereovision3.sdc
28+

vtr_flow/tasks/regression_tests/vtr_reg_strong/task_list.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,3 +87,4 @@ regression_tests/vtr_reg_strong/strong_timing_no_fail
8787
regression_tests/vtr_reg_strong/strong_noc
8888
regression_tests/vtr_reg_strong/strong_flat_router
8989
regression_tests/vtr_reg_strong/strong_routing_constraints
90+
regression_tests/vtr_reg_strong/strong_yoyo_budgets
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
##############################################
2+
# Configuration file for running experiments
3+
##############################################
4+
5+
# Path to directory of circuits to use
6+
circuits_dir=benchmarks/verilog
7+
8+
# Path to directory of architectures to use
9+
archs_dir=arch/timing
10+
11+
# Add circuits to list to sweep
12+
circuit_list_add=stereovision3.v
13+
14+
# Add architectures to list to sweep
15+
arch_list_add=k6_frac_N10_frac_chain_mem32K_40nm.xml
16+
17+
# Parse info and how to parse
18+
parse_file=vpr_fixed_chan_width.txt
19+
20+
# How to parse QoR info
21+
qor_parse_file=qor_fixed_chan_width.txt
22+
23+
# Pass requirements
24+
pass_requirements_file=pass_requirements_fixed_chan_width.txt
25+
26+
# Script parameters
27+
script_params = -start odin --routing_budgets_algorithm yoyo --route_chan_width 100 -sdc_file sdc/samples/stereovision3.sdc
28+

vtr_flow/tasks/regression_tests/vtr_reg_strong_odin/task_list.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,4 @@ regression_tests/vtr_reg_strong_odin/koios_test
8282
regression_tests/vtr_reg_strong_odin/koios_test_no_hb
8383
regression_tests/vtr_reg_strong_odin/strong_timing_fail
8484
regression_tests/vtr_reg_strong_odin/strong_timing_no_fail
85+
regression_tests/vtr_reg_strong_odin/strong_yoyo_budgets

0 commit comments

Comments
 (0)