From 7142db28a8b828da557729a706c20c8f330ba129 Mon Sep 17 00:00:00 2001 From: David Shah Date: Mon, 25 Feb 2019 11:56:10 +0000 Subject: HeAP: Make HeAP placer optional A CMake option 'BUILD_HEAP' (default on) configures building of the HeAP placer and the associated Eigen3 dependency. Default for the iCE40 is SA placer, with --heap-placer to use HeAP Default for the ECP5 is HeAP placer, as SA placer can take 1hr+ for large ECP5 designs and HeAP tends to give better QoR. --sa-placer can be used to use SA instead, and auto-fallback to SA if HeAP not built. Signed-off-by: David Shah --- ecp5/main.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'ecp5/main.cc') diff --git a/ecp5/main.cc b/ecp5/main.cc index 15027a5a..de279e63 100644 --- a/ecp5/main.cc +++ b/ecp5/main.cc @@ -59,6 +59,8 @@ po::options_description ECP5CommandHandler::getArchOptions() specific.add_options()("um5g-45k", "set device type to LFE5UM5G-45F"); specific.add_options()("um5g-85k", "set device type to LFE5UM5G-85F"); + specific.add_options()("sa-placer", "use pure simulated annealing placer instead of HeAP analytic placer"); + specific.add_options()("package", po::value(), "select device package (defaults to CABGA381)"); specific.add_options()("speed", po::value(), "select device speedgrade (6, 7 or 8)"); @@ -149,8 +151,12 @@ std::unique_ptr ECP5CommandHandler::createContext() chipArgs.speed = ArchArgs::SPEED_6; } } + auto ctx = std::unique_ptr(new Context(chipArgs)); + + if (vm.count("sa-placer")) + ctx->settings[ctx->id("sa_placer")] = "1"; - return std::unique_ptr(new Context(chipArgs)); + return ctx; } void ECP5CommandHandler::customAfterLoad(Context *ctx) -- cgit v1.2.3 From 02ae21d8fc3bc1375848f40702cd4bb7f6700595 Mon Sep 17 00:00:00 2001 From: David Shah Date: Sun, 24 Mar 2019 11:10:20 +0000 Subject: Add --placer option and refactor placer selection Signed-off-by: David Shah --- ecp5/main.cc | 6 ------ 1 file changed, 6 deletions(-) (limited to 'ecp5/main.cc') diff --git a/ecp5/main.cc b/ecp5/main.cc index de279e63..bb18aa58 100644 --- a/ecp5/main.cc +++ b/ecp5/main.cc @@ -59,8 +59,6 @@ po::options_description ECP5CommandHandler::getArchOptions() specific.add_options()("um5g-45k", "set device type to LFE5UM5G-45F"); specific.add_options()("um5g-85k", "set device type to LFE5UM5G-85F"); - specific.add_options()("sa-placer", "use pure simulated annealing placer instead of HeAP analytic placer"); - specific.add_options()("package", po::value(), "select device package (defaults to CABGA381)"); specific.add_options()("speed", po::value(), "select device speedgrade (6, 7 or 8)"); @@ -152,10 +150,6 @@ std::unique_ptr ECP5CommandHandler::createContext() } } auto ctx = std::unique_ptr(new Context(chipArgs)); - - if (vm.count("sa-placer")) - ctx->settings[ctx->id("sa_placer")] = "1"; - return ctx; } -- cgit v1.2.3