aboutsummaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorDavid Shah <davey1576@gmail.com>2018-06-17 10:55:19 +0200
committerDavid Shah <davey1576@gmail.com>2018-06-17 10:55:19 +0200
commite95f38e88ebcd07e0cf313cabbd5c2e56a6db85c (patch)
tree35f7936532dc5bfe9b9ab403c5adcbbfa440e8c8 /common
parent8ab0b06f5f21c5c077edd5b174d21cc26a5b9343 (diff)
downloadnextpnr-e95f38e88ebcd07e0cf313cabbd5c2e56a6db85c.tar.gz
nextpnr-e95f38e88ebcd07e0cf313cabbd5c2e56a6db85c.tar.bz2
nextpnr-e95f38e88ebcd07e0cf313cabbd5c2e56a6db85c.zip
place_sa: Run a validity check at the end of placement
Signed-off-by: David Shah <davey1576@gmail.com>
Diffstat (limited to 'common')
-rw-r--r--common/place_sa.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/common/place_sa.cc b/common/place_sa.cc
index 157d7c38..aecbb80d 100644
--- a/common/place_sa.cc
+++ b/common/place_sa.cc
@@ -391,6 +391,15 @@ void place_design_sa(Design *design)
}
}
}
+ for (auto bel : design->chip.getBels()) {
+ if (!isBelLocationValid(design, bel)) {
+ std::string cell_text = "no cell";
+ IdString cell = design->chip.getBelCell(bel, false);
+ if (cell != IdString())
+ cell_text = std::string("cell '") + cell.str() + "'";
+ log_error("post-placement validity check failed for Bel '%s' (%s)", design->chip.getBelName(bel).c_str(), cell_text.c_str());
+ }
+ }
}
NEXTPNR_NAMESPACE_END