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
  • CDC/RDC Glossary
  • CDC/RDC Metrics Reference
  • CDC/RDC Interview Prep
  • CDC/RDC Signoff Cheatsheet
  • Clock Domains and Failure Modes8
  • Metastability and Synchronizers16
  • CDC Protocols and Handshakes16
    • Pulse Synchronizers
    • Handshake Protocols Across Domains
      • Four-Phase Req/Ack
      • Two-Phase Toggle
      • Valid/Ready Across Domains
      • Latency and Throughput
    • Async FIFO CDC
    • CDC Protocol Verification
  • Reconvergence and Gray Coding16
  • Reset Domain Crossing16
  • Architecture and Design Rules16
  • CDC Signoff Methodology24
  • RDC Signoff16
  • Debug and Case Studies11
  • CDC and RDC Interview Prep30
  • Capstone: Sign Off a Multi-clock Peripheral4
Loading lesson

‹Handshake Protocols Across Domains
  1. Topics
  2. CDC & RDC
  3. CDC Protocols and Handshakes
  4. Handshake Protocols Across Domains
  5. Valid/Ready Across Domains

Part 3 · CDC Protocols and Handshakes · All levels

Valid/Ready Across Domains

Why a plain valid/ready pair is not CDC-safe by itself, and what to put around it.

On this page

    Why it matters

    Valid/ready is the lingua franca of on-chip interfaces, so designers constantly ask whether a valid/ready pair can simply be wired across a clock boundary. The signoff answer is no: the protocol assumes source and destination sample the same values in the same cycle, which is exactly what a clock boundary does not guarantee. Crossing needs a wrapper that restores that assumption on each side.

    Why plain valid/ready fails

    A valid/ready transfer completes in the cycle both are high. Across clocks, valid from the source may be sampled as high in one destination cycle and low in the next while the source still means the same transfer; ready returning the other way has the same problem. The two sides can then disagree about whether a transfer happened: the source counts it, the destination never saw it, or the destination counts it twice. There is no single-bit synchroniser arrangement that fixes this, because the protocol's correctness depends on agreed single-cycle simultaneity.

    Wrapper

    What it does

    Use when

    Four-phase (or two-phase) handshake around the word

    Carries each transfer as an event with an acknowledge

    Occasional words: configuration, commands, status

    Async FIFO with valid/ready facades

    Source pushes on valid, destination pops to ready; full/empty become the back-pressure

    Streams and bursts at any sustained rate

    Request/acknowledge with credit counting

    Destination pre-grants N transfers; source counts down without waiting

    Steady streams where round-trip latency would stall

    What to put around it

    Keep valid/ready as the interface on each side, and put the clock boundary inside a wrapper: the source side accepts the word with its own synchronous valid/ready timing, the crossing (handshake or FIFO) moves it, and the destination side offers it with destination-clock valid/ready timing. Each side then sees an ordinary same-clock protocol, and the crossing inside is one of the reviewed structures from this section.

    What the checks look for

    A structural analysis generally flags any valid or ready signal crossing a domain without a handshake or FIFO wrapper as an unsynchronised or protocol-violating crossing. A reviewer asks where the boundary sits inside the wrapper and confirms that no ready path is combinational across the boundary: a combinational ready from the far clock domain reintroduces the simultaneity assumption the wrapper was meant to remove.

    Common mistakes

    Common pitfall

    Synchronising valid with a two-flop synchroniser and leaving ready as a same-clock signal. The transfer still completes on simultaneous high levels that the two clocks cannot agree on, so words are duplicated or dropped under phase drift.

    Interview

    Say it crisply: valid/ready assumes same-cycle agreement, clocks disagree, so wrap it. Then name the wrapper for words (handshake) and for streams (FIFO).

    Check yourself A designer synchronises valid through a 2FF and wires ready straight back across the boundary. Name two things wrong.

    First, the synchronised valid is delayed by two to three destination cycles, so source and destination disagree on which cycle the transfer happened in. Second, the combinational return of ready across the boundary is itself an unsynchronised crossing that can glitch or go metastable.

    Related topics

    • Four-phase req/ack

    • Async FIFO CDC

    Previous

    37 / 179

    Next: Latency and Throughput

    Up next

    Up nextLatency and Throughput

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Four-Phase Req/Ack