aboutsummaryrefslogtreecommitdiffstats
path: root/ecp5/pack.cc
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2020-05-14 13:19:57 +0100
committerDavid Shah <dave@ds0.me>2020-05-14 13:26:56 +0100
commit163dee1e1ad90091cbb2742190a07aa87fa83d7f (patch)
tree6c091b92dff610d53bed4a4fa371c7d0d8288645 /ecp5/pack.cc
parent3c60ea383d988937c45559fcc2f387b3c187287f (diff)
downloadnextpnr-163dee1e1ad90091cbb2742190a07aa87fa83d7f.tar.gz
nextpnr-163dee1e1ad90091cbb2742190a07aa87fa83d7f.tar.bz2
nextpnr-163dee1e1ad90091cbb2742190a07aa87fa83d7f.zip
ecp5: Disconnect dedicated DCU inputs if connected to constants
Signed-off-by: David Shah <dave@ds0.me>
Diffstat (limited to 'ecp5/pack.cc')
-rw-r--r--ecp5/pack.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/ecp5/pack.cc b/ecp5/pack.cc
index 55b2c791..fb8a95e9 100644
--- a/ecp5/pack.cc
+++ b/ecp5/pack.cc
@@ -1617,6 +1617,18 @@ class Ecp5Packer
for (auto pin : ctx->getBelPins(exemplar_bel))
if (ctx->getBelPinType(exemplar_bel, pin) == PORT_IN)
autocreate_empty_port(ci, pin);
+ // Disconnect these ports if connected to constant to prevent routing failure
+ for (auto ndport : {id_D_TXBIT_CLKP_FROM_ND, id_D_TXBIT_CLKN_FROM_ND, id_D_SYNC_ND,
+ id_D_TXPLL_LOL_FROM_ND, id_CH0_HDINN, id_CH0_HDINP, id_CH1_HDINN, id_CH1_HDINP}) {
+ const NetInfo *net = get_net_or_empty(ci, ndport);
+ if (net == nullptr || net->driver.cell == nullptr)
+ continue;
+ IdString ct = net->driver.cell->type;
+ if (ct == ctx->id("GND") || ct == ctx->id("VCC")) {
+ disconnect_port(ctx, ci, ndport);
+ ci->ports.erase(ndport);
+ }
+ }
}
}
for (auto cell : sorted(ctx->cells)) {