clock domain crossing

Clock Domain Crossing (CDC) — the challenge of safely transferring signals between logic driven by different clocks, where metastability can cause unpredictable failures.

The Problem

  • When a signal crosses from clock domain A to clock domain B, it may change exactly when domain B's clock samples it
  • Result: Metastability — the flip-flop enters an unstable state between 0 and 1
  • Metastable output can propagate incorrect values downstream

Solutions

  • 2-Flip-Flop Synchronizer: Signal passes through two back-to-back flip-flops in the receiving domain. First FF may go metastable, but resolves before second FF samples it. For single-bit signals
  • Gray Code Counter: For multi-bit bus crossing — only one bit changes at a time. Used for FIFO pointers
  • Async FIFO: Dual-clock FIFO with Gray-coded pointers crossing domains. Standard for data buses
  • Handshake Protocol: REQ/ACK signaling between domains for control signals
  • MUX Synchronizer: For multi-bit data with a valid/enable signal

CDC Verification

  • Static CDC analysis tools identify all domain crossings
  • Flag missing synchronizers, multi-bit crossings, reconvergence issues
  • Tools: Synopsys SpyGlass CDC, Cadence Conformal

CDC bugs are among the hardest to detect in simulation — they depend on exact clock phase relationships and can be intermittent.

Go deeper with CFSGPT

Get AI-powered deep-dives, save terms, and run advanced simulations — free account.

Create Free Account