diff options
Diffstat (limited to 'ice40/arch_place.cc')
-rw-r--r-- | ice40/arch_place.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/ice40/arch_place.cc b/ice40/arch_place.cc index 59e1807d..b3404d6c 100644 --- a/ice40/arch_place.cc +++ b/ice40/arch_place.cc @@ -124,12 +124,16 @@ bool Arch::isValidBelForCell(CellInfo *cell, BelId bel) const } // Is there a PLL that shares this IO buffer? if (pll_bel.index != -1) { + auto pll_cell = getBoundBelCell(pll_bel); // Is a PLL placed in this PLL bel? - if (!checkBelAvail(pll_bel)) { + if (pll_cell != IdString()) { // Is the shared port driving a net? - auto pll_cell = getBoundBelCell(pll_bel); auto pi = cells.at(pll_cell)->ports[portPinToId(pll_bel_pin)]; if (pi.net != nullptr) { + // Are we perhaps a PAD INPUT Bel that can be placed here? + if (cells.at(pll_cell)->attrs[id("BEL_PAD_INPUT")] == getBelName(bel).str(this)) { + return true; + } return false; } } |