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
    • MTBF & Synchronizer Math
    • Two-Flop Synchronizers in Practice
    • Multi-bit CDC Hazards
      • Bus Tearing
      • Why Bitwise Sync Fails
      • Skew and Capture Window
      • Safe Patterns Overview
    • Synchronizer Selection Guide
  • CDC Protocols and Handshakes16
  • 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

‹Multi-bit CDC Hazards
  1. Topics
  2. CDC & RDC
  3. Metastability and Synchronizers
  4. Multi-bit CDC Hazards
  5. Bus Tearing

Part 2 · Metastability and Synchronizers · All levels

Bus Tearing

What happens when several bits change together and each bit reaches the destination clock with its own skew.

On this page

    A 4-bit binary counter stepping from 0111 (7) to 1000 (8) changes all four bits at once. Each bit travels its own wire with its own delay, and each bit's synchroniser samples and resolves on its own. If the destination clock samples mid-transition, some bits are caught old and some new, and the word read out is neither 7 nor 8.

    The 0111 to 1000 example

    At the 7-to-8 step the destination edge lands after bits 2:0 have arrived with the new value 000 but while bit 3 is still presenting the old 0 through its extra register stage. The first-stage flops therefore capture 0000: three bits new, the top bit old. One period later the second stage delivers that 0, a value the counter never held, and downstream logic acts on it before the crossing settles to 8.

    The waveform below is simulation output for exactly this case: a scripted counter stepping up through 6, 7, 8 and 9 into per-bit synchronisers, where bit 3 passes through one extra destination-clocked register modelling a full slow period of extra wire delay, sampled by a 20 ns clock. The one-period skew is a deliberate exaggeration to make the tear deterministic; real skew is picoseconds, but the old/new mixing it causes is identical.

    How to read it: cnt is the source counter. q1 is the first synchroniser stage and sync the second, one stage behind. The four-bit step from 7 to 8 tears: q1 reads 0 at the fifth sample and sync repeats that 0 at the sixth sample before both settle to 8. The steps that do not change bit 3 cross cleanly, because the delayed bit still presents its true value.

    What the tools check

    Structural analysis flags any multi-bit bus crossing whose bits each carry their own synchroniser with no protocol around it. Review triage treats a torn word as a data-corruption bug, not a marginal MTBF concern: no number of stages per bit removes it.

    Common pitfall

    Tearing is intermittent by nature: it needs a transition to land near a sampling edge with the wrong skew split. A testbench that never aligns them sees clean crossings and proves nothing. Signoff relies on the structural rule, not on simulating the tear away.

    Interview

    “Why can't you synchronise each bit of a bus?” Walk through 0111 to 1000, show the mixed capture, and name the value the destination reads that was never sent. Then offer the safe patterns from the last lesson of this topic.

    Check yourself A testbench crosses a counter bit by bit one thousand times and never sees a torn value. Is the design safe?

    No. The tear needs a particular alignment of transition, skew, and sampling edge; a thousand clean samples only show the alignment never happened in simulation. The structure is still wrong.

    Check yourself In the waveform, why do the steps 6 to 7 and 8 to 9 cross cleanly while 7 to 8 tears?

    Those steps change a single bit, so there is nothing to mix: the one changing bit resolves old or new and the word is always a genuine counter value. Tearing needs two or more bits changing together.

    Related topics

    • Why Bitwise Sync Fails

    • Safe Patterns Overview

    Previous

    23 / 179

    Next: Why Bitwise Sync Fails

    Up next

    Up nextWhy Bitwise Sync Fails

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Skew and Capture Window
    • Safe Patterns Overview
    sclkcnt6789q1567089sync0567089
    Simulation output: a 4-bit counter sampled through skewed per-bit synchronisers, showing a transient torn value