aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ecp5/globals.cc2
-rw-r--r--ecp5/pack.cc4
2 files changed, 5 insertions, 1 deletions
diff --git a/ecp5/globals.cc b/ecp5/globals.cc
index 75535dfe..c6cc7e57 100644
--- a/ecp5/globals.cc
+++ b/ecp5/globals.cc
@@ -379,6 +379,8 @@ class Ecp5GlobalRouter
for (auto user : net->users) {
if (user.port == id_CLKFB) {
keep_users.push_back(user);
+ } else if (net->driver.cell->type == id_EXTREFB && user.cell->type == id_DCCA) {
+ keep_users.push_back(user);
} else {
glbnet->users.push_back(user);
user.cell->ports.at(user.port).net = glbnet.get();
diff --git a/ecp5/pack.cc b/ecp5/pack.cc
index fdf04d4e..82e2888a 100644
--- a/ecp5/pack.cc
+++ b/ecp5/pack.cc
@@ -1118,7 +1118,9 @@ class Ecp5Packer
if (refo == nullptr)
log_error("EXTREFB REFCLKO must not be unconnected\n");
for (auto user : refo->users) {
- if (user.cell->type != id_DCUA || (dcu != nullptr && dcu != user.cell))
+ if (user.cell->type != id_DCUA)
+ continue;
+ if (dcu != nullptr && dcu != user.cell)
log_error("EXTREFB REFCLKO must only drive a single DCUA\n");
dcu = user.cell;
}