Module 88 min

CDC Verification and Common Mistakes

How CDC is checked, and the traps to avoid

CDC bugs do not show up in normal timing analysis and often hide from plain simulation, so they are caught with dedicated methods. This lesson covers how, plus the mistakes that cause most real CDC failures.

How CDC is verified

  • Structural CDC analysis: a tool scans the netlist for every asynchronous crossing and checks that each one has a recognized synchronizer.
  • Metastability injection: simulation deliberately randomizes the timing of synchronizer outputs to expose logic that wrongly assumes a clean value.
  • Assertions and protocol checks: verify handshakes complete and gray-coded pointers only ever change one bit at a time.

The mistakes that cause real failures

MistakeWhy it failsFix
Bus synchronized bit by bitBits resolve independently, value is corruptGray code or a handshake
Logic between the two sync flopsFirst flop loses its settling timeKeep the two flops back to back
Synchronizing a narrow pulseDestination clock steps over itToggle-based pulse synchronizer
Reconverging synchronized signalsIndependently synchronized bits realign wronglySynchronize once, then fan out
No reset synchronizerMetastable flop on reset releaseAsync assert, sync de-assert

The reconvergence trap

A subtle one: if you synchronize two related signals through separate synchronizers and then combine them in logic, they may arrive on different cycles and produce a glitch or wrong decision. The rule is to synchronize a signal once and then use the single synchronized copy everywhere, rather than synchronizing the same information through multiple paths.

Pro tip

When you reach a crossing, name the technique out loud: single control bit means two-flop synchronizer; a pointer means gray code; a data stream means async FIFO; an occasional word means handshake; a pulse means pulse synchronizer; reset means reset synchronizer. Matching the structure to the situation is the whole skill of CDC.

Watch out

Do not rely on simulation alone to sign off CDC. A normal simulation uses ideal zero-delay flops and will happily show a broken design working. Always run structural CDC analysis with metastability modeling before you trust a multi-clock design.