Merge pull request #823 from YosysHQ/gatecat/nexus-r1-tweaks

nexus: Tweaks for router1 performance
This commit is contained in:
gatecat 2021-09-22 22:04:56 +01:00 committed by GitHub
commit b2e9ce46f1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 2 deletions

View File

@ -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 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 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 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_x = std::abs(src_x - dst_x);
int dist_y = std::abs(src_y - dst_y); 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 delay_t Arch::predictDelay(const NetInfo *net_info, const PortRef &sink) const
{ {

View File

@ -1192,7 +1192,7 @@ struct Arch : BaseArch<ArchRanges>
delay_t estimateDelay(WireId src, WireId dst) const override; delay_t estimateDelay(WireId src, WireId dst) const override;
delay_t predictDelay(const NetInfo *net_info, const PortRef &sink) const override; delay_t predictDelay(const NetInfo *net_info, const PortRef &sink) const override;
delay_t getDelayEpsilon() const override { return 20; } 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; delay_t getWireRipupDelayPenalty(WireId wire) const;
float getDelayNS(delay_t v) const override { return v * 0.001; } float getDelayNS(delay_t v) const override { return v * 0.001; }
delay_t getDelayFromNS(float ns) const override { return delay_t(ns * 1000); } delay_t getDelayFromNS(float ns) const override { return delay_t(ns * 1000); }