diff options
author | gatecat <gatecat@ds0.me> | 2021-09-22 22:04:56 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-22 22:04:56 +0100 |
commit | b2e9ce46f1cf60eff5d6d0fe844fc056890dfe6a (patch) | |
tree | e42c18f4becb86a0dc88534ba8f7adb9733276a3 /nexus | |
parent | 41c07126ec0934918ab1bb44ad2dfe676024fadf (diff) | |
parent | fed682ee5f1c3dd974067b0c48a5d3557d728721 (diff) | |
download | nextpnr-b2e9ce46f1cf60eff5d6d0fe844fc056890dfe6a.tar.gz nextpnr-b2e9ce46f1cf60eff5d6d0fe844fc056890dfe6a.tar.bz2 nextpnr-b2e9ce46f1cf60eff5d6d0fe844fc056890dfe6a.zip |
Merge pull request #823 from YosysHQ/gatecat/nexus-r1-tweaks
nexus: Tweaks for router1 performance
Diffstat (limited to 'nexus')
-rw-r--r-- | nexus/arch.cc | 4 | ||||
-rw-r--r-- | nexus/arch.h | 2 |
2 files changed, 4 insertions, 2 deletions
diff --git a/nexus/arch.cc b/nexus/arch.cc index 3f3d8c83..90acc7b7 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 973d97bf..deb9b6db 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); } |