Skip to content

Commit 7ae49bf

Browse files
authored
Merge pull request #1395 from verilog-to-routing/router_rcv_2.0
Merging RCV branch into master
2 parents 1478410 + aaec4fa commit 7ae49bf

23 files changed

+2609
-271
lines changed

vpr/src/base/ShowSetup.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,8 @@ static void ShowRouterOpts(const t_router_opts& RouterOpts) {
352352
VTR_LOG("RouterOpts.routing_budgets_algorithm = DISABLE\n");
353353
} else if (RouterOpts.routing_budgets_algorithm == MINIMAX) {
354354
VTR_LOG("RouterOpts.routing_budgets_algorithm = MINIMAX\n");
355+
} else if (RouterOpts.routing_budgets_algorithm == YOYO) {
356+
VTR_LOG("RouterOpts.routing_budgets_algorithm = YOYO\n");
355357
} else if (RouterOpts.routing_budgets_algorithm == SCALE_DELAY) {
356358
VTR_LOG("RouterOpts.routing_budgets_algorithm = SCALE_DELAY\n");
357359
}
@@ -544,7 +546,7 @@ static void ShowPlacerOpts(const t_placer_opts& PlacerOpts,
544546
VTR_LOG("PlacerOpts.td_place_exp_last: %f\n", PlacerOpts.td_place_exp_last);
545547
VTR_LOG("PlacerOpts.delay_offset: %f\n", PlacerOpts.delay_offset);
546548
VTR_LOG("PlacerOpts.delay_ramp_delta_threshold: %d\n", PlacerOpts.delay_ramp_delta_threshold);
547-
VTR_LOG("PlacerOpts.delay_ramp_slope: %d\n", PlacerOpts.delay_ramp_slope);
549+
VTR_LOG("PlacerOpts.delay_ramp_slope: %f\n", PlacerOpts.delay_ramp_slope);
548550
VTR_LOG("PlacerOpts.tsu_rel_margin: %f\n", PlacerOpts.tsu_rel_margin);
549551
VTR_LOG("PlacerOpts.tsu_abs_margin: %f\n", PlacerOpts.tsu_abs_margin);
550552
VTR_LOG("PlacerOpts.post_place_timing_report_file: %s\n", PlacerOpts.post_place_timing_report_file.c_str());

vpr/src/base/read_options.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,8 @@ struct RouteBudgetsAlgorithm {
203203
ConvertedValue<e_routing_budgets_algorithm> conv_value;
204204
if (str == "minimax")
205205
conv_value.set_value(MINIMAX);
206+
else if (str == "yoyo")
207+
conv_value.set_value(YOYO);
206208
else if (str == "scale_delay")
207209
conv_value.set_value(SCALE_DELAY);
208210
else if (str == "disable")
@@ -220,6 +222,8 @@ struct RouteBudgetsAlgorithm {
220222
ConvertedValue<std::string> conv_value;
221223
if (val == MINIMAX)
222224
conv_value.set_value("minimax");
225+
else if (val == YOYO)
226+
conv_value.set_value("yoyo");
223227
else if (val == DISABLE)
224228
conv_value.set_value("disable");
225229
else {
@@ -2038,12 +2042,13 @@ argparse::ArgumentParser create_arg_parser(std::string prog_name, t_options& arg
20382042

20392043
route_timing_grp.add_argument<e_routing_budgets_algorithm, RouteBudgetsAlgorithm>(args.routing_budgets_algorithm, "--routing_budgets_algorithm")
20402044
.help(
2041-
"Controls how the routing budgets are created.\n"
2042-
" * slack: Sets the budgets depending on the amount slack between connections and the current delay values. [EXPERIMENTAL]\n"
2043-
" * criticality: Sets the minimum budgets to 0 and the maximum budgets as a function of delay and criticality (net delay/ pin criticality) [EXPERIMENTAL]\n"
2045+
"Controls how the routing budgets are created and applied.\n"
2046+
" * yoyo: Allocates budgets using minimax algorithm, and enables hold slack resolution in the router using the RCV algorithm. [EXPERIMENTAL]\n"
2047+
" * minimax: Sets the budgets depending on the amount slack between connections and the current delay values. [EXPERIMENTAL]\n"
2048+
" * scale_delay: Sets the minimum budgets to 0 and the maximum budgets as a function of delay and criticality (net delay/ pin criticality) [EXPERIMENTAL]\n"
20442049
" * disable: Removes the routing budgets, use the default VPR and ignore hold time constraints\n")
20452050
.default_value("disable")
2046-
.choices({"minimax", "scale_delay", "disable"})
2051+
.choices({"minimax", "scale_delay", "yoyo", "disable"})
20472052
.show_in(argparse::ShowIn::HELP_ONLY);
20482053

20492054
route_timing_grp.add_argument<bool, ParseOnOff>(args.save_routing_per_iteration, "--save_routing_per_iteration")

vpr/src/base/vpr_types.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1123,10 +1123,13 @@ enum e_routing_failure_predictor {
11231123
SAFE,
11241124
AGGRESSIVE
11251125
};
1126+
1127+
// How to allocate budgets, and if RCV should be enabled
11261128
enum e_routing_budgets_algorithm {
1127-
MINIMAX,
1129+
MINIMAX, // Use MINIMAX-PERT algorithm to allocate budgets
1130+
YOYO, // Use MINIMAX as above, and enable RCV algorithm to resolve negative hold slack
11281131
SCALE_DELAY,
1129-
DISABLE
1132+
DISABLE // Do not allocate budgets and run default router
11301133
};
11311134

11321135
enum class e_timing_report_detail {

vpr/src/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ int main(int argc, const char** argv) {
7272
/* free data structures */
7373
vpr_free_all(Arch, vpr_setup);
7474

75-
VTR_LOG("VPR suceeded\n");
75+
VTR_LOG("VPR succeeded\n");
7676

7777
} catch (const tatum::Error& tatum_error) {
7878
VTR_LOG_ERROR("%s\n", format_tatum_error(tatum_error).c_str());

0 commit comments

Comments
 (0)