aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgatecat <gatecat@ds0.me>2021-09-22 14:54:44 +0100
committergatecat <gatecat@ds0.me>2021-09-22 14:55:10 +0100
commitfed682ee5f1c3dd974067b0c48a5d3557d728721 (patch)
tree5e0318607bfaf12fc5ba59979fbc1280bf28fa4b
parent035452d938a6ba005ecc7ee9bd308879eaff6069 (diff)
downloadnextpnr-fed682ee5f1c3dd974067b0c48a5d3557d728721.tar.gz
nextpnr-fed682ee5f1c3dd974067b0c48a5d3557d728721.tar.bz2
nextpnr-fed682ee5f1c3dd974067b0c48a5d3557d728721.zip
nexus: Tweaks for router1 performance
Signed-off-by: gatecat <gatecat@ds0.me>
-rw-r--r--nexus/arch.cc4
-rw-r--r--nexus/arch.h2
2 files changed, 4 insertions, 2 deletions
diff --git a/nexus/arch.cc b/nexus/arch.cc
index f3430968..338d1bd8 100644
--- a/nexus/arch.cc
+++ b/nexus/arch.cc
@@ -587,13 +587,15 @@ TimingClockingInfo Arch::getPortClockingInfo(const CellInfo *cell, IdString port
// -----------------------------------------------------------------------
+delay_t Arch::getRipupDelayPenalty() const { return 250; }
+
delay_t Arch::estimateDelay(WireId src, WireId dst) const
{
int src_x = src.tile % chip_info->width, src_y = src.tile / chip_info->width;
int dst_x = dst.tile % chip_info->width, dst_y = dst.tile / chip_info->width;
int dist_x = std::abs(src_x - dst_x);
int dist_y = std::abs(src_y - dst_y);
- return 75 * dist_x + 75 * dist_y + 200;
+ return 75 * dist_x + 75 * dist_y + 250;
}
delay_t Arch::predictDelay(const NetInfo *net_info, const PortRef &sink) const
{
diff --git a/nexus/arch.h b/nexus/arch.h
index fcb864f6..e97c9bf0 100644
--- a/nexus/arch.h
+++ b/nexus/arch.h
@@ -1192,7 +1192,7 @@ struct Arch : BaseArch<ArchRanges>
delay_t estimateDelay(WireId src, WireId dst) const override;
delay_t predictDelay(const NetInfo *net_info, const PortRef &sink) const override;
delay_t getDelayEpsilon() const override { return 20; }
- delay_t getRipupDelayPenalty() const override { return 120; }
+ delay_t getRipupDelayPenalty() const override;
delay_t getWireRipupDelayPenalty(WireId wire) const;
float getDelayNS(delay_t v) const override { return v * 0.001; }
delay_t getDelayFromNS(float ns) const override { return delay_t(ns * 1000); }