Repository navigation
par: account for cut delay in timing-aware refinement - #12076
Chaitanya-970 wants to merge 3 commits into
Conversation
Include each path boundary's estimated delay in candidate path costs and move gains, even when guardbanding is disabled. Refresh gains along affected timing paths and count repeated coarse-path incidences only once. Add evaluator, gain, refinement and command regressions, update the default GCD results, and document the delay model and optional guardband. Fixes The-OpenROAD-Project#11982 Signed-off-by: Chaitanya-970 <chaitanyabh97@gmail.com>
There was a problem hiding this comment.
Code Review
This pull request enhances the timing-aware partitioning algorithm in the par module by integrating estimated cut delays directly into path costs and timing-cut statistics during refinement. It updates GoldenEvaluator and Refiner to dynamically compute path timing scores based on the number of cuts and the -extra_delay parameter, and adjusts neighbor-finding logic to propagate gains along timing paths. A new test suite (TestCutDelay) and integration tests are added to verify these changes. The review feedback recommends optimizing the hot path in GoldenEvaluator::GetPathTimingScore by bypassing std::pow when the timing exponent is 1.0f and using float literals to avoid implicit double promotion.
Signed-off-by: Chaitanya-970 <chaitanyabh97@gmail.com>
|
Why change the default behavior? |
ahh yes, applying 1 ns to the new cost changed the partitioning too much. i’ll apply the per-cut penalty only when -extra_delay is explicitly provided. |
Track whether extra_delay was supplied through Tcl and the Python helper. Preserve the existing delay for guardbanding and timing-cut statistics while leaving default refinement unchanged. Restore the original GCD golden files and cover omitted, explicit default, and zero delays in Tcl, Python, and evaluator tests. Signed-off-by: Chaitanya-970 <chaitanyabh97@gmail.com>
Summary
-extra_delayhad no effect on partition optimization unless guardbanding was enabled. Account for the delay of each partition boundary when calculating path costs and refinement gains.The per-cut penalty applies only when
-extra_delayis explicitly provided. Runs that omit it keep their existing behavior.Type of Change
Impact
An explicit cut delay can favor fewer critical-path cuts at the cost of more cut nets. The default 1 ns delay remains in use for timing-cut statistics and the optional slack guardband.
Update gains along affected timing paths without modifying shared timing data, and document how cut delay and guardbanding interact.
Verification
Related Issues
Fixes #11982