aboutsummaryrefslogtreecommitdiffstats
path: root/ecp5
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2019-01-08 10:52:03 +0000
committerDavid Shah <dave@ds0.me>2019-02-25 11:49:25 +0000
commitaf3ff143be312b0f73289955bd513925f2bb7c4f (patch)
treedb3793ba4af2af51801ccd32f8bd9217ddb07fb1 /ecp5
parent998d055ea7f8bcc423d2aa2d75f5f27b6368666e (diff)
downloadnextpnr-af3ff143be312b0f73289955bd513925f2bb7c4f.tar.gz
nextpnr-af3ff143be312b0f73289955bd513925f2bb7c4f.tar.bz2
nextpnr-af3ff143be312b0f73289955bd513925f2bb7c4f.zip
ecp5: Improve delay model
Signed-off-by: David Shah <dave@ds0.me>
Diffstat (limited to 'ecp5')
-rw-r--r--ecp5/arch.cc7
1 files changed, 4 insertions, 3 deletions
diff --git a/ecp5/arch.cc b/ecp5/arch.cc
index 0d6b6a55..1abb8af0 100644
--- a/ecp5/arch.cc
+++ b/ecp5/arch.cc
@@ -448,16 +448,17 @@ delay_t Arch::estimateDelay(WireId src, WireId dst) const
auto src_loc = est_location(src), dst_loc = est_location(dst);
- return (240 - 20 * args.speed) * (abs(src_loc.first - dst_loc.first) + abs(src_loc.second - dst_loc.second));
+ return (110 - 10 * args.speed) + (200 - 20 * args.speed) * (abs(src_loc.first - dst_loc.first) + abs(src_loc.second - dst_loc.second));
}
delay_t Arch::predictDelay(const NetInfo *net_info, const PortRef &sink) const
{
const auto &driver = net_info->driver;
+ if (driver.port == id_FCO && sink.port == id_FCI)
+ return 0;
auto driver_loc = getBelLocation(driver.cell->bel);
auto sink_loc = getBelLocation(sink.cell->bel);
-
- return (240 - 20 * args.speed) * (abs(driver_loc.x - sink_loc.x) + abs(driver_loc.y - sink_loc.y));
+ return (110 - 10 * args.speed) + (200 - 20 * args.speed) * (abs(driver_loc.x - sink_loc.x) + abs(driver_loc.y - sink_loc.y));
}
bool Arch::getBudgetOverride(const NetInfo *net_info, const PortRef &sink, delay_t &budget) const { return false; }