diff options
author | Eddie Hung <eddieh@ece.ubc.ca> | 2018-07-31 16:23:52 -0700 |
---|---|---|
committer | Eddie Hung <eddieh@ece.ubc.ca> | 2018-07-31 16:23:52 -0700 |
commit | 8131921e998eda144c85984710ec421f67f18658 (patch) | |
tree | 9c7bf1ce176b9108bf8f1863f169998d9c8783ae /common | |
parent | 2d750537441b91a6e8bc5bf757279afc89265fb2 (diff) | |
parent | 51956eb9617300a892d78619234f0f9f36c2cfb4 (diff) | |
download | nextpnr-8131921e998eda144c85984710ec421f67f18658.tar.gz nextpnr-8131921e998eda144c85984710ec421f67f18658.tar.bz2 nextpnr-8131921e998eda144c85984710ec421f67f18658.zip |
Merge branch 'estdelay' into redist_slack
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; } |