diff options
author | Eddie Hung <eddieh@ece.ubc.ca> | 2018-08-06 17:42:44 -0700 |
---|---|---|
committer | Eddie Hung <eddieh@ece.ubc.ca> | 2018-08-06 17:42:44 -0700 |
commit | 676500b83fade3c2bc422a20f503ee1987cdb00f (patch) | |
tree | 52e73f88c73d0c4b6d60931ae64ca2d8b69b34ab /common | |
parent | f44a5fb904e6e52e8383e8f13d9b3f4ab9d7ce48 (diff) | |
download | nextpnr-676500b83fade3c2bc422a20f503ee1987cdb00f.tar.gz nextpnr-676500b83fade3c2bc422a20f503ee1987cdb00f.tar.bz2 nextpnr-676500b83fade3c2bc422a20f503ee1987cdb00f.zip |
Do less work if update flag is false
Diffstat (limited to 'common')
-rw-r--r-- | common/timing.cc | 12 |
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); } |