From cc9f99a80c9aa9b69bc2a54060b5fbcec799f145 Mon Sep 17 00:00:00 2001 From: gatecat Date: Sun, 19 Dec 2021 19:29:44 +0000 Subject: parallel_refine: New, parallelised placement refinement pass --- common/placer_heap.cc | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'common/placer_heap.cc') diff --git a/common/placer_heap.cc b/common/placer_heap.cc index 5b43dc72..5ffb7642 100644 --- a/common/placer_heap.cc +++ b/common/placer_heap.cc @@ -46,6 +46,7 @@ #include "fast_bels.h" #include "log.h" #include "nextpnr.h" +#include "parallel_refine.h" #include "place_common.h" #include "placer1.h" #include "scope_lock.h" @@ -346,8 +347,14 @@ class HeAPPlacer ctx->check(); lock.unlock_early(); - if (!placer1_refine(ctx, Placer1Cfg(ctx))) { - return false; + if (cfg.parallelRefine) { + if (!parallel_refine(ctx, ParallelRefineCfg(ctx))) { + return false; + } + } else { + if (!placer1_refine(ctx, Placer1Cfg(ctx))) { + return false; + } } return true; @@ -1786,6 +1793,8 @@ PlacerHeapCfg::PlacerHeapCfg(Context *ctx) beta = ctx->setting("placerHeap/beta"); criticalityExponent = ctx->setting("placerHeap/criticalityExponent"); timingWeight = ctx->setting("placerHeap/timingWeight"); + parallelRefine = ctx->setting("placerHeap/parallelRefine", false); + timing_driven = ctx->setting("timing_driven"); solverTolerance = 1e-5; placeAllAtOnce = false; -- cgit v1.2.3