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. Clock Path Variation

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

Clock Path Variation

Clock paths vary too; after common path removal the remaining skew uncertainty comes from the unshared branches.

On this page

    Why it matters

    Data paths are not the only paths that vary. The launch and capture clock paths are chains of buffers, and their relative arrival is what skew means. Variation turns a nominal skew into a range. The shared part of the tree is removed from that range by common path pessimism removal; the unshared branches are what remains.

    Worked example

    example.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    import math
    stage = 0.05
    common_n, unique_n = 8, 4                       # clock tree: 8 shared stages, then 4 unshared stages per branch
    common, unique = common_n * stage, unique_n * stage
    assert abs(common - 0.40) < 1e-9 and abs(unique - 0.20) < 1e-9
    # flat derates 1.10 late / 0.90 early
    no_crpr_flat = common * (1.10 - 0.90)           # pessimism on the shared part
    skew_flat = unique * (1.10 - 0.90)              # remaining uncertainty after removal
    # depth-based derate for a 12-stage clock path (simplified: same depth used for both branches)
    d = 3 * 0.05 / math.sqrt(12)
    no_crpr_depth = common * 2 * d
    skew_depth = unique * 2 * d
    assert round(no_crpr_flat, 3) == 0.080 and round(skew_flat, 3) == 0.040
    assert round(no_crpr_depth, 4) == 0.0346 and round(skew_depth, 4) == 0.0173
    print("PASS: flat pessimism removed", round(no_crpr_flat, 3), "remaining", round(skew_flat, 3), "; depth-based", round(no_crpr_depth, 4), round(skew_depth, 4))

    Flat 1.10 / 0.90

    Depth-based (12 stages)

    Pessimism on the shared 0.40 ns

    0.080 ns (removed)

    0.035 ns (removed)

    Remaining uncertainty from the unshared 0.20 ns

    0.040 ns

    0.017 ns

    The clock tree has twelve stages of 0.05 ns, eight shared by launch and capture and four unshared on each side. Applying a flat derate to the whole path would charge 0.080 ns of pessimism on the shared part, which removal credits back; what remains, 0.040 ns, is the real uncertainty from the unshared stages. The depth-based figures are smaller for the same reason as before. The depth used here is a simplification: real tables are indexed by the depth of each portion and by distance.

    What the review looks for

    • Common path pessimism removal is enabled for setup and hold and its credit is reported per path.

    • Deep clock trees with large unshared portions are reviewed: the unshared stages are where skew uncertainty lives.

    • Clock tree design aims for a long shared trunk and short unshared branches to the sinks that talk to each other.

    Common pitfall

    Counting a skew improvement from tree restructuring as free. Moving the branch point earlier lengthens the unshared portion, and variation penalty grows with it.

    Interview

    Tie CRPR to variation: the credit exists because one buffer cannot be both slow and fast.

    Check yourself If the shared trunk grew to 10 stages and each branch shrank to 2, what happens to the flat remaining uncertainty?

    It falls to 2 × 0.05 × 0.20 = 0.020 ns (half of 0.040), because only the unshared stages contribute.

    Related topics

    • Short Paths Versus Long

    • Next: Worked Comparison

    • Common Path Pessimism Removal

    Previous

    100 / 183

    Next: Worked Comparison

    Up next

    Up nextWorked Comparison

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Depth Versus Variation