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
    • Reset Deassertion CDC
    • Reset Sequencing
    • RDC Structural Checks
    • Reset Debug Playbook
      • Symptoms to Causes
      • Glitchy Reset Release
      • Partial Reset States
      • Debug Checklist
  • 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

‹Reset Debug Playbook
  1. Topics
  2. CDC & RDC
  3. Reset Domain Crossing
  4. Reset Debug Playbook
  5. Glitchy Reset Release

Part 5 · Reset Domain Crossing · All levels

Glitchy Reset Release

Debugging a spurious reset pulse or glitchy release by reading the unsynchronised-release waveform.

A spurious reset pulse and a glitchy release look identical downstream: flops cleared mid-operation, protocol state torn, symptoms far from the cause. The debugging question is always where the edge came from: the genuine source asserting, logic on the reset net reshaping it, or a release landing inside a recovery/removal window.

This lesson reuses the release waveform from the deassertion topic (imported from the same generated waves file, not a second copy). Read it again here with debugger's eyes: the point is what distinguishes a clean release from a hazardous one on the lanes.

How to read it for debug: the clock has a 10 ns period with rising edges at 5, 15, 25 ns and so on, one slot per edge. The reset asserts at 2 ns, releases at 34 ns (1 ns before the edge at 35 ns), re-asserts at 50 ns, and releases cleanly mid-cycle at 60 ns.

  • Slots 0 to 2 show the asserted baseline: both flops at 0. Any slot where a flop reads 1 while reset is asserted means the reset never reached it.

  • Slot 3 is the smoking gun for release timing: q_a at 1 with q_b still at 0 after the same release edge. Two identical flops disagreeing for exactly one cycle is the signature of a near-edge release, not of a data bug.

  • Slots 6 to 7 show the control case: the mid-cycle release wakes both together. If a suspect release produces this shape, timing is innocent and the search moves to gating logic or the source.

Separating the three causes

  1. If the disagreement shape appears and moves with the release instant (present at some instants, absent at others), the release path is asynchronous: add or repair the synchroniser.

  2. If a short assertion appears that no source drove, probe the reset net for combinational inputs: an enable or mode bit changing mid-operation re-asserts through the gate.

  3. If the source itself pulsed, the fix is at the source (debounce, qualify, or hold the condition), not in the receiving domain.

Common pitfall

Chasing the disagreeing flop's data inputs wastes the afternoon: by the time the symptom is visible, the data path is behaving correctly on incorrect starting state. Confirm the reset shape first; touch the data path only after the release is proven clean.

Check yourself Two flops disagree for exactly one cycle after every release at one instant, but never when the release is moved half a cycle. What is the cause?

Release timing: the first instant lands in a recovery/removal window while the shifted one does not. The release needs a synchroniser; the data path is fine.

Check yourself A short reset assertion appears that the reset source never drove. Where do you look?

At combinational logic on the reset net between source and flops: a changing enable or mode input is re-asserting reset through the gate. Remove the logic.

Related topics

  • Symptoms to causes

  • Deassertion hazards

Previous

76 / 179

Next: Partial Reset States

Up next

Up nextPartial Reset States

Sign in to save progress

Practice this lessonReport an error

See also

  • Debug Checklist
clkarst_nq_aq_b
Simulation output revisited: near-edge release wakes the two flops a cycle apart; mid-cycle release wakes them together