aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2018-07-21 13:38:44 +0200
committerClifford Wolf <clifford@clifford.at>2018-07-21 13:38:44 +0200
commitc5562429760b444133fcb2391236275b0c353670 (patch)
tree793e27d83495817924130220a889ffd23d91e7a3
parent09a68affa388ffafdf361ccd3de621173f2b8b48 (diff)
downloadnextpnr-c5562429760b444133fcb2391236275b0c353670.tar.gz
nextpnr-c5562429760b444133fcb2391236275b0c353670.tar.bz2
nextpnr-c5562429760b444133fcb2391236275b0c353670.zip
Add getWireDelay API
Signed-off-by: Clifford Wolf <clifford@clifford.at>
-rw-r--r--common/router1.cc6
-rw-r--r--ecp5/arch.h6
-rw-r--r--generic/arch.h1
-rw-r--r--ice40/arch.h6
4 files changed, 17 insertions, 2 deletions
diff --git a/common/router1.cc b/common/router1.cc
index 94c7070e..de5caa5a 100644
--- a/common/router1.cc
+++ b/common/router1.cc
@@ -148,6 +148,8 @@ struct Router
bool foundRipupNet = false;
thisVisitCnt++;
+ next_delay += ctx->getWireDelay(next_wire).avgDelay();
+
if (!ctx->checkWireAvail(next_wire)) {
if (!ripup)
continue;
@@ -226,7 +228,7 @@ struct Router
: ctx(ctx), scores(scores), ripup(ripup), ripup_penalty(ripup_penalty)
{
std::unordered_map<WireId, delay_t> src_wires;
- src_wires[src_wire] = 0;
+ src_wires[src_wire] = ctx->getWireDelay(src_wire).avgDelay();
route(src_wires, dst_wire);
routedOkay = visited.count(dst_wire);
@@ -284,7 +286,7 @@ struct Router
log(" Source wire: %s\n", ctx->getWireName(src_wire).c_str(ctx));
std::unordered_map<WireId, delay_t> src_wires;
- src_wires[src_wire] = 0;
+ src_wires[src_wire] = ctx->getWireDelay(src_wire).avgDelay();
ripup_net(ctx, net_name);
ctx->bindWire(src_wire, net_name, STRENGTH_WEAK);
diff --git a/ecp5/arch.h b/ecp5/arch.h
index 944aedea..bf36ef2f 100644
--- a/ecp5/arch.h
+++ b/ecp5/arch.h
@@ -578,6 +578,12 @@ struct Arch : BaseCtx
return wire_to_net.at(wire);
}
+ DelayInfo getWireDelay(WireId wire) const
+ {
+ DelayInfo delay;
+ return delay;
+ }
+
WireRange getWires() const
{
WireRange range;
diff --git a/generic/arch.h b/generic/arch.h
index ea4bb565..e1516569 100644
--- a/generic/arch.h
+++ b/generic/arch.h
@@ -157,6 +157,7 @@ struct Arch : BaseCtx
bool checkWireAvail(WireId wire) const;
IdString getBoundWireNet(WireId wire) const;
IdString getConflictingWireNet(WireId wire) const;
+ DelayInfo getWireDelay(WireId wire) const { return DelayInfo(); }
const std::vector<WireId> &getWires() const;
PipId getPipByName(IdString name) const;
diff --git a/ice40/arch.h b/ice40/arch.h
index beba2ccf..21169298 100644
--- a/ice40/arch.h
+++ b/ice40/arch.h
@@ -548,6 +548,12 @@ struct Arch : BaseCtx
return wire_to_net[wire.index];
}
+ DelayInfo getWireDelay(WireId wire) const
+ {
+ DelayInfo delay;
+ return delay;
+ }
+
WireRange getWires() const
{
WireRange range;