aboutsummaryrefslogtreecommitdiffstats
path: root/ecp5
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2019-11-01 16:27:51 +0000
committerDavid Shah <dave@ds0.me>2019-11-01 16:27:51 +0000
commit21c09c8b8f5e0456cc4d7e8017c27d25dd676377 (patch)
tree68832993520f1200b11075b842fd560f6d8f5956 /ecp5
parent58b7cb920ff80f85a0e28df59d84977804f8d67d (diff)
downloadnextpnr-21c09c8b8f5e0456cc4d7e8017c27d25dd676377.tar.gz
nextpnr-21c09c8b8f5e0456cc4d7e8017c27d25dd676377.tar.bz2
nextpnr-21c09c8b8f5e0456cc4d7e8017c27d25dd676377.zip
ecp5: Copy timing constraints across ECLKBRIDGECS
Signed-off-by: David Shah <dave@ds0.me>
Diffstat (limited to 'ecp5')
-rw-r--r--ecp5/pack.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/ecp5/pack.cc b/ecp5/pack.cc
index 8ba3d651..166ed180 100644
--- a/ecp5/pack.cc
+++ b/ecp5/pack.cc
@@ -2613,7 +2613,7 @@ class Ecp5Packer
std::unordered_set<IdString> changed_cells;
for (auto net : changed_nets)
for (auto &user : ctx->nets.at(net)->users)
- if (user.port == id_CLKI || user.port == id_ECLKI)
+ if (user.port == id_CLKI || user.port == id_ECLKI || user.port == id_CLK0 || user.port == id_CLK1)
changed_cells.insert(user.cell->name);
changed_nets.clear();
for (auto cell : sorted(changed_cells)) {
@@ -2630,6 +2630,9 @@ class Ecp5Packer
copy_constraint(ci, id_CLKI, id_CDIVX, ratio);
} else if (ci->type == id_ECLKSYNCB || ci->type == id_TRELLIS_ECLKBUF) {
copy_constraint(ci, id_ECLKI, id_ECLKO, 1);
+ } else if (ci->type == id_ECLKBRIDGECS) {
+ copy_constraint(ci, id_CLK0, id_ECSOUT, 1);
+ copy_constraint(ci, id_CLK1, id_ECSOUT, 1);
} else if (ci->type == id_DCCA) {
copy_constraint(ci, id_CLKI, id_CLKO, 1);
} else if (ci->type == id_EHXPLLL) {