aboutsummaryrefslogtreecommitdiffstats
path: root/common/timing.cc
diff options
context:
space:
mode:
authorEddie Hung <eddieh@ece.ubc.ca>2018-08-06 17:42:44 -0700
committerEddie Hung <eddieh@ece.ubc.ca>2018-08-06 17:42:44 -0700
commit676500b83fade3c2bc422a20f503ee1987cdb00f (patch)
tree52e73f88c73d0c4b6d60931ae64ca2d8b69b34ab /common/timing.cc
parentf44a5fb904e6e52e8383e8f13d9b3f4ab9d7ce48 (diff)
downloadnextpnr-676500b83fade3c2bc422a20f503ee1987cdb00f.tar.gz
nextpnr-676500b83fade3c2bc422a20f503ee1987cdb00f.tar.bz2
nextpnr-676500b83fade3c2bc422a20f503ee1987cdb00f.zip
Do less work if update flag is false
Diffstat (limited to 'common/timing.cc')
-rw-r--r--common/timing.cc12
1 files changed, 6 insertions, 6 deletions
diff --git a/common/timing.cc b/common/timing.cc
index e524cd19..bb3f680d 100644
--- a/common/timing.cc
+++ b/common/timing.cc
@@ -215,10 +215,11 @@ struct Timing
if (ctx->getPortClock(usr.cell, usr.port) != IdString()) {
const auto net_arrival = nd.max_arrival;
auto path_budget = clk_period - (net_arrival + net_delay);
- auto budget_share = budget_override ? 0 : path_budget / net_length_plus_one;
- if (update)
+ if (update) {
+ auto budget_share = budget_override ? 0 : path_budget / net_length_plus_one;
usr.budget = std::min(usr.budget, net_delay + budget_share);
- net_min_remaining_budget = std::min(net_min_remaining_budget, path_budget - budget_share);
+ net_min_remaining_budget = std::min(net_min_remaining_budget, path_budget - budget_share);
+ }
if (path_budget < min_slack) {
min_slack = path_budget;
@@ -232,7 +233,7 @@ struct Timing
int slack_ps = ctx->getDelayNS(path_budget) * 1000;
(*slack_histogram)[slack_ps]++;
}
- } else {
+ } else if (update) {
// Iterate over all output ports on the same cell as the sink
for (const auto &port : usr.cell->ports) {
if (port.second.type == PORT_OUT && port.second.net) {
@@ -241,8 +242,7 @@ struct Timing
if (is_path) {
auto path_budget = net_data.at(port.second.net).min_remaining_budget;
auto budget_share = budget_override ? 0 : path_budget / net_length_plus_one;
- if (update)
- usr.budget = std::min(usr.budget, net_delay + budget_share);
+ usr.budget = std::min(usr.budget, net_delay + budget_share);
net_min_remaining_budget =
std::min(net_min_remaining_budget, path_budget - budget_share);
}