Optimisation tools need fast turnaround, so they run a reduced set of views and use faster parasitic estimates. Signoff runs the complete list with the most accurate extraction. Everything that differs can move slack, and endpoints near zero are the ones that flip.
Item | Implementation | Signoff |
|---|---|---|
Views | Reduced set chosen for speed | Full list of scenarios |
Parasitics | Estimates, or earlier extraction | Final extraction |
Delay calculation | Faster model | Most accurate model available |
Variation derates | Often simplified | Full policy |
Uncertainty and margins | May carry extra margin | Signoff values |
# Per-endpoint setup slack (ns): implementation estimate versus signoff.
impl = {"e1": 0.10, "e2": 0.05, "e3": 0.02, "e4": 0.15, "e5": -0.01, "e6": 0.07}
signoff = {"e1": 0.06, "e2": -0.03, "e3": -0.01, "e4": 0.12, "e5": -0.05, "e6": 0.03}
escapes = sorted(e for e in impl if impl[e] >= 0 and signoff[e] < 0)
false_alarms = sorted(e for e in impl if impl[e] < 0 and signoff[e] >= 0)
both_fail = sorted(e for e in impl if impl[e] < 0 and signoff[e] < 0)
assert escapes == ["e2", "e3"] and false_alarms == [] and both_fail == ["e5"]
shifts = {e: round(signoff[e] - impl[e], 2) for e in impl}
assert shifts == {"e1": -0.04, "e2": -0.08, "e3": -0.03, "e4": -0.03, "e5": -0.04, "e6": -0.04}
print("PASS: escapes", escapes, "; both fail", both_fail, "; worst shift", min(shifts.values()))Two endpoints (e2, e3) pass implementation and fail signoff: these are escapes. Every endpoint is 0.03 to 0.08 ns worse in signoff, so the implementation estimate is consistently optimistic. The consistent direction is useful: it means a margin can cover it (next lesson). A mix of better and worse shifts would suggest a different cause.
A before-signoff run of the full view list on the implementation result, not only on the final netlist.
Escapes counted and reported by cause, not only listed.
The reduced implementation view list reviewed when the matrix changes.
The implementation estimate is systematically optimistic, for instance because of parasitic estimates; a uniform margin can compensate, whereas mixed signs would point to a different cause.