router2: add alternate weight option (#1162)

This commit is contained in:
Lofty 2023-05-25 09:47:10 +01:00 committed by GitHub
parent 7912a61ce3
commit 5936464967
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 5 deletions

View File

@ -211,6 +211,8 @@ po::options_description CommandHandler::getGeneralOptions()
general.add_options()("router2-tmg-ripup", general.add_options()("router2-tmg-ripup",
"enable experimental timing-driven ripup in router (deprecated; use --tmg-ripup instead)"); "enable experimental timing-driven ripup in router (deprecated; use --tmg-ripup instead)");
general.add_options()("router2-alt-weights", "use alternate router2 weights");
general.add_options()("report", po::value<std::string>(), general.add_options()("report", po::value<std::string>(),
"write timing and utilization report in JSON format to file"); "write timing and utilization report in JSON format to file");
general.add_options()("detailed-timing-report", "Append detailed net timing data to the JSON report"); general.add_options()("detailed-timing-report", "Append detailed net timing data to the JSON report");
@ -352,6 +354,9 @@ void CommandHandler::setupContext(Context *ctx)
if (vm.count("tmg-ripup") || vm.count("router2-tmg-ripup")) if (vm.count("tmg-ripup") || vm.count("router2-tmg-ripup"))
ctx->settings[ctx->id("router/tmg_ripup")] = true; ctx->settings[ctx->id("router/tmg_ripup")] = true;
if (vm.count("router2-alt-weights"))
ctx->settings[ctx->id("router2/alt-weights")] = true;
// Setting default values // Setting default values
if (ctx->settings.find(ctx->id("target_freq")) == ctx->settings.end()) if (ctx->settings.find(ctx->id("target_freq")) == ctx->settings.end())
ctx->settings[ctx->id("target_freq")] = std::to_string(12e6); ctx->settings[ctx->id("target_freq")] = std::to_string(12e6);

View File

@ -1423,7 +1423,7 @@ struct Router2
int tmgfail = 0; int tmgfail = 0;
if (timing_driven) if (timing_driven)
tmg.run(false); tmg.run(false);
if (timing_driven_ripup && iter < 500) { if (timing_driven_ripup && iter < 1500) {
for (size_t i = 0; i < nets_by_udata.size(); i++) { for (size_t i = 0; i < nets_by_udata.size(); i++) {
NetInfo *ni = nets_by_udata.at(i); NetInfo *ni = nets_by_udata.at(i);
for (auto usr : ni->users.enumerate()) { for (auto usr : ni->users.enumerate()) {
@ -1492,10 +1492,17 @@ Router2Cfg::Router2Cfg(Context *ctx)
bb_margin_y = ctx->setting<int>("router2/bbMargin/y", 3); bb_margin_y = ctx->setting<int>("router2/bbMargin/y", 3);
ipin_cost_adder = ctx->setting<float>("router2/ipinCostAdder", 0.0f); ipin_cost_adder = ctx->setting<float>("router2/ipinCostAdder", 0.0f);
bias_cost_factor = ctx->setting<float>("router2/biasCostFactor", 0.25f); bias_cost_factor = ctx->setting<float>("router2/biasCostFactor", 0.25f);
init_curr_cong_weight = ctx->setting<float>("router2/initCurrCongWeight", 0.5f); if (ctx->settings.count(ctx->id("router2/alt-weights"))) {
hist_cong_weight = ctx->setting<float>("router2/histCongWeight", 1.0f); init_curr_cong_weight = ctx->setting<float>("router2/initCurrCongWeight", 5.0f);
curr_cong_mult = ctx->setting<float>("router2/currCongWeightMult", 2.0f); hist_cong_weight = ctx->setting<float>("router2/histCongWeight", 0.5f);
estimate_weight = ctx->setting<float>("router2/estimateWeight", 1.25f); curr_cong_mult = ctx->setting<float>("router2/currCongWeightMult", 0.0f);
estimate_weight = ctx->setting<float>("router2/estimateWeight", 1.0f);
} else {
init_curr_cong_weight = ctx->setting<float>("router2/initCurrCongWeight", 0.5f);
hist_cong_weight = ctx->setting<float>("router2/histCongWeight", 1.0f);
curr_cong_mult = ctx->setting<float>("router2/currCongWeightMult", 2.0f);
estimate_weight = ctx->setting<float>("router2/estimateWeight", 1.25f);
}
perf_profile = ctx->setting<bool>("router2/perfProfile", false); perf_profile = ctx->setting<bool>("router2/perfProfile", false);
if (ctx->settings.count(ctx->id("router2/heatmap"))) if (ctx->settings.count(ctx->id("router2/heatmap")))
heatmap = ctx->settings.at(ctx->id("router2/heatmap")).as_string(); heatmap = ctx->settings.at(ctx->id("router2/heatmap")).as_string();