EcrioniX/ STA/ Clock Skew & CTS
STA · Physical Design

Clock Skew Definition
Buffer Balanced Clock Tree Source Explained

What is clock skew, how balanced clock trees are built with buffers, CTS flow, H-tree topology, and how skew affects setup and hold timing margins.

Skew = Δtclk
Capture − Launch arrival
< 50–100ps
Typical CTS target
H-Tree
Balanced topology
BALANCED CLOCK TREE (H-TREE) CLK SOURCE CLKBUF CLKBUF CLKBUF CLKBUF CLKBUF CLKBUF CLKBUF FF FF FF FF Equal path length → Equal insertion delay → Zero skew at all FF sinks Skew ≈ 0

H-Tree balanced clock distribution — every FF sees identical clock path length

What is Clock Skew? DEFINITION

Clock skew is the spatial difference in clock arrival time between two flip-flops in a digital circuit. Ideally, all flip-flops receive the clock edge simultaneously. In practice, differences in wire lengths, buffer delays, and process/voltage/temperature (PVT) variations cause the clock to arrive at different times at different FFs.

Skew = tclk_capture − tclk_launch

Positive Skew

Capture FF clock arrives LATER than launch FF clock. Helps setup timing, hurts hold timing.

Negative Skew

Capture FF clock arrives EARLIER than launch FF clock. Hurts setup timing, helps hold timing.

Zero Skew

Both FFs receive clock at the same time. The CTS goal — achieved by balancing buffer paths.

Useful Skew

Intentional skew added to a critical path to borrow time from a nearby non-critical path.

Clock Skew vs Jitter vs Latency TERMINOLOGY

TermDefinitionCauseSTA Modeling
Clock SkewSpatial difference in clock arrival between two FFsUnequal wire length, buffer mismatchCaptured in clock tree analysis
Clock JitterCycle-to-cycle variation at a single clock pointPLL noise, power supply, thermalset_clock_uncertainty
Clock LatencyTotal delay from clock source to FF clock pinBuffer delays + wire delaySource + network latency in CTS
Insertion DelayDelay inserted by the clock tree (buffers + wires)CTS buffer chainBalanced to minimize skew
Transition TimeClock signal rise/fall time at FF clock pinBuffer drive strength, capacitanceCTS targets: 60–200ps

Effect on Setup and Hold Timing TIMING

Clock skew directly modifies the effective timing window available for data to propagate between flip-flops.

Setup check:   Tdata < Tperiod + Skew − Tsetup
Hold check:    Tdata > Thold − Skew
Skew TypeSetup TimingHold TimingWhen useful
Positive Skew (+)Relaxed (extra window)Tightened (harder)Fix setup violations on slow paths
Negative Skew (−)Tightened (harder)Relaxed (extra window)Fix hold violations (rare useful case)
Zero Skew (≈0)NominalNominalStandard CTS target

Hold violations are dangerous: Hold timing failures cannot be fixed by slowing down the clock. They require adding delay buffers on data paths. Excessive positive skew creates hold violations — CTS engineers must carefully balance skew optimization against hold risk.

Clock Tree Synthesis (CTS) Flow CTS FLOW

CTS is a key physical design step that builds the clock distribution network from the clock source to all FF sinks.

StepActionGoal
1Define clock tree source (PLL output / clock port)Establish tree root
2Clock tree topology selection (H-tree, fishbone, mesh)Geometric balance
3Buffer insertion — CLKBUF, CLKINV pairs, ICG cellsDrive strength + delay balance
4Skew balancing — adjust buffer sizes, add filler buffersSkew < target (e.g., 50ps)
5Transition time fixing — size up buffers on high-cap netsSlew < 150ps at FF clock pins
6Post-CTS timing analysis (setup + hold with real clock latency)No setup/hold violations
7Useful skew optimization (optional) — intentional skew for timingRecover timing on critical paths

Clock Tree Topologies TOPOLOGIES

