mirror of
https://github.com/YosysHQ/nextpnr.git
synced 2026-08-22 14:17:29 +02:00
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 <[email protected]>
This commit is contained in:
+7
-1
@@ -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<std::string>(), "select device package (defaults to CABGA381)");
|
||||
specific.add_options()("speed", po::value<int>(), "select device speedgrade (6, 7 or 8)");
|
||||
|
||||
@@ -149,8 +151,12 @@ std::unique_ptr<Context> ECP5CommandHandler::createContext()
|
||||
chipArgs.speed = ArchArgs::SPEED_6;
|
||||
}
|
||||
}
|
||||
auto ctx = std::unique_ptr<Context>(new Context(chipArgs));
|
||||
|
||||
return std::unique_ptr<Context>(new Context(chipArgs));
|
||||
if (vm.count("sa-placer"))
|
||||
ctx->settings[ctx->id("sa_placer")] = "1";
|
||||
|
||||
return ctx;
|
||||
}
|
||||
|
||||
void ECP5CommandHandler::customAfterLoad(Context *ctx)
|
||||
|
||||
Reference in New Issue
Block a user