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. Ideal Versus Propagated Clocks

Part 1 · Timing Paths and Checks · All levels

Ideal Versus Propagated Clocks

An ideal clock reaches every flop at a specified time; a propagated clock arrives after the real clock tree delays, so skew becomes visible.

On this page

    Why it matters

    Early in a project there is no clock tree, so the clock is treated as ideal. After clock tree synthesis the clock is propagated. The change moves every number in the report, so you must know which model a report used before you compare it with another.

    The two models

    Ideal clock

    Propagated clock

    Clock arrival at each flop

    A single specified value (often zero) plus any set latency

    Computed from the real buffers, gates and wires of the clock network

    Skew between flops

    Zero (unless specified)

    Real and different per flop pair

    Typical use

    Synthesis and early planning, before clock tree synthesis

    Placement-aware optimisation after clock tree synthesis and signoff

    SDC statement

    Default for a defined clock

    set_propagated_clock on the clock or its pins

    What changes in the numbers

    Take the setup example from the previous topic with period 2.00 ns, clock-to-Q 0.40, path 1.00, setup 0.10 and uncertainty 0.10. With an ideal clock the latencies are zero. With a propagated clock the launch flop sees 0.30 ns and the capture flop 0.35 ns.

    example.py
    1
    2
    3
    4
    5
    6
    7
    8
    T, Dcq, Dpath, S, U = 2.00, 0.40, 1.00, 0.10, 0.10
    def setup_slack(L, C):
        return (T + C - S - U) - (L + Dcq + Dpath)
    ideal = setup_slack(0.0, 0.0)           # 2.00 - 0.20 - 1.40 = 0.40
    propagated = setup_slack(0.30, 0.35)    # 0.45
    assert abs(ideal - 0.40) < 1e-9 and abs(propagated - 0.45) < 1e-9
    assert abs((propagated - ideal) - 0.05) < 1e-9   # the 0.05 ns of skew in the path's favour
    print("PASS: ideal slack", round(ideal, 2), "propagated slack", round(propagated, 2))

    The same path moves from +0.40 to +0.45 ns because the capture clock arrives 0.05 ns later than the launch clock. On another path the skew can go the other way and cost slack. That is why a design that is clean with ideal clocks can fail after clock tree synthesis.

    What the review looks for

    • Signoff runs use propagated clocks everywhere; an ideal clock in a signoff run is a finding.

    • The clock uncertainty applied is appropriate to the clock model: ideal-clock analysis needs larger uncertainty to cover the skew not yet known.

    • Reports compared across stages state which clock model each used.

    Common pitfall

    Comparing slack before and after clock tree synthesis as if only data changed. The clock model, the uncertainty and often the extraction changed too. Check the clock arrival lines of the report before blaming the logic.

    Interview

    Hold is checked under ideal clocks but without real skew, so it under-reports hold risk; treat pre-CTS hold results as preliminary and re-verify once clocks are propagated.

    Check yourself A path has +0.10 ns setup slack with ideal clocks and -0.20 ns after clock tree synthesis. Name two possible reasons.

    The skew between launch and capture flops went against the path (the launch clock later than the capture clock), and the uncertainty or extraction changed from estimates to real values. Both are clock-side or analysis-side effects, not necessarily a logic change.

    Related topics

    • Next: Latency, Skew and Uncertainty

    • RTL: Clock Architecture

    Previous

    14 / 183

    Next: Latency, Skew and Uncertainty

    Up next

    Up nextLatency, Skew and Uncertainty

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Common Path Pessimism Removal
    • Generated and Gated Clock Paths