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

AboutRoadmapCareersInternshipsFAQContactPrivacyTerms
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
      • Latch Timing Model
      • Time Borrowing Worked
      • Borrowing Chains
      • Latch Signoff Rules
    • Clock Gating Checks
    • 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

←Latches and Time Borrowing
  1. Topics
  2. Static Timing Analysis
  3. Beyond Setup and Hold
  4. Latches and Time Borrowing
  5. Latch Timing Model
On this page

    Part 4 of 11, lesson 1 of 16Part 4 of 11/Beyond Setup and Hold/Lesson 1 of 16All levels

    Latch Timing Model

    A latch has an opening edge, a closing edge and a transparent window; data arriving inside it passes through with the latch's delay.

    Why it matters

    Latches appear in hand-crafted datapaths, clock gating cells, and some synchronisation structures. Their timing is not a single capture instant, so reports speak about time borrowed and time given. Reading them requires the three-edge view: the opening edge, the closing edge, and the transparent time between.

    The model

    Term

    Meaning (positive-level latch)

    Opening edge

    The clock rising edge: the latch becomes transparent

    Closing edge

    The clock falling edge: the latch holds the value

    Transparent window

    The high phase: duration = pulse width (50% of the period for a symmetric clock)

    Setup check

    Data must arrive before the closing edge less setup time

    D to Q

    While transparent, the output follows D after the latch's delay

    Hold check

    Data must not change just after the closing edge

    example.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # Positive latch, period 10 ns, 50% duty: opens at 0, closes at 5. Setup 0.1.
    open_edge, close_edge, setup = 0.0, 5.0, 0.1
    window = close_edge - open_edge
    max_arrival = close_edge - setup
    assert window == 5.0 and abs(max_arrival - 4.9) < 1e-9
    # a signal arriving at 3.2 passes through transparently: it borrows 3.2 ns from the next stage
    arrival = 3.2
    borrowed = max(0.0, arrival - open_edge)
    assert abs(borrowed - 3.2) < 1e-9 and arrival <= max_arrival
    print("PASS: transparent window", window, "ns; maximum arrival", round(max_arrival, 2), "ns; borrowed", borrowed, "ns")

    The window is 5 ns; data may arrive up to 4.9 ns after the opening edge. A signal arriving 3.2 ns after the opening edge simply passes through, and downstream timing starts from 3.2 ns (plus the D-to-Q delay), not from the opening edge. That is borrowing: the next stage has 3.2 ns less than it would if the latch were an edge-triggered flop at the opening edge. A positive-level latch fed by a rising-edge flop on the same edge is a same-phase relationship: its capture is the next opening edge, not the opening edge it shares.

    What the review looks for

    • Every latch is intentional and listed; unintended latches from RTL (incomplete assignments) are design errors found by lint.

    • Transparent window and duty cycle are in the clock definition; asymmetric duty changes the borrowing limit.

    • The report distinguishes the opening-edge path (no borrowing) from the borrowing case.

    Treating a latch like a flop in constraints. Its setup is against the closing edge and the downstream path begins at the data arrival time if the latch is transparent; assuming a launch at the opening edge is optimistic in that case.

    Be able to say what changes in STA for a latch: the capture edge moves to the closing edge, and a late arrival becomes a launch time for the next path.

    Check yourself A latch's clock has a 30% duty cycle on a 10 ns period. What is its transparent window?

    3 ns (30% of the period), so the latest data arrival is 3 ns after opening less the setup time.

    Related topics

    • Next: Time Borrowing Worked

    Previous

    58 / 183

    Next: Time Borrowing Worked

    Up next

    Up nextTime Borrowing Worked

    Sign in to save progress

    Practice this lessonPrevious lessonReport an error

    See also

    • Borrowing Chains
    • Latch Signoff Rules