diff options
author | David Shah <dave@ds0.me> | 2018-10-11 11:50:56 +0100 |
---|---|---|
committer | David Shah <dave@ds0.me> | 2018-10-11 11:50:56 +0100 |
commit | 228cbf77d0e6573883c03331b5ce6dfecee65c93 (patch) | |
tree | e0db6648e7b907614c394394ca5c342620eaac26 | |
parent | 848ce6d41c270fd44c548fdc367ab191710100c0 (diff) | |
download | nextpnr-228cbf77d0e6573883c03331b5ce6dfecee65c93.tar.gz nextpnr-228cbf77d0e6573883c03331b5ce6dfecee65c93.tar.bz2 nextpnr-228cbf77d0e6573883c03331b5ce6dfecee65c93.zip |
placer: Fix conflicts during constraint legalisation
Signed-off-by: David Shah <dave@ds0.me>
-rw-r--r-- | common/place_common.cc | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/common/place_common.cc b/common/place_common.cc index 120e5e00..da8ab37d 100644 --- a/common/place_common.cc +++ b/common/place_common.cc @@ -237,6 +237,12 @@ class ConstraintLegaliseWorker return false; } } + // Don't place at tiles where any strongly bound Bels exist, as we might need to rip them up later + for (auto tilebel : ctx->getBelsByTile(loc.x, loc.y)) { + CellInfo *tcell = ctx->getBoundBelCell(tilebel); + if (tcell && tcell->belStrength >= STRENGTH_STRONG) + return false; + } usedLocations.insert(loc); for (auto child : cell->constr_children) { IncreasingDiameterSearch xSearch, ySearch, zSearch; |