aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2019-07-10 09:34:22 +0100
committerDavid Shah <dave@ds0.me>2019-07-10 09:34:22 +0100
commitd297a96dc1a510c4f81180f3b5a756f46d9c59dc (patch)
tree4a3c915deaf7d33484bb693ac28bd4e55e6c44e4
parent19cb4ca554102a70edd6b6bb6c836e1474a73d4f (diff)
downloadnextpnr-d297a96dc1a510c4f81180f3b5a756f46d9c59dc.tar.gz
nextpnr-d297a96dc1a510c4f81180f3b5a756f46d9c59dc.tar.bz2
nextpnr-d297a96dc1a510c4f81180f3b5a756f46d9c59dc.zip
ecp5: Fix missing LUT inputs, fixes #301
Signed-off-by: David Shah <dave@ds0.me>
-rw-r--r--ecp5/pack.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/ecp5/pack.cc b/ecp5/pack.cc
index 9e2bc326..fde787f9 100644
--- a/ecp5/pack.cc
+++ b/ecp5/pack.cc
@@ -204,6 +204,8 @@ class Ecp5Packer
}
}
for (const char *inp : {"A", "B", "C", "D"}) {
+ if (!ci->ports.count(ctx->id(inp)))
+ continue;
NetInfo *innet = ci->ports.at(ctx->id(inp)).net;
if (innet != nullptr && innet->driver.cell != nullptr) {
CellInfo *drv = innet->driver.cell;
@@ -258,6 +260,8 @@ class Ecp5Packer
// Pack LUTs sharing an input with a simple fanout-based heuristic
for (const char *inp : {"A", "B", "C", "D"}) {
+ if (!ci->ports.count(ctx->id(inp)))
+ continue;
NetInfo *innet = ci->ports.at(ctx->id(inp)).net;
if (innet != nullptr && innet->users.size() < 5 && innet->users.size() > 1)
inpnets.push_back(innet);