rsz: skip ensureWireParasitic in repair_design hot path#10507
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces an optional load_cap_hint parameter to resizeToTargetSlew and makeRepeater to optimize performance by skipping incremental FastRoute calls during global routing. A review comment suggests addressing implicit type conversions and truncation issues when calculating buffer_load_cap in RepairDesign.cc by using explicit casting and direct double arithmetic.
There was a problem hiding this comment.
Welcome to OpenROAD! Thanks for opening your first PR.
Before we review:
- Contribution Guide: https://openroad.readthedocs.io/en/latest/contrib/contributing.html
- Build Instructions: https://openroad.readthedocs.io/en/latest/contrib/BuildWithCMake.html
Please ensure:
- CI passes
- Code is properly formatted
- Tests are included where applicable
A maintainer will review shortly!
|
@codex review |
|
To use Codex here, create a Codex account and connect to github. |
|
clang-tidy review says "All clean, LGTM! 👍" |
217bf3b to
dbdd58f
Compare
|
@codex review |
maliberty
left a comment
There was a problem hiding this comment.
The code looks fine. Does this need a metrics PR?
|
Codex Review: Didn't find any major issues. Already looking forward to the next diff. ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Pass a local load_cap computed from BufferedNet wire RC to resizeToTargetSlew as a hint. When supplied, the hint skips the expensive ensureWireParasitic + STA loadCap query that triggers an incremental FastRoute setup per buffer in the repair_design driver loop. For repairNetWire, the hint reflects the wire that the buffer actually drives (buf_dist x wire_cap + ref_cap), not the full Steiner edge. repairNetJunc passes cap_left / cap_right since the buffer is placed at the junction location. Profiling on a large customer design (497k inst) showed ensureWireParasitic accounting for 96% of repair_design wall time (5,860 calls x ~390ms FastRoute setup each). See private issue The-OpenROAD-Project-private/OpenROAD-flow-scripts#1676. Signed-off-by: Minju Kim <mkim@precisioninno.com>
dbdd58f to
cf5a8f3
Compare
Summary
Type
Impact
Profiled on a large customer design (497k inst) where `ensureWireParasitic` accounted for 96% of `repair_design` wall time (5,860 calls × ~390ms FastRoute setup each).
Measured on the same design (same cts.odb, same OR commit, 5_1_grt step only re-run):
Verification
Related Issues
See private issue The-OpenROAD-Project-private/OpenROAD-flow-scripts#1676.
(Note: supersedes #3433 which had its head branch renamed.)