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
    • OCV, AOCV and POCV Mechanisms
    • Derate Policy and Approval
    • Path Depth Sensitivity
      • Depth Versus Variation
      • Short Paths Versus Long
      • Clock Path Variation
      • Worked Comparison
    • Variation Signoff Dashboard
  • Crosstalk and Noise16
  • ECO and Closure16
  • STA Debug Playbook16
  • STA Interview Prep26
  • Capstone Timing Signoff Lab4
Loading lesson

‹Path Depth Sensitivity
  1. Topics
  2. Static Timing Analysis
  3. OCV, AOCV, POCV and Variation
  4. Path Depth Sensitivity
  5. Worked Comparison

Part 6 · OCV, AOCV, POCV and Variation · All levels

Worked Comparison

Twenty generated paths analysed with flat, depth-based and statistical methods: counts of violations, worst slack and which paths each method flags.

On this page

    Why it matters

    Method choice is easier to judge on a population than on single paths. The comparison below builds twenty paths with a deterministic rule, so everyone gets the same numbers: stage counts of 3, 10, 17 and 24 repeated, and every fifth path containing two noisy cells.

    The experiment

    example.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    import math
    paths = []
    for i in range(20):
        n = 3 + (i * 7) % 28
        noisy = 2 if i % 5 == 0 else 0
        mean = 0.10 * n
        sigmas = [0.005] * (n - noisy) + [0.03] * noisy
        budget = round(mean * 1.10 + 0.02, 3)               # nominal slack is 10% of the mean plus 0.02 ns
        paths.append((i, n, mean, sigmas, budget))
    def flat(p):  return p[4] - p[2] * 1.15
    def depth(p): return p[4] - p[2] * (1 + 0.15 / math.sqrt(p[1]))
    def stat(p):  return p[4] - (p[2] + 3 * math.sqrt(sum(s * s for s in p[3])))
    def summary(f):
        sl = {p[0]: f(p) for p in paths}
        bad = sorted(i for i, s in sl.items() if s < 0)
        return bad, round(sum(sl[i] for i in bad), 3), round(min(sl.values()), 3)
    bf, bd, bs = summary(flat), summary(depth), summary(stat)
    assert len(bf[0]) == 15 and bf[1] == -0.975 and bf[2] == -0.1
    assert bd == ([], 0, 0.024)
    assert bs[0] == [0, 5] and bs[1] == -0.092 and bs[2] == -0.078
    print("PASS: flat", len(bf[0]), "violations; depth-based", len(bd[0]), "; statistical", bs[0], "TNS", bs[1], "WNS", bs[2])

    Method

    Violating paths (of 20)

    TNS (ns)

    WNS (ns)

    Flat 1.15

    15

    -0.975

    -0.100

    Depth-based

    0

    0

    +0.024

    Statistical (3 sigma)

    2 (paths 0 and 5)

    -0.092

    -0.078

    Flat derating fails fifteen paths, essentially every path of ten stages or more, for a TNS of -0.975 ns. Depth-based derating passes all twenty with 0.024 ns of worst slack. Statistical analysis flags only the two paths that contain noisy cells and that have the least slack to spare: path 0 (three stages, two of them noisy) and path 5 (ten stages, two noisy). Of the four noisy paths the other two have enough slack to absorb their extra sigma. The most severe flag, path 0, is a three-stage path: depth-based analysis gives it +0.024 ns, statistical analysis -0.078 ns. A table indexed by depth cannot see that.

    What to take from it

    Observation

    Consequence

    Flat is far more pessimistic than the others on deep paths

    Use it for early work, not for final signoff unless the process requires it

    Depth-based passes everything here

    Its result is only as good as its assumption that cells on the path are typical

    Statistical finds the two noisy-cell paths

    Fix the noisy cells (stronger driver, shorter wire), not the whole path

    What the review looks for

    • A comparison like this on real data before the signoff method is fixed, with the paths each method disagrees on reviewed by hand.

    • The reasons for disagreement are classified: depth, cell identity, correlation.

    • Whichever method is chosen, the paths that only a stricter method flags are listed as known risks.

    Common pitfall

    Concluding that the method with the fewest violations is the best. It is the one that matches your variation data and policy; here the cheapest result is also the one that missed two real outliers.

    Interview

    Use this as a story: three methods, same twenty paths, three different answers, and what each answer teaches.

    Check yourself Why does depth-based analysis give path 0 positive slack when statistical analysis fails it?

    Path 0 has three stages, so the table gives it a derate for three stages. It cannot see that two of the three cells have large sigma (0.03 ns each); the statistical method uses those sigmas and finds a 3-sigma delay larger than the budget.

    Related topics

    • Clock Path Variation

    • Choosing the Method

    Previous

    101 / 183

    Next: Variation Signoff Dashboard

    Up next

    Up nextVariation Signoff Dashboard

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Depth Versus Variation
    • Short Paths Versus Long