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

  • How to Use This Course
  • Reading Path
  • STA Glossary
  • STA Metrics Reference
  • STA Mastery Cheatsheet
  • Timing Paths and Checks16
  • Constraints & SDC Fundamentals20
  • Delay Graph & Path Analysis16
  • Beyond Setup and Hold16
    • Latches and Time Borrowing
    • Clock Gating Checks
      • Gating Check Model
      • Enable Timing
      • Gating Check Failures
      • Gating Signoff
    • Recovery, Removal and Async
    • Pulse Width and Min Period
  • Multi-Corner Multi-Mode Signoff16
  • OCV, AOCV, POCV and Variation16
  • Crosstalk and Noise16
  • ECO and Closure16
  • STA Debug Playbook16
  • STA Interview Prep26
  • Capstone Timing Signoff Lab4
Loading lesson

‹Clock Gating Checks
  1. Topics
  2. Static Timing Analysis
  3. Beyond Setup and Hold
  4. Clock Gating Checks
  5. Enable Timing

Part 4 · Beyond Setup and Hold · All levels

Enable Timing

The enable path is an ordinary data path timed against a gating check; its slack decides how late the enable logic may be.

On this page

    Why it matters

    Enable logic is often wide and slow (a decode of state and requests), and its timing is tight because it must settle in the clock's low phase, often half a period. Understanding this half-cycle budget explains why gating enables are among the first paths to fail.

    The budget

    example.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # Enable launched by a rising-edge flop; AND-gate setup is against the NEXT rising edge, i.e. a full period.
    # But if the enable flop is a negative-edge flop, the budget is half a period.
    T = 4.0
    cq, logic, setup = 0.40, 1.20, 0.10
    def slack(launch_edge, capture_edge):
        return (capture_edge - setup) - (launch_edge + cq + logic)
    full = slack(0.0, T)               # rising-edge launch, next rising edge
    half = slack(T / 2, T)             # falling-edge launch, next rising edge
    assert abs(full - 2.30) < 1e-9 and abs(half - 0.30) < 1e-9
    assert half < full
    print("PASS: enable slack full-cycle", round(full, 2), "half-cycle", round(half, 2))

    The same enable logic has 2.30 ns of slack with a rising-edge launch flop and only 0.30 ns when launched by a falling-edge flop, because the budget halves. The choice of launch edge for the enable is therefore a design decision with timing consequences, often made to satisfy the hold side of the check.

    Where the enable comes from

    Enable source

    Typical timing

    Rising-edge flop

    Full-cycle setup, but hold needs a minimum path longer than half a period, so it is rarely used with an AND gate

    Falling-edge flop

    Half-cycle setup; hold naturally safe

    Latch (ICG cell)

    Both setup and hold are checked against the rising clock edge at the cell; the internal latch holds the enable through the high phase, so a rising-edge launch gets a full cycle

    Combinational from inputs

    Defined by input delays; usually the tightest

    What the review looks for

    • Enable paths are checked with the half-cycle relationship explicit where the launch is the opposite edge.

    • Enable logic depth is bounded by the gating budget, with margin.

    • ICG cells are used where possible: their built-in latch converts a half-cycle problem into a simpler check.

    Common pitfall

    Adding logic to an enable late in the design. The half-cycle budget leaves little room; a small decode added at the end can fail many gates at once.

    Interview

    Explain why integrated clock gating cells are preferred: they hold the enable through the clock's high phase and are characterised for the check.

    Check yourself Why does the falling-edge launch have only 0.30 ns slack in the example?

    Its launch is half a period before the capturing rising edge, so the available time is T/2 = 2.0 ns less setup, and the 0.40 + 1.20 = 1.60 ns path leaves 0.30 ns.

    Related topics

    • Gating Check Model

    • Next: Gating Check Failures

    Previous

    63 / 183

    Next: Gating Check Failures

    Up next

    Up nextGating Check Failures

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Gating Signoff