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

  • RTL Foundations36
  • Combinational Design25
  • Sequential Design27
  • FSM & Control27
  • Timing & Clocking39
    • STA Foundations
    • Setup, Hold and Slack
      • Core Equations and Slack
      • Interpretation Shortcut
      • Worked Numeric Examples
      • Example 1: Setup Failure
      • Example 2: Hold Failure
      • Fix Strategy: Setup vs Hold
    • Skew and Variation
    • Timing Exceptions
    • Clock Gating
    • RTL for Timing
    • Clock Architecture
  • Reset & CDC34
  • Memory & Buses57
  • Advanced RTL28
  • Senior & Interview76
  • Glossary and Notation
Loading lesson

‹Setup, Hold and Slack
  1. Topics
  2. RTL Design
  3. Timing & Clocking
  4. Setup, Hold and Slack
  5. Interpretation Shortcut

Part 5 · Timing & Clocking · Intermediate

Interpretation Shortcut

How to read slack size and triage setup and hold violations.

On this page

    Why this matters

    A slack number alone does not give the fix. Whether -0.02 ns or -0.80 ns, you first ask whether it is setup or hold, and what fits in the path budget.

    After this lesson you can: read a slack value by sign and size, tell setup from hold, and estimate a minimum period from the worst setup slack.

    Reading slack

    1. Sign and size. Negative is a violation. Calibrate its size against the actual library/path budget, not a universal gate delay. In an illustrative 2.0 ns cycle with 0.50 ns reserved for clock-to-Q, setup and uncertainty, 1.50 ns remains for logic/wire. At an assumed 0.10 ns per loaded level, that suggests 15 levels; real delays depend on slew, load, wire and corner. Neither -0.02 nor -0.80 ns alone determines the fix.

    2. Setup or hold. Setup scales with the clock; hold does not. A hold violation is a short-path problem.

    3. Time breakdown. For setup, split the delay into clock-to-Q, logic levels, wire, setup time, and skew. The path report lists each cell and its delay.

    Tip

    For full-cycle, single-cycle, same-clock register paths, estimate the minimum period as target period minus worst setup slack: 2.0 ns with WNS −0.12 ns gives about 2.12 ns (≈ 472 MHz). This assumes delays, skew and uncertainty stay fixed, and all limiting paths obey that edge relationship. It is not a global Fmax formula for mixed clocks, I/O paths, multicycle paths or opposite-edge paths; re-evaluate their launch/capture edges and all constraints.

    Check yourself A same-clock three-cycle path has −0.30 ns setup slack at T = 2.0 ns, with fixed delays and uncertainty. What period makes this path meet?

    Its budget is 3T, so add 0.30 / 3 = 0.10 ns to T: 2.10 ns, not 2.30 ns. Conversely, a half-cycle path with −0.10 ns slack needs a 0.20 ns period increase if duty cycle remains 50%. Other paths still need checking.

    Likely causes

    Ask three questions in order: is every endpoint timed, is it setup or hold, and how deep is the path? The answers point to the first fix.

    Decision tree. Unclocked endpoints: fix constraints. Otherwise setup or hold. Setup with many levels: pipeline or restructure; few levels: duplicate, buffer or register the boundary. Hold with tiny slack on many paths: let the flow add hold buffers and check the clock tree; large hold slack: check clock domains and gating, add delay.
    Triage for a failing path: constraints first, then setup or hold, then depth or spread decides the first fix.

    Follow the tree from the top. Each diamond is a question you can answer from the report; each box is the first thing to try.

    • The constraint question comes first because a missing clock makes every other number meaningless.

    • For setup, the level count separates a structural problem (pipeline, restructure) from a physical one (one slow cell, a long wire or a port).

    • For hold, the spread matters: many tiny failures point to skew the flow can fix; one large failure points to a skewed boundary in the design.

    Each row of the table pairs a symptom with its likely cause and first fix.

    What you see

    Likely cause

    First thing to try

    Setup, logic exceeds its calibrated budget (e.g. >15 levels at 0.10 ns/level in the illustrative 1.50 ns budget)

    Too much logic in one stage

    Pipeline or restructure the RTL; confirm actual cell/wire delays

    Setup, few levels but one cell very slow

    High fanout or long wire

    Duplicate the register or buffer the net

    Setup, endpoint is an input/output port

    I/O constraint too tight or unregistered I/O

    Register at the boundary; recheck the I/O budget

    Hold, tiny negative slack on many paths

    Skew between nearby registers

    Let the flow insert hold buffers; check the clock tree

    Hold, large negative slack

    A shift register or direct register-to-register path across a skewed boundary

    Check clock domains and clock gating; add delay

    Slack looks great but the report has unclocked endpoints

    Missing clock definition

    Fix constraints

    Common mistakes

    Common pitfall

    Don't compare slack values across different constraint sets. A path at +0.2 ns with a 2.0 ns clock and 0.15 ns uncertainty is not the same as a path at +0.2 ns with no uncertainty.

    Check yourself WNS is −0.12 ns at a 2.0 ns target, and all limiting paths are full-cycle, single-cycle, same-clock register paths with fixed delays, skew and uncertainty. What is the approximate maximum frequency?

    About 2.12 ns, i.e. 1 / 2.12 ns ≈ 472 MHz. Re-evaluate all constraints at that period; the estimate does not apply unchanged to other edge relationships.

    Remember

    • Setup scales with the clock period. Hold does not, and a hold violation is a short-path problem.

    • For a full-cycle same-clock path, minimum period is the target period minus the worst setup slack (2.0 ns with WNS -0.12 ns gives about 2.12 ns).

    • Do not compare slack across different constraint sets.

    Rule of thumb: split the path into clock-to-Q, logic, wire, setup and skew before choosing a fix.

    Keep going

    • Interview: run a mock interview on this topic

    Related topics

    • Worked numeric examples

    Previous

    122 / 350

    Next: Worked Numeric Examples

    Up next

    Up nextWorked Numeric Examples

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Example 1: Setup Failure
    • Example 2: Hold Failure
    • Fix Strategy: Setup vs Hold