diff options
author | Eddie Hung <eddieh@ece.ubc.ca> | 2018-07-31 16:23:35 -0700 |
---|---|---|
committer | Eddie Hung <eddieh@ece.ubc.ca> | 2018-07-31 16:23:35 -0700 |
commit | 51956eb9617300a892d78619234f0f9f36c2cfb4 (patch) | |
tree | dbba947e94625bc76b697488f10a9fd1b1828a20 /common | |
parent | a82f6f410595de26e82eaf4818e41036f0bc2f9c (diff) | |
download | nextpnr-51956eb9617300a892d78619234f0f9f36c2cfb4.tar.gz nextpnr-51956eb9617300a892d78619234f0f9f36c2cfb4.tar.bz2 nextpnr-51956eb9617300a892d78619234f0f9f36c2cfb4.zip |
Fix tns computation
Diffstat (limited to 'common')
-rw-r--r-- | common/place_common.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/common/place_common.cc b/common/place_common.cc index 3c19a733..31f15721 100644 --- a/common/place_common.cc +++ b/common/place_common.cc @@ -39,6 +39,7 @@ wirelen_t get_net_metric(const Context *ctx, const NetInfo *net, MetricType type driver_loc = ctx->getBelLocation(driver_cell->bel); if (driver_gb) return 0; + delay_t negative_slack = 0; delay_t worst_slack = std::numeric_limits<delay_t>::max(); int xmin = driver_loc.x, xmax = driver_loc.x, ymin = driver_loc.y, ymax = driver_loc.y; for (auto load : net->users) { @@ -51,7 +52,7 @@ wirelen_t get_net_metric(const Context *ctx, const NetInfo *net, MetricType type delay_t net_delay = ctx->predictDelay(net, load); auto slack = load.budget - net_delay; if (slack < 0) - tns += slack; + negative_slack += slack; worst_slack = std::min(slack, worst_slack); } @@ -70,7 +71,7 @@ wirelen_t get_net_metric(const Context *ctx, const NetInfo *net, MetricType type wirelength = wirelen_t((ymax - ymin) + (xmax - xmin)); } - tns = ctx->getDelayNS(tns); + tns += ctx->getDelayNS(negative_slack); return wirelength; } |