dbSta: Adds iteration free delay model to STA - #10975
Open
QuantamHD wants to merge 3 commits into
Open
Conversation
This new delay model removes all iteration from DmpCeffTwoPole series of delay models. This is accomplished via two different methods. This commit replaces the computationally expensive Newton-Raphson iteration loop in the DMPCeff algorithm with a fully feed-forward, O(1) rational function (Padé approximant). The legacy iterative approach suffers from branch mispredictions and cache misses, bottlenecking physical synthesis inner loops. The new technique pre-characterizes the Pi-model shielding factor (k) offline and evaluates it at runtime using a 12-parameter polynomial optimized for FMA instructions. To ensure the surrogate model is universal (PDK-agnostic) and strictly respects physical boundaries at extreme asymptotes, the Pi-model physicals are mapped into a dimensionless 3D parameter space: * x = R_pi / R_d : The resistance ratio. Dictates the primary shielding effect. Squaring this term in the denominator guarantees complete shielding (k=0) as wire resistance approaches infinity. * y = C_2 / (C_1 + C_2) : The capacitance ratio. Represents the far-end fraction of the total load, strictly bounded between 0.0 and 1.0. * z = t_r / (R_d * C_tot) : The normalized slew ratio. Maps the driver's unshielded transition time against the intrinsic RC time constant of the network. The surrogate model evaluates the shielding factor as k = f(x,y,z), allowing effective capacitance to be resolved instantly via: C_eff = C_1 + k * C_2 The resulting C_eff is subsequently passed to a Boost Lambert W (W0) analytical solver to compute the exact timing threshold crossings without any runtime iteration. Signed-off-by: Ethan Mahintorabi <ethanmoon@google.com>
Contributor
There was a problem hiding this comment.
Code Review
This pull request introduces a new delay calculator, DmpCeffLambertWDelayCalc, which utilizes a Lambert W function solver and a bivariate Padé approximation for Ceff shielding calculations. It also adds a training data generator, a Python fitting script, and corresponding unit tests. The review feedback highlights two critical issues in DmpCeffLambertWDelayCalc.cc: first, the real parts of the poles returned by poleResidue must be negated to prevent exponential overflow and NaN values in the mathematical derivations; second, adding 1e-15 to a single-precision float capacitance value will underflow, causing a division-by-zero error when calculating rd.
maliberty
reviewed
Jul 24, 2026
Signed-off-by: Ethan Mahintorabi <ethanmoon@google.com>
Signed-off-by: Ethan Mahintorabi <ethanmoon@google.com>
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.
This new delay model removes all iteration from DmpCeffTwoPole series of delay models. This is accomplished via two different methods.
This commit replaces the computationally expensive Newton-Raphson iteration loop in the DMPCeff algorithm with a fully feed-forward, O(1) rational function (Padé approximant).
The new technique pre-characterizes the Pi-model shielding factor (k) offline and evaluates it at runtime using a 18-parameter polynomial optimized for FMA instructions.
To ensure the surrogate model is universal (PDK-agnostic) and strictly respects physical boundaries at extreme asymptotes, the Pi-model physicals are mapped into a dimensionless 3D parameter space:
The surrogate model evaluates the shielding factor as k = f(x,y,z), allowing effective capacitance to be resolved instantly via: C_eff = C_1 + k * C_2
The resulting C_eff is subsequently passed to a Boost Lambert W (W0) analytical solver to compute the exact timing threshold crossings without any runtime iteration.
Type of Change
Impact
DmpCeffTwoPoleDelayCalc::gateDelay(OpenSTA internal NR loop)DmpCeffLambertWDelayCalc::gateDelay(Iteration-free Padé surrogate)Verification
./etc/Build.sh).