router2: add alternate weight option (#1162)
This commit is contained in:
parent
7912a61ce3
commit
5936464967
@ -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);
|
||||||
|
@ -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();
|
||||||
|
Loading…
Reference in New Issue
Block a user