From 0eba7d9789b0e9fa10c33349928608f59dbf9488 Mon Sep 17 00:00:00 2001 From: David Shah Date: Fri, 9 Nov 2018 18:18:50 +0000 Subject: [PATCH] ecp5: EXTREFB fixes Signed-off-by: David Shah --- ecp5/globals.cc | 2 ++ ecp5/pack.cc | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) 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; }