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
    • Graph Traversal & Slack
      • Arrival and Required Times
      • Forward and Backward Propagation
      • Slack Worked Example
      • A Tiny Timing Engine
    • Cell vs Net Delay Budgets
    • Path Group Prioritization
    • Report Timing Deep Read
  • 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

‹Graph Traversal & Slack
  1. Topics
  2. Static Timing Analysis
  3. Delay Graph & Path Analysis
  4. Graph Traversal & Slack
  5. Slack Worked Example

Part 3 · Delay Graph and Path Analysis · All levels

Slack Worked Example

A small circuit with two endpoints, worked by hand: arrival times, the critical path, slack per endpoint and the effect of one fix.

On this page

    Why it matters

    Reading a report is easy once you have done one by hand. This worked example uses a launch flop feeding two capture flops through shared and private logic, so you can see which path is critical, how the shared segment couples the two endpoints, and what a single fix does to both.

    The circuit (delays in ns, illustrative)

    Arc

    Delay

    FF1 clock-to-Q

    0.40

    Shared logic A

    0.60

    Branch to FF2: logic B

    0.50

    Branch to FF3: logic C

    0.80

    Setup (FF2, FF3)

    0.10

    Clock period 2.0 ns, ideal clocks (zero latency), no uncertainty. Arrival at FF2 = 0.40 + 0.60 + 0.50 = 1.50; at FF3 = 0.40 + 0.60 + 0.80 = 1.80. Required = 2.0 - 0.10 = 1.90 for both.

    example.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    T, S = 2.0, 0.10
    cq, A, B, C = 0.40, 0.60, 0.50, 0.80
    arr2, arr3 = cq + A + B, cq + A + C
    req = T - S
    s2, s3 = req - arr2, req - arr3
    assert abs(arr2 - 1.50) < 1e-9 and abs(arr3 - 1.80) < 1e-9
    assert abs(s2 - 0.40) < 1e-9 and abs(s3 - 0.10) < 1e-9
    # critical endpoint is FF3. Speeding the SHARED logic A by 0.15 helps both endpoints:
    A_fast = A - 0.15
    s2b, s3b = req - (cq + A_fast + B), req - (cq + A_fast + C)
    assert abs(s2b - 0.55) < 1e-9 and abs(s3b - 0.25) < 1e-9
    # speeding only branch B helps FF2 only and leaves the WNS unchanged
    s3c = req - (cq + A + C)
    assert abs(s3c - s3) < 1e-9
    print("PASS: slacks FF2", round(s2, 2), "FF3", round(s3, 2), "-> after fixing shared A:", round(s2b, 2), round(s3b, 2))

    FF3 is critical with slack +0.10 ns; FF2 has +0.40. A fix to the shared logic A improves both endpoints by the same amount, so with 0.15 ns removed the slacks become +0.55 and +0.25. A fix to branch B alone would improve FF2 but leave the worst endpoint unchanged. When a path report shows a shared prefix among many failing paths, fixing it pays off for all of them.

    What the review looks for

    • Closure effort starts with shared logic on many failing paths, not the single worst endpoint.

    • A fix is accepted by what it does to the whole fanout cone, including setup and hold on the other endpoints.

    • The report is read from the critical endpoint back along its worst predecessors.

    Common pitfall

    Optimising a private branch of an already positive path because it shows the largest delay. The endpoint with the worst slack is the target; delay elsewhere does not matter until it limits some endpoint.

    Interview

    Walk this example in 60 seconds and make the point about shared segments; interviewers use it to test whether you think in cones, not single paths.

    Check yourself If logic C is sped up by 0.30 ns, which endpoint becomes critical and with what slack?

    FF3's arrival becomes 0.40 + 0.60 + 0.50 = 1.50, the same as FF2, so both have slack +0.40 and are equally critical.

    Related topics

    • Forward and Backward Propagation

    • Next: A Tiny Timing Engine

    Previous

    44 / 183

    Next: A Tiny Timing Engine

    Up next

    Up nextA Tiny Timing Engine

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Arrival and Required Times