Skip to content
DenseChip
Learn
PracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutContactPrivacyTerms
Skip to lesson

Course contents

  • How to Use This Course
  • Reading Path
  • STA Glossary
  • STA Metrics Reference
  • STA Mastery Cheatsheet
  • Timing Paths and Checks16
  • Constraints & SDC Fundamentals20
  • Delay Graph & Path Analysis16
  • Beyond Setup and Hold16
  • Multi-Corner Multi-Mode Signoff16
  • OCV, AOCV, POCV and Variation16
  • Crosstalk and Noise16
    • Delta Delay Mechanism
    • Noise and Glitch Analysis
    • SI ECO Fix Order
      • Fix Order
      • Spacing and Shielding
      • Victim and Aggressor Changes
      • Verifying SI Fixes
    • SI Signoff Reports
  • ECO and Closure16
  • STA Debug Playbook16
  • STA Interview Prep26
  • Capstone Timing Signoff Lab4
Loading lesson

‹SI ECO Fix Order
  1. Topics
  2. Static Timing Analysis
  3. Crosstalk and Noise
  4. SI ECO Fix Order
  5. Verifying SI Fixes

Part 7 · Crosstalk and Noise · All levels

Verifying SI Fixes

After a fix, rerun SI and compare per net and per endpoint: the target must improve, and nothing else may cross zero in the wrong direction.

On this page

    Why it matters

    SI fixes change arrival times, so windows shift and other victims can start overlapping. A fix verified only on its own net can leave the design worse. A before-and-after table over all endpoints catches regressions.

    Worked example

    example.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    before = {"e1": -0.020, "e2": 0.015, "e3": 0.040, "e4": 0.008, "e5": 0.120}     # setup slack, ns
    after  = {"e1":  0.004, "e2": 0.010, "e3": 0.045, "e4": -0.006, "e5": 0.118}
    fixed       = sorted(e for e in before if before[e] < 0 <= after[e])
    broken      = sorted(e for e in before if before[e] >= 0 > after[e])
    worse       = sorted(e for e in before if after[e] < before[e] - 1e-9)
    assert fixed == ["e1"] and broken == ["e4"]
    assert worse == ["e2", "e4", "e5"]
    wns_before, wns_after = min(before.values()), min(after.values())
    assert wns_before == -0.020 and wns_after == -0.006
    net_ok = len(broken) == 0
    assert net_ok is False
    print("PASS: fixed", fixed, "; newly broken", broken, "; slack worse on", worse, "; WNS", wns_before, "->", wns_after)

    Endpoint

    Before (ns)

    After (ns)

    Verdict

    e1

    -0.020

    +0.004

    Fixed

    e2

    +0.015

    +0.010

    Slightly worse, still positive

    e3

    +0.040

    +0.045

    Slightly better

    e4

    +0.008

    -0.006

    Newly broken

    e5

    +0.120

    +0.118

    Slightly worse (2 ps), within noise

    The fix cleared e1, and the WNS improved from -0.020 to -0.006 ns, which looks like progress. But e4 went from +0.008 to -0.006 ns: the fix changed arrival times and e4 now overlaps with a different aggressor, or lost a speedup it relied on. The WNS is the same number as e4's slack, so the improvement hides the fact that a fresh violation has appeared. The summary row alone would have said 'better'; the endpoint table says 'one fixed, one broken'. e5 slipped by 2 ps, which is within analysis noise rather than a regression.

    What the review looks for

    • Verification compares slack for all endpoints in all scenarios, not just the targeted ones.

    • Newly broken endpoints are flagged and fixed before the ECO is accepted.

    • Small slack changes (a few picoseconds) are expected: noise in the analysis is not a regression.

    Common pitfall

    Accepting an ECO because WNS improved. Check that the endpoints that now define WNS are not new ones.

    Interview

    Mention the before-and-after table with fixed, broken and worse columns.

    Check yourself Why would e4 get worse after a fix on a different net?

    The fix moved arrival times, so a window that previously did not overlap e4's victim now does, or a speedup that helped e4 disappeared.

    Related topics

    • Victim and Aggressor Changes

    Previous

    117 / 183

    Next: SI Signoff Reports

    Up next

    Up nextSI Signoff Reports

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Fix Order
    • Spacing and Shielding