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
  • ECO and Closure16
  • STA Debug Playbook16
    • Constraint Bug Patterns
    • View Mismatch Triage
    • Path Group War Room
      • Daily Triage
      • Owner Assignment
      • Escalation and Signoff Risk
      • Closing the Long Tail
    • Signoff Regression Hygiene
  • STA Interview Prep26
  • Capstone Timing Signoff Lab4
Loading lesson

‹Path Group War Room
  1. Topics
  2. Static Timing Analysis
  3. STA Debug Playbook
  4. Path Group War Room
  5. Closing the Long Tail

Part 9 · Debug Playbook · All levels

Closing the Long Tail

A small number of violations account for most of the TNS; the last violations are few in TNS terms and often need structural fixes.

On this page

    Why it matters

    Violation counts and TNS tell different stories. Early in closure, most of the TNS sits in a few large violations; late in closure, a long list of small ones remains, each needing individual attention. Seeing both numbers prevents the late-stage surprise that 'we are 90% done' means a lot of work is left.

    Worked example

    example.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    deficits = [0.2 * 0.9 ** i for i in range(50)]          # 50 violations, deficits in ns, decaying
    total = sum(deficits)
    assert round(total, 2) == 1.99
    cum, k90 = 0.0, None
    for i, d in enumerate(deficits, start=1):
        cum += d
        if cum / total >= 0.90:
            k90 = i
            break
    assert k90 == 22
    assert round(cum / total, 3) == 0.906
    remaining = len(deficits) - k90
    remaining_tns = round(total - cum, 3)
    assert remaining == 28 and remaining_tns == 0.187
    print("PASS: fixing the worst", k90, "of", len(deficits), "violations removes", round(100 * cum / total, 1), "% of TNS; the other", remaining, "violations carry only", remaining_tns, "ns")

    Fixed (worst first)

    TNS removed

    Violations left

    22 of 50

    90.6%

    28

    50 of 50

    100%

    0

    Fixing the worst 22 of 50 violations removes 90.6% of the TNS, and the remaining 28 carry only 0.187 ns between them: an average of 6.7 ps each. By TNS the project looks nearly done; by count, more than half the violations are still there. Those small ones can be the hard ones, paths that sizing and buffering did not fix, or endpoints with a negative setup-plus-hold sum that need a structural change; the decay here is a synthetic distribution, not a measured one. Plan for the tail early: it determines the end date, not the bulk.

    What the review looks for

    • Both counts and TNS are shown, with the share of TNS in the worst N violations.

    • The tail endpoints are examined for structural problems early, before the bulk is closed.

    • Waiver candidates in the tail have their evidence prepared in parallel, not at the end.

    Common pitfall

    Reporting progress by TNS alone. A project at 90% of TNS may be at less than half of its violations.

    Interview

    Contrast TNS progress with count progress, and say which one sets the end date.

    Check yourself What is the average deficit of the remaining 28 violations?

    0.187 / 28 ≈ 6.7 ps each, against 200 ps (0.2 ns) for the worst violation: the tail is small in slack but large in count.

    Related topics

    • Escalation and Signoff Risk

    • Tracking Closure by Group

    Previous

    149 / 183

    Next: Signoff Regression Hygiene

    Up next

    Up nextSignoff Regression Hygiene

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Daily Triage
    • Owner Assignment