VLSI

Clock Skew in VLSI: Positive, Negative & Timing

By CourseTron Team ·  8 min read ·  Updated Oct 2026 💬 𝕏 in f
Table of Contents
    🖨  Download / Print this guide (PDF)

    In short: Clock skew in VLSI is the difference in clock arrival time between two flip-flops driven by the same clock. A little skew can be used deliberately to borrow timing margin, but uncontrolled skew eats into setup slack and, more dangerously, can cause hold violations that no re-spin of frequency will fix. Clock-tree synthesis (CTS) is the step where skew is actually shaped and bounded.

    What Is Clock Skew in VLSI?

    Clock skew in VLSI is the spatial difference in clock arrival time between two sequential elements (flip-flops or latches) that are nominally clocked by the same edge. If the launch flop receives its clock edge at time Tlaunch and the capture flop receives the same edge at Tcapture, the skew between them is simply:

    skew = Tcapture − Tlaunch

    Because a clock signal has to travel through buffers, long metal routes, and clock-gating cells before it reaches each register, no two endpoints see the edge at exactly the same instant. The ideal of a perfectly simultaneous clock is a convenient fiction used only at the RTL and pre-CTS stages; in silicon, skew always exists. The job of a physical-design engineer is not to eliminate skew (impossible) but to bound and balance it so that it helps rather than hurts.

    Skew is distinct from jitter, which is the cycle-to-cycle variation of the same edge at a single point, and from insertion delay (latency), the absolute time from the clock source to a register. Skew is always defined between a pair of endpoints.

    Skew = capture edge arrival minus launch edge arrival clk FF1 (launch) FF2 (capture) launch edge arrives first capture edge arrives later The gap between the two arrivals is the skew. CourseTron · coursetron.com
    Animation: one clock edge travels to both flops; the later arrival at the capture flop is the skew.
    Key fact: Clock skew is signed and directional. The skew from A to B is the negative of the skew from B to A. A value that relaxes a setup check on one timing path can simultaneously tighten the hold check on another path that shares those same two flops.

    Positive vs Negative Skew: How It Affects Setup and Hold

    Consider a launch flop FF1 feeding a capture flop FF2 through combinational logic. Define skew as the capture clock arriving later than the launch clock.

    Positive skew (capture clock arrives later)

    When the capture edge is delayed, FF2 effectively gets extra time to latch the data. This relaxes the setup constraint, letting the path run faster or tolerate more logic delay:

    • Setup: Tclk + skew ≥ Tcq + Tlogic + Tsetup — positive skew adds to the available period.
    • Hold: Tcq + Tlogic(min) ≥ Thold + skew — positive skew makes the hold check harder.

    Negative skew (capture clock arrives earlier)

    This is the mirror image: it steals from the setup budget but relaxes hold. The crucial takeaway is the trade-off — skew that buys setup margin costs hold margin, and vice versa. This is also the mechanism behind useful skew, where CTS tools intentionally push a few picoseconds of positive skew into a critical register so a slow path meets setup by borrowing from a neighbouring path that has slack to spare.

    Positive vs negative skew: setup and hold trade-off Positive skew: capture later Setup: more time, relaxed Hold: harder to meet Negative skew: capture earlier Setup: less time, tighter Hold: relaxed Skew that buys setup margin costs hold margin, and vice versa. CourseTron · coursetron.com
    Positive skew relaxes setup but tightens hold; negative skew does the opposite.

    Local vs Global Skew

    Not all skew matters equally, and EDA tools classify it by scope:

    • Local skew is the skew between two flops that have a real timing relationship — i.e. a launch/capture pair connected by a data path. This is the skew that directly appears in a setup or hold equation, so it is the one that governs timing closure.
    • Global skew is the maximum skew across the entire clock domain: the difference between the earliest-arriving and latest-arriving clock endpoints, regardless of whether those two registers ever talk to each other. It is a useful quality metric for the clock tree but is often pessimistic, because many of those endpoints never form a timing path.

    Modern sign-off uses on-chip variation (OCV) and later advanced OCV / POCV to model how process and voltage gradients make the same buffer faster on a launch path and slower on a capture path. This is why reported local skew in a real design is derated, not a single clean number.

    Where Does Clock Skew Come From?

    Skew accumulates from several physical sources, and understanding them tells you where to attack it:

    • Unbalanced clock-tree depth — endpoints with a different number of buffer stages between them and the root.
    • Interconnect / wire delay — longer or higher-resistance metal routes to distant registers add latency.
    • Load mismatch — buffers driving different fan-out or capacitance switch at different speeds.
    • Process, voltage, temperature (PVT) gradients — across a large die, two identical buffers can have measurably different delays.
    • Clock gating — an integrated clock-gating (ICG) cell inserted on one branch but not another adds asymmetric delay.
    • Crosstalk — aggressor nets coupling onto clock routes can advance or delay an edge dynamically.
    Clock tree: same clock, different arrival clk root BUF BUF BUF FF1 FF2 arrives early arrives later: skew CourseTron · coursetron.com
    Both flip-flops share one clock, yet the edge reaches FF1 earlier than FF2, and that arrival difference is the skew.

    How Clock Skew Is Fixed and Controlled

    Skew is primarily managed during clock-tree synthesis, the PD step that builds the physical network of buffers delivering the clock. Techniques include:

    1. Balancing the tree — CTS inserts and sizes buffers so that insertion delay to all (or all related) endpoints is equalised within a target skew window.
    2. Useful-skew optimisation — the tool deliberately shifts skew on selected registers to redistribute slack across setup-critical paths.
    3. Hold-fix buffering — after CTS, delay cells are added on short data paths to repair hold violations created by skew.
    4. Clock mesh / spine structures — high-performance CPUs use a grid instead of a tree to drive skew toward near-zero at the cost of power.
    5. H-tree topologies — symmetric routing that guarantees equal path length to balanced leaf points.

    A key discipline: hold violations caused by skew cannot be fixed by lowering the clock frequency. Hold is a race between data and clock within the same cycle and is frequency-independent, which is why excessive skew is far more dangerous than a tight-but-closable setup path.

    How EDA Tools Report and Handle Skew

    In tools such as Synopsys PrimeTime, Cadence Tempus, and Innovus/ICC2, skew is reported inside the timing-path report as the difference between the launch and capture clock-network delays, after applying CRPR (clock reconvergence pessimism removal) so that the common portion of the two clock paths is not double-counted. CTS engines accept a target skew and max transition/latency as constraints and optimise the buffer tree against them. Sign-off then re-checks skew under multiple corners (slow/fast PVT, SI-on) because the worst skew rarely occurs at the same corner as the worst insertion delay.

    Master CTS, timing closure, and skew the way real tape-outs do.

    Explore the Physical Design Course →

    Clock Skew Interview FAQ

    Is clock skew always bad?

    No. Uncontrolled skew is bad, but bounded and intentionally applied skew (useful skew) is a legitimate optimisation that helps close setup-critical paths by borrowing slack from adjacent paths. The goal is control, not elimination.

    Why can't a hold violation from skew be fixed by slowing the clock?

    Setup checks span a full clock period, so a slower clock relaxes them. Hold checks compare the data and clock edges within the same cycle and contain no period term, so they are frequency-independent. Hold violations are fixed by adding delay to the data path, not by changing frequency.

    What is the difference between local and global skew?

    Local skew is between a launch/capture pair that share a real data path and directly affects timing. Global skew is the maximum arrival-time spread across the whole clock domain and is a tree-quality metric, often pessimistic because unrelated endpoints are included.

    How is skew different from jitter?

    Skew is spatial — the arrival difference of one edge between two different points. Jitter is temporal — the variation of edges over time at a single point, caused by the PLL and supply noise. Both erode timing margin but are modelled separately.

    Related reading: continue with the antenna effect in VLSI, browse the VLSI Glossary, or practise with our Physical Design Interview Questions.

    Advertisement