aboutsummaryrefslogtreecommitdiffstats
path: root/common/command.cc
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2020-02-04 16:08:08 +0000
committerGitHub <noreply@github.com>2020-02-04 16:08:08 +0000
commit1ceffbe0bcba4f31a40c58c436df9370899fa4a2 (patch)
treef3cff1e5f8a067159a4e0fecd870a7acacba57a0 /common/command.cc
parentb4d029a55cd67bafcc9c364d609208a818227204 (diff)
parenta1c902dadc3165fe9abab7c96a75b5f4808836cd (diff)
downloadnextpnr-1ceffbe0bcba4f31a40c58c436df9370899fa4a2.tar.gz
nextpnr-1ceffbe0bcba4f31a40c58c436df9370899fa4a2.tar.bz2
nextpnr-1ceffbe0bcba4f31a40c58c436df9370899fa4a2.zip
Merge pull request #391 from YosysHQ/router2-upstream
Upstreaming router2
Diffstat (limited to 'common/command.cc')
-rw-r--r--common/command.cc17
1 files changed, 17 insertions, 0 deletions
diff --git a/common/command.cc b/common/command.cc
index 3866caca..f652ce67 100644
--- a/common/command.cc
+++ b/common/command.cc
@@ -132,6 +132,12 @@ po::options_description CommandHandler::getGeneralOptions()
"; default: " + Arch::defaultPlacer)
.c_str());
+ general.add_options()(
+ "router", po::value<std::string>(),
+ std::string("router algorithm to use; available: " + boost::algorithm::join(Arch::availableRouters, ", ") +
+ "; default: " + Arch::defaultPlacer)
+ .c_str());
+
general.add_options()("slack_redist_iter", po::value<int>(), "number of iterations between slack redistribution");
general.add_options()("cstrweight", po::value<float>(), "placer weighting for relative constraint satisfaction");
general.add_options()("starttemp", po::value<float>(), "placer SA start temperature");
@@ -214,6 +220,15 @@ void CommandHandler::setupContext(Context *ctx)
ctx->settings[ctx->id("placer")] = placer;
}
+ if (vm.count("router")) {
+ std::string router = vm["router"].as<std::string>();
+ if (std::find(Arch::availableRouters.begin(), Arch::availableRouters.end(), router) ==
+ Arch::availableRouters.end())
+ log_error("Router algorithm '%s' is not supported (available options: %s)\n", router.c_str(),
+ boost::algorithm::join(Arch::availableRouters, ", ").c_str());
+ ctx->settings[ctx->id("router")] = router;
+ }
+
if (vm.count("cstrweight")) {
ctx->settings[ctx->id("placer1/constraintWeight")] = std::to_string(vm["cstrweight"].as<float>());
}
@@ -244,6 +259,8 @@ void CommandHandler::setupContext(Context *ctx)
ctx->settings[ctx->id("auto_freq")] = false;
if (ctx->settings.find(ctx->id("placer")) == ctx->settings.end())
ctx->settings[ctx->id("placer")] = Arch::defaultPlacer;
+ if (ctx->settings.find(ctx->id("router")) == ctx->settings.end())
+ ctx->settings[ctx->id("router")] = Arch::defaultRouter;
ctx->settings[ctx->id("arch.name")] = std::string(ctx->archId().c_str(ctx));
ctx->settings[ctx->id("arch.type")] = std::string(ctx->archArgsToId(ctx->archArgs()).c_str(ctx));