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 Signoff Methodology24
  • RDC Signoff16
  • Debug and Case Studies11
  • CDC and RDC Interview Prep30
    • CDC/RDC Whiteboard Framework
    • CDC/RDC Framework Drills
    • Scenario: Metastability Bug
    • Scenario: Metastability Escape in Silicon Bring-up
    • Scenario: Async FIFO Pointer Mismatch
      • The Scenario
      • Diagnosis
      • Fix and Guard
    • Scenario: Waiver Debate
    • Scenario: RDC Waiver Under Tapeout Pressure
    • CDC/RDC Interview Q&A Bank
    • CDC/RDC Interview Q&A Bank (Expanded)
  • Capstone: Sign Off a Multi-clock Peripheral4
Loading lesson

‹Scenario: Async FIFO Pointer Mismatch
  1. Topics
  2. CDC & RDC
  3. CDC and RDC Interview Prep
  4. Scenario: Async FIFO Pointer Mismatch
  5. Diagnosis

Part 10 · Interview Prep · All levels

Diagnosis

Walking the pointer path: encoding, synchroniser, comparison placement, and reset alignment.

On this page

    Diagnose in crossing order, from the writer to the flag. Each check is cheap and each has a known failure it finds.

    Check 1: is the crossed pointer really Gray?

    Read the write-pointer logic: the value crossing into the read domain must change by exactly one bit per write step, which is the Gray property in The One-Bit-Change Rule. A binary counter, or a Gray counter with a non-power-of-two range handled naively, changes several bits at once under bursts, and the read domain samples torn values. This is the waived-warning trap: a Gray-code warning waived without transition proof is a confession, not a disposition.

    Check 2: the synchroniser chain on the pointer.

    Two flops minimum per bit, no logic between them, all in the read clock. Fewer stages, shared stages, or a "fast" single stage under burst rates each turn pointer latency into flag error. Reference: Gray Pointers in Signoff.

    Check 3: where empty is computed.

    Empty must be generated in the read domain from the local read pointer and the synchronised write pointer, never by combining crossings from both directions in one comparison. A comparison that mixes a fresh write crossing with a fresh read crossing reconverges two skews and glitches exactly like this scenario. Reference: What Is Reconvergence.

    Check 4: reset alignment of both pointers.

    If the write and read pointers release from reset on different cycles or in different values, the FIFO starts in a state that reads as empty, or as full, until the pointers lap into agreement. Under some reset sequences the symptom appears; under others it does not, which matches "only sometimes". Reference: FIFO Reset and Tool Checks.

    The mechanism, stated

    Assumption: bursty writes move the pointer fastest when synchroniser latency matters most. Mechanism: the read-domain empty comparison samples a write pointer that is stale or torn, momentarily equals the read pointer, and asserts empty. Trade-off preview: each candidate fix costs differently, which the next lesson prices. Evidence: a pointer-transition assertion plus a structural report on the pointer crossing.

    Common pitfall

    Stopping at check 1 because the pointer "is Gray". Gray encoding is necessary but not sufficient: the synchroniser, the comparison placement, and reset alignment each independently produce this exact symptom.

    Check yourself The pointer is proven Gray and the synchroniser is legal, but false empty persists under bursts only. Which check remains most suspicious?

    Reset alignment or comparison placement: burst-only transient errors with correct encoding and synchronisers point at stale-pointer latency seen by a misplaced comparison, or at pointers that started misaligned and only agree after lapping.

    Related topics

    • Next: Fix and Guard

    • Where Gray fails

    Previous

    161 / 179

    Next: Fix and Guard

    Up next

    Up nextFix and Guard

    Sign in to save progress

    Practice this lessonReport an error