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
    • Reading a CDC Report
      • Anatomy of a Report
      • Triage Order
      • Grouping and Root Causes
      • False Clean and Noise
    • Classic Bug Anatomy
    • Case Studies
  • CDC and RDC Interview Prep30
  • Capstone: Sign Off a Multi-clock Peripheral4
Loading lesson

‹Reading a CDC Report
  1. Topics
  2. CDC & RDC
  3. Debug and Case Studies
  4. Reading a CDC Report
  5. Grouping and Root Causes

Part 9 · Debug and Case Studies · Advanced

Grouping and Root Causes

Reports list findings; designs have causes. Group entries by the single change that removes them before fixing anything.

On this page

    A report with forty findings rarely contains forty problems. One unsynchronised net fanning out to eight destinations is eight listings and one missing synchroniser. One wrong clock-grouping entry can paint a whole interface. Grouping means collecting listings under the single change that removes them, then fixing the cause once.

    How to group

    Sort the per-class listings by source signal and by source clock, not by destination. Entries sharing a source net or a source block are one candidate group. Then ask for each group what single change removes all of them: a synchroniser on the shared source, a corrected clock definition, one protocol around a bus. If no single change covers a group, split it until one does.

    A worked grouping example

    The numbers below are fabricated and illustrative, but the arithmetic is exact: 31 + 9 + 5 + 2 equals 47, so four causes explain all forty-seven listings.

    Diagram
    Illustrative grouping (fabricated, recompute the sums: 31 + 9 + 5 + 2 = 47):
    
      47 listings in 4 rule classes
      -> group A (31 listings): one 8-bit configuration bus plus 23 status bits
         fanning out of a single unsynchronised source register: 1 cause
      -> group B (9 listings): one generated clock missing from the setup,
         misclassifying 9 synchronous paths as crossings: 1 cause
      -> group C (5 listings): combinational enables ahead of 5 synchronisers
         in one control block: 1 cause
      -> group D (2 listings): two genuinely independent single-bit crossings
         needing synchronisers: 2 causes
    
      Result: 47 listings, 5 fixes (one synchroniser, one clock definition,
      one enable rework, two synchronisers).

    Group B is the instructive one: nine listings, zero design changes, one setup line. Engineers who fix listings instead of causes would have touched nine paths; the grouping engineer touches the setup and re-runs.

    What the review looks for

    A review does not want forty-seven disposition lines; it wants the grouping table above with one owner and one evidence pointer per group. Unexplained residue is the red flag: listings that fit no group are where the real bugs hide, so the grouping is done when every listing has a group, not when the big groups are pleasant.

    Common pitfall

    Grouping by destination block instead of by source hides shared causes: eight destinations of one bad source look like eight block problems. Always regroup by source before concluding the design is widely broken.

    Check yourself Twelve unsynchronised-crossing listings share one source register. How many synchronisers does the fix need, and where?

    One, on the shared source before the fanout: synchronising each destination separately would work but costs twelve synchronisers for a one-synchroniser problem.

    Check yourself After grouping, three listings fit nowhere. Good news or bad news?

    Bad news, usefully labelled: the residue is either three independent real problems or a group whose cause you have not found yet. Either way it is the next place to look, not a rounding error.

    Related topics

    • Triage Order

    • When to Waive

    • Glossary

    Previous

    137 / 179

    Next: False Clean and Noise

    Up next

    Up nextFalse Clean and Noise

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Anatomy of a Report