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
    • Skew and Variation
    • Timing Exceptions
      • Taxonomy and Intent
      • Multicycle Setup and Hold Pairing
      • RTL Pattern That Often Needs MCP
      • False Paths and Case Analysis
    • Clock Gating
    • RTL for Timing
    • Clock Architecture
  • Reset & CDC34
  • Memory & Buses57
  • Advanced RTL28
  • Senior & Interview76
  • Glossary and Notation
Loading lesson

‹Timing Exceptions
  1. Topics
  2. RTL Design
  3. Timing & Clocking
  4. Timing Exceptions
  5. Taxonomy and Intent

Part 5 · Timing & Clocking · Intermediate

Taxonomy and Intent

The SDC exception types, what each means, and the checks that keep them safe.

On this page

    Why this matters

    A broad exception such as a 4-cycle multicycle path from clk to clk silences real failures across the whole clock. Each exception is a promise about the RTL, and nothing checks the promise unless you write a test for it.

    After this lesson you can: name each SDC exception, say what it promises about the RTL, and write one with a narrow scope, a stated reason and a matching hold.

    Exception types

    Each exception answers one question about the path. The table lists the SDC command, its meaning, and that question.

    Exception

    Meaning

    Question to answer first

    set_multicycle_path N -setup

    Path may take N cycles for setup

    Does the capture register really sample only every N cycles? Does the source hold?

    set_multicycle_path N-1 -hold

    Restores same-edge hold for the matching-clock example

    Which hold edge must remain? Derive the pairing from launch/capture waveforms

    set_false_path

    Path is never timed

    Can this path never be sensitised, or is it an asynchronous / static signal handled elsewhere?

    set_case_analysis 0|1 [pin]

    Pin is constant in this mode

    Is it really constant in the mode being analysed (configuration straps, test mode)?

    set_disable_timing

    Disable a timing arc

    Breaking a combinational loop or an unused path through a cell

    set_max_delay / set_min_delay

    Replace the default requirement with an explicit delay bound

    Typically for asynchronous crossings that still need a bounded delay

    To choose between them, ask the questions in this order and stop at the first yes.

    Decision tree. Constant in this mode: case analysis. Otherwise, crosses clock domains: synchroniser first, then a scoped CDC constraint. Otherwise, can never carry a transition and proved: narrowly scoped false path. Otherwise, RTL holds data for N cycles: multicycle setup N and hold N minus 1. Otherwise no exception, fix the timing.
    Which exception fits a path: ask about modes first, then clock domains, then whether the path is ever active, then whether the RTL guarantees a multi-cycle window. If every answer is no, the path is real and needs a timing fix.

    Each diamond asks for a guarantee from the RTL or the mode; each box is the constraint that records it. The bottom box is the common answer: most failing paths are real.

    Rules that keep exceptions safe

    These rules keep exceptions narrow and reviewable. Each one ties the constraint back to the RTL.

    1. Smallest scope. Use -from and -to with specific register groups. Never apply to a whole clock.

    2. One reason per exception, written as a comment next to it, naming the RTL that guarantees it.

    3. Review setup and hold together. The N / N-1 recipe here assumes matching same-clock waveforms; inspect reported edges and choose -start / -end deliberately for differing clocks.

    4. Back it with a test or assertion. An SVA that checks the enable spacing or source stability turns the promise into something that can fail loudly.

    5. Review exceptions like code. Treat a pull request that adds one as a design change.

    Diagram
    # Good: narrow scope, reason stated, paired setup/hold
    # RTL: a_r and b_r load only when 'start' is accepted and hold for 3 cycles;
    # y captures on the 3rd cycle (see mc_mult.sv, assertion a_r_stable).
    set_multicycle_path 3 -setup -from [get_cells {a_r* b_r*}] -to [get_cells y*]
    set_multicycle_path 2 -hold  -from [get_cells {a_r* b_r*}] -to [get_cells y*]
    
    # Bad: broad scope, no reason, no matching hold
    set_multicycle_path 4 -from [get_clocks clk] -to [get_clocks clk]

    Common mistakes

    Common pitfall

    Choose constraints by CDC protocol. A single-bit synchroniser may use a narrowly scoped false path into its first-stage D pin; later synchroniser stages remain timed in the destination clock. Bundled-data handshakes and Gray buses need their own delay/skew bounds and protocol checks. A blanket clock-to-clock false path can mask those bounds; verify exception precedence and coverage in the approved CDC/STA flow (see the CDC section).

    Case analysis changes the logic that STA sees instead of removing a check. A mux input is constant, so only one data input is considered.

    Each other mode needs its own run with different case settings.

    Check yourself A teammate adds set_false_path -to [get_ports dout*] because the output timing fails. What is the right response?

    Reject it. A failing output path is a real requirement, not a false path. Either register the outputs, fix the logic, or negotiate the output delay budget with the receiving block. A false path would simply stop checking the interface.

    Remember

    • Multicycle, false path, case analysis, disable timing and min/max delay each answer a different question about the path.

    • Use the smallest -from and -to, one reason per exception, and review setup and hold together.

    • A failing output path is a real requirement, not a false path.

    Rule of thumb: review an exception like code: name the RTL that guarantees it and back it with a test.

    Keep going

    • Code lab: Timing exception path

    • Interview: run a mock interview on this topic

    Related topics

    • Multicycle setup/hold pairing

    Previous

    132 / 350

    Next: Multicycle Setup and Hold Pairing

    Up next

    Up nextMulticycle Setup and Hold Pairing

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • RTL Pattern That Often Needs MCP
    • False Paths and Case Analysis