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
    • CDC Tool Flow
    • CDC Constraints and STA
    • CDC Waiver Policy
    • CDC Review Gate
    • CDC Signoff Dashboard
    • Formal and Simulation CDC Verification
      • Formal CDC Checks
      • Metastability Injection
      • Gate Level and ECO Checks
      • Regression Strategy
  • RDC Signoff16
  • Debug and Case Studies11
  • CDC and RDC Interview Prep30
  • Capstone: Sign Off a Multi-clock Peripheral4
Loading lesson

‹Formal and Simulation CDC Verification
  1. Topics
  2. CDC & RDC
  3. CDC Signoff Methodology
  4. Formal and Simulation CDC Verification
  5. Metastability Injection

Part 7 · CDC Signoff Methodology · Advanced

Metastability Injection

Dynamic checks that inject random old-or-new values at synchroniser inputs: what they prove and what they cannot.

On this page

    Logic simulators do not reproduce real metastability: a flop model resolves cleanly where silicon dithers. Metastability injection closes part of that gap deliberately — when source data changes near a destination sampling edge, the check replaces the sampled value with a random choice of old or new. The protocol must survive that randomisation; if it does, the design tolerates late resolution.

    How the check works

    1. Identify the sampling points: the first flop of each synchroniser, the capture flop of each handshake, the Gray pointer registers.

    2. Detect the vulnerable window: source data changing within the setup-hold neighbourhood of the sampling edge.

    3. On a window hit, force the sampled value to a random old-or-new choice with an explicit seed or pattern, so the run is reproducible.

    4. Run the normal regression on top: protocols, scoreboards, and assertions all observe the randomised behaviour.

    What it proves — and what it cannot

    Proves

    Cannot prove

    The protocol tolerates either resolution of a window hit

    Real metastability timing or frequency

    No X-optimism hides a torn value: the random choice explores both outcomes

    Electrical behaviour: resolution time, oscillation, mid-rail hold

    Back-to-back hits and bursts are survivable, if the stimulus covers them

    Anything about stimulus never applied — coverage still rules

    Choosing where to inject

    Injection is aimed, not blanket: every synchroniser input, every handshake capture flop, and every Gray pointer register gets it, while ordinary single-domain logic does not. The inventory from structural analysis provides the target list, which is another reason injection results are only meaningful on the same setup and revision as the structural run. Injecting everywhere wastes cycles; injecting from a stale target list misses the crossings that moved.

    The key sentence for every review: injection proves the protocol is insensitive to which way a race resolves, not that races are rare. Rarity comes from the synchroniser and its settling time; correctness-under-race comes from the protocol, and injection tests exactly that half.

    Warning

    A fixed seed that always resolves old (or always new) tests only one outcome and can pass a broken protocol. Vary the seed or the pattern across regressions, and confirm both resolutions actually occurred by counting window hits and their outcomes.

    Check yourself An injection regression passes with zero window hits recorded. What does that prove?

    Nothing about metastability tolerance: the vulnerable condition never occurred, so the randomisation never engaged. The stimulus must first be shown to hit the windows.

    Check yourself Why must the seed or pattern be explicit and the hits counted?

    Reproducibility and honesty: an explicit seed replays the run, and hit counts prove both resolutions were exercised rather than assumed.

    Related topics

    • Formal CDC Checks

    • Regression Strategy

    • RTL: CDC Verification

    Previous

    116 / 179

    Next: Gate Level and ECO Checks

    Up next

    Up nextGate Level and ECO Checks

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Regression Strategy