diff options
author | Eddie Hung <eddieh@ece.ubc.ca> | 2018-08-08 07:57:30 -0700 |
---|---|---|
committer | Eddie Hung <eddieh@ece.ubc.ca> | 2018-08-08 07:57:30 -0700 |
commit | acd2a92b0353242200ef89a2107c1ac5b3903094 (patch) | |
tree | 8510c97d81da9dd5198a4a7c73b58caaffec6b4f | |
parent | fca01f5447d8ca0ba2e0075cb214f3a19933e6c1 (diff) | |
parent | 8553573d2485ac2ec60d1c49949c254e02d35490 (diff) | |
download | nextpnr-acd2a92b0353242200ef89a2107c1ac5b3903094.tar.gz nextpnr-acd2a92b0353242200ef89a2107c1ac5b3903094.tar.bz2 nextpnr-acd2a92b0353242200ef89a2107c1ac5b3903094.zip |
Merge branch 'master' into improve_timing_spec
-rw-r--r-- | common/place_common.cc | 12 |
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; } |