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 --- common/placer_heap.cc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'common') diff --git a/common/placer_heap.cc b/common/placer_heap.cc index b6913473..255a3f54 100644 --- a/common/placer_heap.cc +++ b/common/placer_heap.cc @@ -31,6 +31,8 @@ * - To make the placer timing-driven, the bound2bound weights are multiplied by (1 + 10 * crit^2) */ +#ifdef WITH_HEAP + #include #include #include @@ -1509,5 +1511,19 @@ class HeAPPlacer int HeAPPlacer::CutSpreader::seq = 0; bool placer_heap(Context *ctx) { return HeAPPlacer(ctx).place(); } +NEXTPNR_NAMESPACE_END + +#else + +#include "log.h" +#include "nextpnr.h" +NEXTPNR_NAMESPACE_BEGIN +bool placer_heap(Context *ctx) +{ + log_error("nextpnr was built without the HeAP placer\n"); + return false; +} NEXTPNR_NAMESPACE_END + +#endif -- cgit v1.2.3