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. Fix Strategy: Setup vs Hold

Part 5 · Timing & Clocking · Intermediate

Fix Strategy: Setup vs Hold

Setup and hold fixes side by side with their costs and order.

On this page

    Why this matters

    Setup and hold fixes can undo each other. Hold buffers add delay to short paths, and a few that share a start or end with a critical path cost it setup slack.

    After this lesson you can: compare setup and hold violations side by side, and plan the order of fixes across constraints, RTL, clock tree and hold buffers.

    Side by side

    Setup violation

    Hold violation

    Nature

    Path too long (or clock too fast)

    Path too short (or skew too large)

    Corner intuition (check all required views)

    Slow data often limits

    Fast data often limits

    RTL fixes

    Fewer logic levels, pipelining, retiming, lower fanout, registered outputs

    Rarely RTL; avoid skewed gated/divided clocks between connected flops

    Implementation fixes

    Cell upsizing, buffering, placement, useful skew

    Insert hold (delay) buffers, rebalance clock tree

    Constraint fixes

    Relax the clock; add a valid multicycle path (only if true)

    None (never relax a hold constraint to pass)

    Side effect of the fix

    Tighter hold on the same flop's inputs when using skew

    Slightly worse setup on that path; more area and power

    Applies at

    Every stage of the flow

    Mostly after clock tree synthesis

    Fix order

    Fix setup first, then build the clock tree and fix hold. Re-check both at all corners.

    Flowchart. Verify constraints and clocks, fix setup from the worst path, build the clock tree, analyse hold while the flow adds delay cells. If thousands of hold buffers appear, look for skew or architecture problems. Then re-run setup and hold at all corners, and go back to setup fixing if a fix traded one check for the other.
    Fix order: constraints, setup, clock tree, hold, then both checks again at every corner.

    Follow the arrows from the top. Each box is one step; the diamond is the one review point.

    • Setup comes before the clock tree because its fixes change the logic; hold comes after because only real clock latencies show the true skew.

    • The buffer count is a health check: thousands of hold buffers hint at skew or architecture problems, not at a hold-fixing job.

    • The dashed arrow is the reason for the last step: confirm the fixes did not trade one check for the other.

    Common mistakes

    Tip

    Keep a one-line log of every timing fix and its measured effect on WNS and TNS. Over time it becomes your team's playbook for which fixes work in your design style.

    Warning

    Never close timing by loosening constraints without understanding why the original ones were needed. Over-relaxed constraints move the failure from the report to the chip.

    Check yourself After adding 150 hold buffers the setup WNS got worse by 0.03 ns on a few paths. Is that surprising?

    No. Hold buffers add delay to short paths; if a few of them share a start or end with a critical path, their setup slack drops a little. Re-run setup after hold fixing.

    Remember

    • Fix setup first, structurally in RTL. Then build the clock tree and fix hold with delay cells.

    • Thousands of hold buffers hint at a skew or architecture problem.

    • Re-run both checks at all corners after each fix.

    Rule of thumb: never close timing by loosening constraints you do not understand.

    Keep going

    • Interview: run a mock interview on this topic

    Related topics

    • Skew and variation

    Previous

    126 / 350

    Next: Skew and Variation

    Up next

    Up nextSkew and Variation

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Core Equations and Slack
    • Interpretation Shortcut
    • Worked Numeric Examples