dbSta: Fix zero slew and net delay issue in dmp_ceff_two_pole and dmp_ceff_lambert_w delay calculators - #11229
Open
jhkim-pii wants to merge 6 commits into
Conversation
Add a minimal two-buffer Tcl regression registered in CMake and Bazel. Demonstrate that Lambert-W reports zero input slew and zero PiElmore net delays while the default calculator propagates both. Compare report_checks output for the two calculators and fail with exact timing object names. Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
Apply tclfmt 0.7.0 formatting to the multiline Elmore guard so the Tcl lint workflow leaves the source tree unchanged. Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
Contributor
There was a problem hiding this comment.
Code Review
This pull request adds a new integration test, dmp_ceff_lambert_w_pi_elmore, to verify that the Lambert-W delay calculator correctly propagates nonzero slew and delay for PiElmore parasitics. The test is integrated into both the CMake and Bazel build systems. Feedback on the changes suggests simplifying the ternary expressions in the Bazel configuration to direct boolean expressions to make the Starlark code more idiomatic and readable.
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
Rename the regression around its placement-load propagation contract instead of the Lambert-W implementation. Add TwoPole report_checks output and object-level assertions so the red test captures the shared PiElmore propagation defect in both TwoPole and Lambert-W. Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
Update OpenSTA to the TwoPole PiPoleResidue2 reduction fix and mirror the restored virtual hook for Lambert-W. Re-estimate placement parasitics per calculator and use a branched net so the regression verifies positive delay and receiver-specific slew. Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
Advance the OpenSTA submodule to include the direct regression that verifies dmp_ceff_two_pole eager reduction returns PiPoleResidue. Signed-off-by: Jaehyun Kim <jhkim@precisioninno.com>
dmp_ceff_two_pole and dmp_ceff_lambert_w delay calculators
dmp_ceff_two_pole and dmp_ceff_lambert_w delay calculatorsdmp_ceff_two_pole and dmp_ceff_lambert_w delay calculators
jhkim-pii
marked this pull request as ready for review
August 26, 2026 05:45
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
dmp_ceff_two_poleanddmp_ceff_lambert_wdelay calculators.Problem
dmp_ceff_two_poleanddmp_ceff_lambert_wwrongly calculate wire load slew and delay whiledmp_ceff_elmorecalculates it correctly.bazel test //src/dbSta/test:dmp_ceff_dcalc_load_propagation-tcl_test --test_output=all --nocache_test_resultsCause
estimate_parasitics -placementreduces RC according to delay calculator model.dmp_ceff_two_poleanddmp_ceff_lambert_wrequirePiPoleResidue2parasitic data whiledmp_ceff_elmoremodel requiresPiElmoreparasitic data.reduceParasitic(..., Pin*, ...)API ofdmp_ceff_two_poleanddmp_ceff_lambert_wgeneratesPiElmoreparasitic data instead ofPiPoleResidue2because thereduceParasitic()API overriding is missing inDmpCeffTwoPoleDelayCalcimplementation.PiElmoreparasitic data is wrongly fed intodmp_ceff_two_poleordmp_ceff_lambert_wdelay calculator, wire delay and slew calculation logic is skipped and the following initial values are returned.Solution
DmpCeffTwoPoleDelayCalc::reduceParasitic()in OpenSTA so the reduction callsreduceToPiPoleResidue2()instead of inheritingPiElmorereduction.bazel test //src/dbSta/test:dmp_ceff_dcalc_load_propagation-tcl_test --test_output=all --nocache_test_resultsRequired OpenSTA fix