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
    • Clock Definition & Uncertainty
      • create_clock Rules
      • Waveform and Edge Cases
      • Uncertainty and Jitter
      • Source Versus Network Latency
    • Generated Clocks & Dividers
    • I/O Timing & Boundary Contracts
    • Exceptions & Audit Policy
    • Environment and Design Rules
  • 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

‹Clock Definition & Uncertainty
  1. Topics
  2. Static Timing Analysis
  3. Constraints & SDC Fundamentals
  4. Clock Definition & Uncertainty
  5. Source Versus Network Latency

Part 2 · Constraints and SDC · All levels

Source Versus Network Latency

Source latency is delay before the clock enters the design; network latency is delay through the clock network, set only for ideal clocks.

On this page

    Why it matters

    Two kinds of latency appear in constraints and reports, and they are easy to confuse. Setting the wrong one, or setting network latency on a propagated clock where it is ignored, makes a block look different from how it will behave in the chip.

    Definitions and commands

    Diagram
    # not-run: SDC is not executable here
    set_clock_latency -source 1.20 [get_clocks sys_clk]        ;# delay from the true clock source (e.g. PLL) to the clock port
    set_clock_latency 0.50 [get_clocks sys_clk]                ;# network latency, used while the clock is ideal

    Source latency

    Network latency

    What it models

    Delay from the clock origin to the block's clock definition point

    Delay from the definition point to the flop clock pins

    Applies to

    Ideal and propagated clocks

    Ideal clocks only; a propagated clock computes it from the tree

    Typical use

    Block-level analysis of a clock that is delayed outside the block

    Pre-CTS estimates of the clock tree depth

    example.py
    1
    2
    3
    4
    5
    6
    7
    8
    # Capture clock arrival at a flop = source latency + network latency
    src, net = 1.20, 0.50
    arrival = src + net
    assert abs(arrival - 1.70) < 1e-9
    # Between two blocks, only the DIFFERENCE of total arrivals matters for slack:
    launch_total, capture_total = 1.70, 1.85
    assert abs((capture_total - launch_total) - 0.15) < 1e-9
    print("PASS: clock arrival", arrival, "ns; skew between blocks 0.15 ns")

    Setting both clocks' latencies lets block-level analysis reproduce the skew the block will see in the chip. If a block's clock is 0.15 ns late relative to its neighbour's, as in the example above, paths between them see that skew; leaving source latency at zero hides it. On a single clock, source latency applies equally to launch and capture and cancels in register-to-register paths; only the difference between clocks matters.

    What the review looks for

    • Source latency values come from the top-level clock plan, not guesses, and are consistent with it, so the difference between blocks reproduces the real skew.

    • Network latency is not set on a propagated clock (it is ignored and misleads readers).

    • Block-level constraints derived from the top level carry source latency consistently.

    Common pitfall

    Setting set_clock_latency on a clock that is later made propagated and assuming it still applies. The network latency is replaced by the computed tree delay; only source latency remains. Remove stale network latency lines when the clock goes propagated.

    Interview

    Contrast the two in a sentence each and add that only network latency disappears when the clock becomes propagated.

    Check yourself A block's clock port is fed by a path with 0.8 ns delay not modelled in the block. Which constraint models it?

    Source latency (set_clock_latency -source 0.8), because it is delay before the clock enters the block, which stays valid with propagated clocks.

    Related topics

    • Uncertainty and Jitter

    • Ideal Versus Propagated Clocks

    Previous

    25 / 183

    Next: Generated Clocks & Dividers

    Up next

    Up nextGenerated Clocks & Dividers

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • create_clock Rules
    • Waveform and Edge Cases