H-Tree

Recursive H-shaped branching. Geometrically balanced — equal wire length to all sinks. Best for regular layouts (memory arrays, datapath).

Fishbone / Spine

Horizontal spine with vertical branches. Common in modern place-and-route tools. Less geometric but easily adaptable to irregular designs.

Clock Mesh

Grid of clock wires with buffers at intersections. Very low skew but high power consumption. Used in high-performance CPUs (Intel, AMD).

Multi-Source CTS

Multiple clock tree roots driven from different PLLs. Common in multi-domain SoCs. Each domain balanced independently.

Clock Buffer Types Used in CTS BUFFERS

Cell TypeFunctionWhen Used
CLKBUFNon-inverting clock buffer — high drive, symmetric rise/fallAll clock tree levels
CLKINV pairTwo inverters (double inversion = non-inverting) for precise delayFine-tuning delay in branches
ICG (Integrated Clock Gate)AND gate + latch for glitch-free clock gatingPower management, clock enables
CLKDIVClock divider — generates /2, /4 derived clocksMulti-frequency clock domains
MUX (clock mux)Selects between two clock sourcesDFT, scan, test modes

SDC Commands for Clock Constraints SDC

tcl / SDC
# Define primary clock — 1GHz
create_clock -name clk -period 1.0 -waveform {0 0.5} [get_ports CLK]

# Clock uncertainty: jitter + OCV margin (pre-CTS)
set_clock_uncertainty -setup 0.15 [get_clocks clk]
set_clock_uncertainty -hold  0.05 [get_clocks clk]

# Post-CTS: reduce uncertainty (clock tree is now modeled precisely)
set_clock_uncertainty -setup 0.08 [get_clocks clk]
set_clock_uncertainty -hold  0.03 [get_clocks clk]

# Set clock source latency (from PLL to chip pin)
set_clock_latency -source 0.5 [get_clocks clk]

# Define clock as ideal (pre-CTS, no tree modeled)
set_ideal_network [get_ports CLK]

# After CTS: propagate clock (use actual tree delays)
set_propagated_clock [get_clocks clk]

# Useful skew: apply intentional skew to a path
# set_clock_skew -setup 0.1 -hold 0 [get_cells launch_ff]

Sources of Clock Skew ROOT CAUSES

CTS Rule of Thumb: Every 100µm of additional wire length adds ~5–10ps of clock skew (depending on metal layer and load). At 1GHz (1ns period), 50ps of skew consumes 5% of the timing budget. This is why balanced H-trees minimize wire length imbalance.

Frequently Asked Questions FAQ

What is clock skew? +

Clock skew is the difference in arrival time of the clock signal at two different flip-flops. Skew = t_capture_clock − t_launch_clock. Positive skew helps setup, hurts hold. Zero skew is the CTS target. Typical post-CTS skew: <50–100ps.

What is a buffer balanced clock tree? +

A balanced clock tree uses carefully sized and positioned buffers (CLKBUFs) to ensure every FF sees the same total clock path delay from the source. CTS tools insert buffers iteratively to equalize branch delays, targeting near-zero skew across the design.

What is clock tree source? +

The clock tree source (root) is the starting point — typically a clock input port or PLL output buffer. CTS tools start here and fan out through buffers to all FF clock pins. The source has zero (reference) latency; all downstream FFs accumulate insertion delay from the source.

What is the difference between clock skew and jitter? +

Skew = static spatial difference between two FFs (different locations see different arrival times). Jitter = dynamic temporal variation at one point (clock edge shifts cycle-to-cycle). Both are captured in STA: skew from CTS analysis, jitter via set_clock_uncertainty.

What is useful skew? +

Useful skew is intentionally introduced skew to fix timing. By delaying the clock to the capture FF (positive skew), setup margin on that path increases. CTS tools or timing ECO can apply useful skew to rescue critical paths without re-routing data paths.

Related topics:

STA Physical Design Synthesis Commands