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
    • Clocks in Timing Analysis
      • Ideal Versus Propagated Clocks
      • Latency, Skew and Uncertainty
      • Common Path Pessimism Removal
      • Generated and Gated Clock Paths
    • 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

‹Clocks in Timing Analysis
  1. Topics
  2. Static Timing Analysis
  3. Timing Paths and Checks
  4. Clocks in Timing Analysis
  5. Common Path Pessimism Removal

Part 1 · Timing Paths and Checks · All levels

Common Path Pessimism Removal

The clock segment shared by launch and capture cannot be both late and early at once, so tools credit back the difference.

On this page

    Why it matters

    With on-chip variation, STA analyses setup with the launch clock path slow (late) and the capture clock path fast (early). Both paths usually share the first part of the clock tree. A single buffer on that shared part cannot be slow for the launch and fast for the capture at the same instant, yet a naive analysis applies both. Common path pessimism removal (CRPR, also called CPPR) gives that difference back.

    The idea in numbers

    Quantity

    Value (illustrative, ns)

    Shared clock segment (common path)

    0.80

    Launch-only branch

    0.20

    Capture-only branch

    0.25

    Late derate (launch)

    1.10

    Early derate (capture)

    0.90

    example.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    common, lb, cb = 0.80, 0.20, 0.25
    late, early = 1.10, 0.90
    launch_arrival = (common + lb) * late      # 1.10
    capture_arrival = (common + cb) * early    # 0.945
    naive = capture_arrival - launch_arrival   # -0.155 : skew seen without CRPR
    credit = common * (late - early)           # 0.16 : the shared segment counted twice
    with_crpr = naive + credit                 # +0.005
    # physically: only the branches differ in derate, the common path cancels
    true = cb * early - lb * late              # 0.225 - 0.22 = 0.005
    assert abs(credit - 0.16) < 1e-9
    assert abs(with_crpr - true) < 1e-9 and abs(true - 0.005) < 1e-9
    print("PASS: CRPR credit =", round(credit, 3), "ns; skew goes from", round(naive, 3), "to", round(with_crpr, 3))

    Without CRPR the clock skew looks like -0.155 ns, costing setup slack. The credit is the common segment times the derate spread: 0.80 x (1.10 - 0.90) = 0.16 ns. After the credit the skew is +0.005 ns, which matches the physical situation where only the two private branches differ. The credit grows with the length of the shared path, so it matters most when launch and capture flops are close together in the clock tree.

    What the review looks for

    • CRPR is enabled in signoff and applied consistently in both setup and hold analyses.

    • A report that shows a credit line in the clock path is read with the credit included; slack numbers quoted without it are different numbers.

    • CRPR is a physical correction, not a margin: it never turns a real violation into a pass, only removes an impossible assumption.

    Common pitfall

    Comparing two reports where CRPR was on in one and off in the other. The difference can be tens of picoseconds per path and looks like a design change. Record the setting with every comparison.

    Interview

    Explain CRPR in one sentence: it removes the pessimism of applying opposite derates to the part of the clock path that launch and capture share. Then give the formula (shared delay times derate spread).

    Check yourself If the shared clock segment is 0.50 ns, the late derate 1.08 and the early derate 0.92, what is the credit?

    0.50 x (1.08 - 0.92) = 0.50 x 0.16 = 0.08 ns.

    Related topics

    • Latency, Skew and Uncertainty

    • Next: Generated and Gated Clock Paths

    Previous

    16 / 183

    Next: Generated and Gated Clock Paths

    Up next

    Up nextGenerated and Gated Clock Paths

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Ideal Versus Propagated Clocks