aboutsummaryrefslogtreecommitdiffstats
path: root/nexus/main.cc
diff options
context:
space:
mode:
Diffstat (limited to 'nexus/main.cc')
-rw-r--r--nexus/main.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/nexus/main.cc b/nexus/main.cc
index 6ffc9a20..667b6d80 100644
--- a/nexus/main.cc
+++ b/nexus/main.cc
@@ -51,6 +51,8 @@ po::options_description NexusCommandHandler::getArchOptions()
specific.add_options()("fasm", po::value<std::string>(), "fasm file to write");
specific.add_options()("pdc", po::value<std::string>(), "physical constraints file");
specific.add_options()("no-post-place-opt", "disable post-place repacking (debugging use only)");
+ specific.add_options()("no-pack-lutff", "disable packing (clustering) LUTs and FFs together");
+ specific.add_options()("carry-lutff-ratio", po::value<float>(), "ratio of FFs to be added to carry-chain LUT clusters");
return specific;
}
@@ -76,6 +78,15 @@ std::unique_ptr<Context> NexusCommandHandler::createContext(dict<std::string, Pr
auto ctx = std::unique_ptr<Context>(new Context(chipArgs));
if (vm.count("no-post-place-opt"))
ctx->settings[ctx->id("no_post_place_opt")] = Property::State::S1;
+ if (vm.count("no-pack-lutff"))
+ ctx->settings[ctx->id("no_pack_lutff")] = Property::State::S1;
+ if (vm.count("carry-lutff-ratio")) {
+ float ratio = vm["carry-lutff-ratio"].as<float>();
+ if (ratio < 0.0f || ratio > 1.0f) {
+ log_error("Carry LUT+FF packing ration must be between 0.0 and 1.0");
+ }
+ ctx->settings[ctx->id("carry_lutff_ratio")] = ratio;
+ }
return ctx;
}