aboutsummaryrefslogtreecommitdiffstats
path: root/ice40/arch_place.cc
diff options
context:
space:
mode:
authorSylvain Munaut <tnt@246tNt.com>2018-11-19 01:57:47 +0100
committerSylvain Munaut <tnt@246tNt.com>2018-11-19 18:20:20 +0100
commitbc9f2da470b96c4e2f65324a0da1ffe099b5e586 (patch)
tree7c05b3544a4ace9d69af28922751a5cd63d0d387 /ice40/arch_place.cc
parent325d46e284fd7944b99929c1482e641a1db53931 (diff)
downloadnextpnr-bc9f2da470b96c4e2f65324a0da1ffe099b5e586.tar.gz
nextpnr-bc9f2da470b96c4e2f65324a0da1ffe099b5e586.tar.bz2
nextpnr-bc9f2da470b96c4e2f65324a0da1ffe099b5e586.zip
ice40: Introduce the concept of forPadIn SB_GB
Those are cells that are created mainly to handle the various sources a global network can be driven from other than a user net. When the flag is set, this means the global network usually driven by this BEL is in fact driven by something else and so that SB_GB BEL and matching global network can't be used. This is also what gets used to set the extra bits during bitstream generation. Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Diffstat (limited to 'ice40/arch_place.cc')
-rw-r--r--ice40/arch_place.cc2
1 files changed, 2 insertions, 0 deletions
diff --git a/ice40/arch_place.cc b/ice40/arch_place.cc
index a09a5092..41f9b640 100644
--- a/ice40/arch_place.cc
+++ b/ice40/arch_place.cc
@@ -161,6 +161,8 @@ bool Arch::isValidBelForCell(CellInfo *cell, BelId bel) const
return getBelPackagePin(bel) != "";
} else if (cell->type == id_SB_GB) {
+ if (cell->gbInfo.forPadIn)
+ return true;
NPNR_ASSERT(cell->ports.at(id_GLOBAL_BUFFER_OUTPUT).net != nullptr);
const NetInfo *net = cell->ports.at(id_GLOBAL_BUFFER_OUTPUT).net;
IdString glb_net = getWireName(getBelPinWire(bel, id_GLOBAL_BUFFER_OUTPUT));