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

  • RTL Foundations36
  • Combinational Design25
  • Sequential Design27
  • FSM & Control27
  • Timing & Clocking39
  • Reset & CDC34
    • Reset Architecture
      • Reset Is a System Contract
      • Async Assert, Sync Deassert
      • Reset Tree Planning
      • Reset Sequencing and POR Controller
      • What a Reset Costs
    • Metastability and Synchronisation
    • Asynchronous FIFO
    • CDC Protocols
    • Reset Domain Crossing
    • CDC Verification
  • Memory & Buses57
  • Advanced RTL28
  • Senior & Interview76
  • Glossary and Notation
Loading lesson

‹Reset & CDC
  1. Topics
  2. RTL Design
  3. Reset & CDC
  4. Reset Architecture

Part 6 · Reset & CDC · Intermediate

Reset Architecture

Reset architecture: async assert with sync release, per-domain synchronisers, and ordered power-up release.

  • 5topics
  • 5lessons

Topics in this section

  1. 1Reset Is a System Contract1 lesson
  2. 2Async Assert, Sync Deassert1 lesson
  3. 3Reset Tree Planning1 lesson
  4. 4Reset Sequencing and POR Controller1 lesson
  5. 5What a Reset Costs1 lesson
On this page

    Resets put every domain in a known state and release each domain on its own clock. The rule is assert asynchronously and release synchronously, one synchroniser per domain in a planned order.

    Reset source feeding a sequencer and three per-domain reset synchronisers.
    One reset source, a sequencer, and a synchroniser in front of every clock domain.

    Lessons in this topic

    5 lessons, about 27 min

    1. 1Reset Is a System ContractYou can state the four parts of the reset contract and choose between asynchronous and synchronous reset for a given flop.4 min
    2. 2Async Assert, Sync DeassertYou can draw the reset synchroniser, name the asynchronous pin and the tied input, and explain why release takes at least two clock edges.4 min
    3. 3Reset Tree PlanningYou can plan a reset tree with one source, one synchroniser per clock domain, one settled reset per domain and a table of which reset drives which block.4 min
    4. 4Reset Sequencing and POR ControllerYou can describe the power-up sequence, set HOLD and GAP, and gate each block's release on a readiness acknowledgement from the block it depends on.5 min
    5. 5What a Reset CostsYou can decide which registers need a reset, measure the reset cost of a block from a Yosys stat report, and show in simulation that unreset data qualified by a valid bit is safe.10 min

    Interview

    “Why asynchronous assert and synchronous release?” Assertion must work even when the clock is not running (power-up, clock failure). Release must be aligned to the clock, otherwise a flop can see reset deassert at the wrong moment and go metastable.

    Check yourself Which half of the reset needs the clock to work: asserting it or releasing it?

    Releasing. With an asynchronous-assert design the reset takes effect without a clock; the release is passed through flops so that it happens right after a clock edge.

    Revision sheet

    The whole topic on one page, taken from each lesson's Remember box. Read it before an interview, or print it.

    Reset Is a System Contract

    • After reset every flop that matters has a known value. Reset asserts without a clock, and releases only when each domain's clock is stable.

    • Reset only control state, valid bits and FSM state. Datapath registers that are written before use need none, and fewer reset flops means a smaller tree.

    • Never mix styles on one flop by accident: a synchronous reset in a gated-clock domain does nothing while the clock is off.

    Rule of thumb: reset what must be known at start-up, and nothing else.

    Async Assert, Sync Deassert

    • Recovery and removal are the setup and hold of reset release. A release at a random instant can violate either one.

    • Assertion needs no clock. Release takes two edges of the domain's own clock (STAGES must be 2 or more), so two domains release at different times.

    • Only the synchroniser sees the raw arst_n. Every other sink uses the domain's qualified reset.

    Rule of thumb: assert asynchronously, release synchronously.

    Reset Tree Planning

    • One synchroniser per clock domain, in that domain's clock. Never share one between clocks.

    • Distribute one settled reset per domain through a buffered tree. Do not synchronise the raw reset twice for interacting logic.

    • Name the contract: rst_n means already synchronised to this module's clock; a raw asynchronous reset is arst_n and stops at the synchroniser.

    Rule of thumb: releasing two domains on the same cycle of their own clocks is not releasing them at the same time.

    Reset Sequencing and POR Controller

    • The sequencer outputs are registered release requests, not local reset completion. With HOLD = 8 and GAP = 4 they rise at lock + 9, +13 and +17.

    • For a true A-before-B dependency, A raises a readiness level after reset and initialisation. It is synchronised back, and B's request waits for it.

    • A synchronous !pll_lock branch reacts only when the reference clock ticks. Route clock faults through the asynchronous reset path.

    Rule of thumb: an ordered request is not an ordered release; wait for the acknowledgement.

    What a Reset Costs

    • Reset what decides behaviour: FSM state, valid bits, counters and pointers that gate outputs, software-visible registers.

    • Data written before it is read, and qualified by a reset valid bit, needs no reset. Its x in simulation is real but unread.

    • A synchronous reset still loads the reset net: it moves from reset pins to a gate in every D path. Only removing resets shrinks the tree.

    Rule of thumb: reset what decides; let a reset valid bit guard what carries.

    Practise it

    • Mini project: a two-clock block with a handshake, an async FIFO and a hostile test

    • Practice question: Reset strategies in RTL: synchronous, asynchronous and gated

    • Practice question: Why reset matters in FSMs and how it is handled

    • Practice question: Debugging metastability from asynchronous reset deassertion

    • Code lab: Build a reset synchroniser

    • Code lab: Build a pipeline register stage

    • Interview: run a mock interview on this topic

    PreviousNext: Reset Is a System Contract

    Up next

    Up nextReset Is a System Contract

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Metastability and Synchronisation
    • Asynchronous FIFO
    • CDC Protocols