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
    • What STA Checks
    • Setup and Hold Checks
      • Launch and Capture Edges
      • Setup Check Derivation
      • Hold Check Derivation
      • Slack and Criticality
    • Clocks in Timing Analysis
    • Delay Models
  • 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
  • STA Interview Prep26
  • Capstone Timing Signoff Lab4
Loading lesson

‹Setup and Hold Checks
  1. Topics
  2. Static Timing Analysis
  3. Timing Paths and Checks
  4. Setup and Hold Checks
  5. Slack and Criticality

Part 1 · Timing Paths and Checks · All levels

Slack and Criticality

Slack is required time minus arrival time; WNS and TNS summarise a list of slacks, and neither is a pass/fail grade on its own.

On this page

    Why it matters

    Every timing report ends in a few numbers: worst negative slack, total negative slack and the count of failing endpoints. Reading them well is a skill: they answer different questions, and each can mislead if used alone.

    Definitions

    • Slack of an endpoint is required time minus arrival time (setup) or arrival minus required (hold). Negative slack is a violation.

    • WNS, worst negative slack, is the minimum (worst) slack over all endpoints; a negative value is a violation, and a positive one tells you the design is clean with that much margin.

    • TNS, total negative slack, is the sum of all negative slacks. It measures the total amount of violation, not the worst case.

    • Failing endpoint count (FEP) is the number of endpoints with negative slack.

    A worked example

    Endpoint

    Setup slack (ns)

    ff_a/D

    +0.12

    ff_b/D

    -0.30

    ff_c/D

    -0.05

    ff_d/D

    +0.40

    ff_e/D

    -0.30

    example.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    slacks = {"ff_a/D": 0.12, "ff_b/D": -0.30, "ff_c/D": -0.05, "ff_d/D": 0.40, "ff_e/D": -0.30}
    neg = [s for s in slacks.values() if s < 0]
    wns = min(slacks.values())
    tns = sum(neg)
    fep = len(neg)
    assert abs(wns - (-0.30)) < 1e-9
    assert abs(tns - (-0.65)) < 1e-9
    assert fep == 3
    print("PASS: WNS =", wns, "TNS =", round(tns, 2), "FEP =", fep)

    WNS is -0.30 ns, TNS is -0.65 ns and three endpoints fail. Two designs with the same WNS can be very different: one with a single failing endpoint is a local problem, one with 5,000 failing endpoints is a systemic one. TNS and the failing count separate them.

    Criticality

    A path is more critical the smaller its slack. Closure work prioritises by criticality: the most negative paths first, then groups with many failing endpoints. A positive slack path with tiny margin is still critical in the sense that any change (an ECO, a different corner, a variation derate) can flip it.

    What the review looks for

    • WNS, TNS and FEP are reported per path group and per corner, not only as one chip-wide number.

    • A clean WNS in a view with the wrong constraints is not clean: check the unconstrained endpoint count alongside slack.

    • Trends matter more than a snapshot: the magnitude of TNS shrinking, i.e. TNS rising towards zero, run over run is progress even when WNS has not moved.

    Common pitfall

    Declaring success because WNS improved. A single path can be fixed while hundreds of others get worse. Track WNS, TNS and the failing endpoint count together, per group.

    Interview

    If asked which is more important, WNS or TNS, answer that they measure different things: WNS says how bad the worst path is, TNS says how much total work remains. Both are needed, plus the failing count.

    Check yourself Design A has WNS -0.05 ns and TNS -0.05 ns. Design B has WNS -0.05 ns and TNS -120 ns. What differs?

    Design A has a single marginal failing endpoint. Design B has at least 2,400 failing endpoints: WNS -0.05 ns means each failing slack lies between -0.05 ns and zero, so 120 / 0.05 = 2,400 is the minimum count. That is a systemic problem such as a clock or constraint issue, not a single hard path.

    Related topics

    • Hold Check Derivation

    • RTL: Setup, Hold and Slack

    Previous

    13 / 183

    Next: Clocks in Timing Analysis

    Up next

    Up nextClocks in Timing Analysis

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Launch and Capture Edges
    • Setup Check Derivation