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
  • Reconvergence and Gray Coding16
  • Reset Domain Crossing16
  • Architecture and Design Rules16
    • CDC-Aware Partitioning
      • Choosing Domain Boundaries
      • Register at the Boundary
      • Minimising Crossings
      • Crossing Inventory
    • Clock Gating and Muxing
    • Interface and IP Rules
    • Quasi-Static Signals and Configuration
  • CDC Signoff Methodology24
  • RDC Signoff16
  • Debug and Case Studies11
  • CDC and RDC Interview Prep30
  • Capstone: Sign Off a Multi-clock Peripheral4
Loading lesson

‹CDC-Aware Partitioning
  1. Topics
  2. CDC & RDC
  3. Architecture and Design Rules
  4. CDC-Aware Partitioning
  5. Minimising Crossings

Part 6 · Architecture and Design Rules · Intermediate

Minimising Crossings

Fewer, wider, well-defined crossings; grouping related signals into one protocol.

On this page

    Ten related signals crossing as ten synchronisers are ten chances to mix old and new values, ten constraint entries, and ten rows to keep correct. The same ten signals crossing as one handshake with a data bus are one protocol with one proof. Fewer crossings are not just tidier; each removed crossing removes a whole failure mode.

    Consolidation patterns

    Instead of...

    Cross...

    Several event pulses in the same direction

    One toggle or handshake carrying an event code; the destination decodes it.

    Data plus a separate valid pulse

    One handshake where the data is held stable and the request is the valid.

    A counter mirrored across the boundary

    Gray code for a monotonically stepping pointer, or a handshake for a value that can jump (see do not synchronise buses bit by bit).

    Scattered status flags from one block

    One status word captured with a single load pulse.

    A continuous wide stream

    One asynchronous FIFO (see async FIFO).

    Consolidating scattered crossing signals into one protocol.
    Five scattered crossings consolidated into one handshake carrying data and status.

    Examples

    A DMA engine needs to tell the control domain that a transfer finished, which descriptor completed, and whether an error occurred. Three pulses (done, descriptor index changed, error flag) can arrive skewed. One handshake returning a completion word with the descriptor number and an error bit cannot skew: the word is captured whole when the request arrives.

    A sensor block streams 16-bit samples with a data-ready strobe into a slower domain. A per-sample pulse plus a synchronised bus tears under skew. One small asynchronous FIFO takes the stream; the ready strobe disappears entirely because FIFO-not-empty is the ready signal.

    What the review looks for

    The reviewer groups the inventory by source-destination pair and asks of each group: could these cross as one protocol? Every surviving singleton needs a reason, such as genuinely independent single-bit flags with no timing relationship.

    Common pitfall

    Adding “just one more flag” beside an existing handshake instead of extending the handshake word. The new flag now has its own skew relative to the handshake it was meant to accompany. Extend the protocol; do not parallel it.

    Interview

    “You see eight control signals crossing between two domains. What do you do?” Ask which are related, propose one handshake or FIFO carrying them as a group, and explain what breaks if they cross separately (skew, torn combinations, duplicated events).

    Check yourself A request, an acknowledge, and a 32-bit address cross between two domains, each through its own synchroniser. The address sometimes arrives one transaction late. Why?

    The three signals have independent synchroniser delays, so the destination can pair a new request with the old address. The address must be held stable and captured by the handshake, not synchronised on its own.

    Related topics

    • Crossing Inventory

    • RTL: CDC handshakes

    Previous

    81 / 179

    Next: Crossing Inventory

    Up next

    Up nextCrossing Inventory

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Choosing Domain Boundaries