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
      • Why Deassertion Is the Hazard
      • Reset Synchroniser Structure
      • Recovery and Removal
      • Deassertion Hazards
    • Reset Sequencing
    • RDC Structural Checks
    • Reset Debug Playbook
  • 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 Deassertion CDC
  1. Topics
  2. CDC & RDC
  3. Reset Domain Crossing
  4. Reset Deassertion CDC
  5. Why Deassertion Is the Hazard

Part 5 · Reset Domain Crossing · All levels

Why Deassertion Is the Hazard

Asynchronous assertion is safe; deassertion near a clock edge is a recovery/removal problem that leaves flops metastable on release.

A reset has two edges and only one of them is dangerous. Assertion drives every flop's asynchronous clear at once, independent of any clock, so all flops in the domain land in their reset state together. Nothing samples anything at that moment, so there is no timing window to violate.

Deassertion is the opposite: one edge in time, seen by every flop, with no relationship to the clock. A flop whose release lands too close to its clock edge can go metastable exactly like a data input that changes inside the setup/hold window. The design then wakes up with some flops out of reset and others still resolving, which is an inconsistent starting state that no plain RTL simulation, without timing or metastability modelling, will show.

Assertion

Deassertion (release)

Needs a clock

No: the clear is asynchronous

Yes: release must be timed to the clock

Timing windows

None

Recovery and removal around the clock edge

Failure mode

Essentially none

Metastable flops, staggered wake-up across the domain

Fix

Route the reset to every flop that needs it

A reset synchroniser per domain

What staggered wake-up looks like

Imagine two control flops released by the same raw reset. The release lands just before a clock edge: the first flop resolves in time and captures its post-reset value, while the second is still resolving and holds its reset value for one more cycle. A state machine built from those two flops now sits in a state its designer never drew, for example with valid high while the FSM still believes it is in IDLE.

Common pitfall

A testbench that releases reset exactly on a clock edge, or long after one, never exercises this hazard. Real releases land anywhere in the cycle, so a release test must use many instants across the cycle, not one tidy one.

Interview

“Why is reset release harder than reset assertion?” Assertion needs no clock and violates no window; release is an asynchronous edge against every flop's clock, so it needs recovery/removal timing and a synchroniser, otherwise flops wake up metastable or a cycle apart.

Check yourself Two flops share one raw asynchronous reset. After release, one holds its reset value for an extra cycle. What went wrong?

The release landed inside one flop's recovery/removal window: that flop resolved late (or metastably) while the other came out cleanly. The fix is a synchronised release, covered in the next lesson.

Check yourself Why does assertion escapemetastability even though it is also asynchronous?

Assertion forces the flop through its asynchronous clear path rather than racing the clock: the flop is held in reset regardless of clock edges, so no sampling window is involved. The race only exists at release, when the flop must resume clocked operation.

Related topics

  • Reset synchroniser structure

  • RTL: Reset Architecture

Previous

63 / 179

Next: Reset Synchroniser Structure

Up next

Up nextReset Synchroniser Structure

Sign in to save progress

Practice this lessonReport an error

See also

  • Recovery and Removal
  • Deassertion Hazards