aboutsummaryrefslogtreecommitdiffstats
path: root/ecp5/arch.cc
diff options
context:
space:
mode:
authorDavid Shah <davey1576@gmail.com>2018-09-29 18:29:23 +0100
committerDavid Shah <davey1576@gmail.com>2018-09-29 18:29:23 +0100
commit11cdc197bc48c9ce10dd9b718d44603adf2591b9 (patch)
treeeba1823ba164e94877baf77009385629c21fd483 /ecp5/arch.cc
parentf46f205782a8f2e977fefe8161ad7ff1a9ec6ad1 (diff)
downloadnextpnr-11cdc197bc48c9ce10dd9b718d44603adf2591b9.tar.gz
nextpnr-11cdc197bc48c9ce10dd9b718d44603adf2591b9.tar.bz2
nextpnr-11cdc197bc48c9ce10dd9b718d44603adf2591b9.zip
ecp5: Fix global buffer connectivity and timing
Signed-off-by: David Shah <davey1576@gmail.com>
Diffstat (limited to 'ecp5/arch.cc')
-rw-r--r--ecp5/arch.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/ecp5/arch.cc b/ecp5/arch.cc
index 1479e6ca..d42e77fa 100644
--- a/ecp5/arch.cc
+++ b/ecp5/arch.cc
@@ -28,6 +28,7 @@
#include "router1.h"
#include "util.h"
#include "globals.h"
+#include "timing.h"
NEXTPNR_NAMESPACE_BEGIN
@@ -393,6 +394,7 @@ bool Arch::place() { return placer1(getCtx(), Placer1Cfg(getCtx())); }
bool Arch::route() {
route_ecp5_globals(getCtx());
+ assign_budget(getCtx(), true);
return router1(getCtx(), Router1Cfg(getCtx()));
}
@@ -523,6 +525,12 @@ bool Arch::getCellDelay(const CellInfo *cell, IdString fromPort, IdString toPort
return true;
}
return false;
+ } else if (cell->type == id_DCCA) {
+ if (fromPort == id_CLKI && toPort == id_CLKO) {
+ delay.delay = 0;
+ return true;
+ }
+ return false;
} else {
return false;
}
@@ -569,6 +577,10 @@ TimingPortClass Arch::getPortTimingClass(const CellInfo *cell, IdString port, Id
return TMG_STARTPOINT;
return TMG_IGNORE;
} else if (cell->type == id_DCCA) {
+ if (port == id_CLKI)
+ return TMG_COMB_INPUT;
+ if (port == id_CLKO)
+ return TMG_COMB_OUTPUT;
return TMG_IGNORE;
} else {
NPNR_ASSERT_FALSE_STR("no timing data for cell type '" + cell->type.str(this) + "'");