aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2019-06-21 10:55:23 +0100
committerDavid Shah <dave@ds0.me>2019-06-21 10:55:23 +0100
commitdf8688c227706c88c908c94988b188d686d1c09b (patch)
tree11d5caf948d3dcb0d5f26b2509be1ddd53d7633e
parent7ae64b9477aa98f8f76c3fd23eb9f551758b0d6b (diff)
downloadnextpnr-df8688c227706c88c908c94988b188d686d1c09b.tar.gz
nextpnr-df8688c227706c88c908c94988b188d686d1c09b.tar.bz2
nextpnr-df8688c227706c88c908c94988b188d686d1c09b.zip
ecp5: Delay tweaking for lower speed grades
Signed-off-by: David Shah <dave@ds0.me>
-rw-r--r--ecp5/arch.cc6
-rw-r--r--ecp5/arch.h2
2 files changed, 5 insertions, 3 deletions
diff --git a/ecp5/arch.cc b/ecp5/arch.cc
index a27b0860..91db8d81 100644
--- a/ecp5/arch.cc
+++ b/ecp5/arch.cc
@@ -458,7 +458,7 @@ delay_t Arch::estimateDelay(WireId src, WireId dst) const
int dx = abs(src_loc.first - dst_loc.first), dy = abs(src_loc.second - dst_loc.second);
- return (130 - 25 * args.speed) *
+ return (120 - 22 * args.speed) *
(6 + std::max(dx - 5, 0) + std::max(dy - 5, 0) + 2 * (std::min(dx, 5) + std::min(dy, 5)));
}
@@ -487,7 +487,7 @@ delay_t Arch::predictDelay(const NetInfo *net_info, const PortRef &sink) const
int dx = abs(driver_loc.x - sink_loc.x), dy = abs(driver_loc.y - sink_loc.y);
- return (130 - 25 * args.speed) *
+ return (120 - 22 * args.speed) *
(6 + std::max(dx - 5, 0) + std::max(dy - 5, 0) + 2 * (std::min(dx, 5) + std::min(dy, 5)));
}
@@ -504,6 +504,8 @@ bool Arch::getBudgetOverride(const NetInfo *net_info, const PortRef &sink, delay
}
}
+delay_t Arch::getRipupDelayPenalty() const { return 400; }
+
// -----------------------------------------------------------------------
bool Arch::place()
diff --git a/ecp5/arch.h b/ecp5/arch.h
index 3de06a42..cee071e7 100644
--- a/ecp5/arch.h
+++ b/ecp5/arch.h
@@ -942,7 +942,7 @@ struct Arch : BaseCtx
delay_t estimateDelay(WireId src, WireId dst) const;
delay_t predictDelay(const NetInfo *net_info, const PortRef &sink) const;
delay_t getDelayEpsilon() const { return 20; }
- delay_t getRipupDelayPenalty() const { return 400; }
+ delay_t getRipupDelayPenalty() const;
float getDelayNS(delay_t v) const { return v * 0.001; }
DelayInfo getDelayFromNS(float ns) const
{