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
      • Release Order Across Domains
      • Reset Isolation
      • Async Reset Into Sync Logic
      • Power-On and Warm Reset
    • 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 Sequencing
  1. Topics
  2. CDC & RDC
  3. Reset Domain Crossing
  4. Reset Sequencing
  5. Reset Isolation

Part 5 · Reset Domain Crossing · All levels

Reset Isolation

Isolating the outputs of a domain while it is in reset so neighbours see safe values.

While a domain sits in reset, its outputs sit at their reset values, and those values travel into neighbours that may already be running. A neighbour can easily mistake a reset value for live data: a zeroed data bus looks like a valid word of zeros, and a deasserted handshake looks like an idle link inviting the next transfer.

Isolation puts a gate on each output of a domain held in reset, clamping it to a chosen safe value while the domain is down. The safe value is the one the neighbour already treats as idle: valid low, request low, data held or forced to a value the neighbour ignores while valid is low.

design.sv
1
2
3
4
5
// snippet
// Clamp each output to its idle value while the neighbour-facing
// isolate signal is asserted. The control comes from a live domain.
assign out_valid isolated_out_valid & ~isolate;
assign out_req   = isolated_out_req & ~isolate;

Rules for correct isolation

  • Assert isolation before the domain resets, and release it only after the domain has left reset and reached its idle state.

  • Drive the isolate control from logic that is not itself being reset; an isolate signal generated inside the isolated block defeats the purpose.

  • Choose safe values per signal with the neighbour's protocol in mind: clamping valid low is the usual case, and data buses need no clamp once they are qualified by a clamped valid.

  • Pair isolation with protocol tolerance where transfers can be interrupted mid-flight: isolation fixes the levels, the protocol rules fix the interrupted exchange.

Common pitfall

Isolating the data bus but not its valid bit is a classic half-fix: the neighbour still samples the clamped zeros as a real word. Isolate the qualifiers first, then decide whether the data needs clamping too.

Check yourself A domain in reset drives zeros on its data bus into a running neighbour with valid stuck high from the reset state. What does the neighbour see, and what is the fix?

A stream of valid zero words that were never sent. Clamp valid low while the domain is isolated so the neighbour treats the bus as idle, regardless of the data values.

Check yourself Why must the isolate control come from outside the domain being isolated?

Because logic inside that domain is itself in reset and cannot be trusted to assert or hold the control. The signal that guards a reset domain must live in a domain that stays alive.

Related topics

  • Release order across domains

  • RTL: Reset Domain Crossing

Previous

68 / 179

Next: Async Reset Into Sync Logic

Up next

Up nextAsync Reset Into Sync Logic

Sign in to save progress

Practice this lessonReport an error

See also

  • Power-On and Warm Reset