aboutsummaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorEddie Hung <eddieh@ece.ubc.ca>2018-08-08 07:57:30 -0700
committerEddie Hung <eddieh@ece.ubc.ca>2018-08-08 07:57:30 -0700
commitacd2a92b0353242200ef89a2107c1ac5b3903094 (patch)
tree8510c97d81da9dd5198a4a7c73b58caaffec6b4f /common
parentfca01f5447d8ca0ba2e0075cb214f3a19933e6c1 (diff)
parent8553573d2485ac2ec60d1c49949c254e02d35490 (diff)
downloadnextpnr-acd2a92b0353242200ef89a2107c1ac5b3903094.tar.gz
nextpnr-acd2a92b0353242200ef89a2107c1ac5b3903094.tar.bz2
nextpnr-acd2a92b0353242200ef89a2107c1ac5b3903094.zip
Merge branch 'master' into improve_timing_spec
Diffstat (limited to 'common')
-rw-r--r--common/place_common.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/common/place_common.cc b/common/place_common.cc
index 6e513aef..fe9cf03d 100644
--- a/common/place_common.cc
+++ b/common/place_common.cc
@@ -375,6 +375,18 @@ class ConstraintLegaliseWorker
ctx->bindBel(target, ctx->cells.at(cp.first).get(), STRENGTH_LOCKED);
rippedCells.erase(cp.first);
}
+ for (auto cp : solution) {
+ for (auto bel : ctx->getBelsByTile(cp.second.x, cp.second.y)) {
+ CellInfo *belCell = ctx->getBoundBelCell(bel);
+ if (belCell != nullptr && !solution.count(belCell->name)) {
+ if (!ctx->isValidBelForCell(belCell, bel)) {
+ NPNR_ASSERT(belCell->belStrength < STRENGTH_STRONG);
+ ctx->unbindBel(bel);
+ rippedCells.insert(belCell->name);
+ }
+ }
+ }
+ }
NPNR_ASSERT(constraints_satisfied(cell));
return true;
}