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
    • Gray Code Crossing
    • Reconvergence Analysis
    • Multi-bit Crossing Strategies
    • Reconvergence Debug
      • Reading a Reconvergence Report
      • Worked Reconvergence Example
      • Fix and Recheck
      • Regression Guards
  • 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

‹Reconvergence Debug
  1. Topics
  2. CDC & RDC
  3. Reconvergence and Gray Coding
  4. Reconvergence Debug
  5. Reading a Reconvergence Report

Part 4 · Reconvergence and Gray Coding · All levels

Reading a Reconvergence Report

Triage steps on a generic, clearly illustrative report excerpt.

On this page

    A reconvergence report names a meeting point and two histories. Triage means reconstructing the design story behind those two paths: what source moment they share, how far apart they arrive, and what the consumer does with the mixture. The excerpt below is fabricated and labelled illustrative; real reports differ in layout but carry the same content.

    Illustrative excerpt

    Diagram
    illustrative report excerpt, fabricated for triage practice (not tool output)
    finding R-014  rule: reconvergence of synchronised signals
      convergence: u_dma_ctrl.cmd_en  (AND of start_d and mode_d)
      path A: src.start -> u_sync_start (2 stages) -> start_d, arrival cycle +2
      path B: src.mode  -> u_sync_mode  (3 stages) -> mode_d,  arrival cycle +3
      skew: up to 1 destination cycle between the arrivals
      consumer: cmd_en launches a DMA descriptor fetch

    Triage steps

    1. Read the consumer first. cmd_en launches a fetch: a stale-mode mixture corrupts the descriptor, so this finding is high severity regardless of probability.

    2. Reconstruct the shared source moment. Both paths start from the same source launch (start with its mode); the question is which mixtures the one-cycle skew can show.

    3. Enumerate the reachable mixtures. With arrivals a cycle apart, the consumer can see new-start with old-mode and, on release edges, old-start with new-mode. Check each against what the consumer tolerates.

    4. Decide fix or justify. A mixture the consumer cannot tolerate means restructure (next lessons); a provably benign mixture needs the insensitivity argument written down, not a silent waiver.

    5. Record the evidence with the finding: protocol excerpt, waveform, or model run, so the next reviewer does not repeat the triage.

    Common pitfall

    Do not triage from the synchroniser depths alone. Two stages versus three stages suggests the skew, but routing and downstream logic move arrivals too. Confirm the skew at the actual convergence gate, which is what the report names.

    Check yourself The excerpt's consumer were a statistics counter instead of a DMA launch. How would triage change?

    The severity drops: a one-cycle miscount is usually benign and bounded, so an insensitivity argument (error bounded to one count per launch) may close the finding honestly. The steps stay the same; only the consumer analysis changes the verdict.

    Related topics

    • Next: worked example

    • Why tools flag it

    Previous

    59 / 179

    Next: Worked Reconvergence Example

    Up next

    Up nextWorked Reconvergence Example

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Fix and Recheck
    • Regression Guards