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
  • Memory & Buses57
  • Advanced RTL28
  • Senior & Interview76
    • Low-Power RTL Hub
      • Clock gating done right
      • Safe gating style
      • Power domains, isolation and retention
      • UPF intent every RTL lead should know
    • DFT and Scan Hub
    • Physical Awareness Hub
    • Waveform Debug Hub
    • STA and ECO Hub
    • RTL-to-Implementation Closure
    • DFT-Ready RTL
    • Capstone: Resilient Streaming Peripheral
    • Principal Design Review
    • Senior RTL Interview Questions & Model Answers
  • Glossary and Notation
Loading lesson

‹Low-Power RTL Hub
  1. Topics
  2. RTL Design
  3. Senior & Interview
  4. Low-Power RTL Hub
  5. Power domains, isolation and retention

Part 9 · Senior · Senior

Power domains, isolation and retention

Power domains with clamped isolation crossings, quiesce handshake, and retention.

On this page

    Why this matters

    Release isolation before an OFF domain is stable and X floods the live logic. The order of isolate, switch, restore and release is an RTL duty even when tools insert the cells.

    After this lesson you can: choose a clamp value for each crossing, order the isolation and power-switch steps, and decide which state needs retention.

    Split the design into domains

    Complex SoCs split logic into power domains so always-on logic can survive while optional domains power down.

    Crossings between domains need isolation and sometimes level shifters. Even where insertion is automated, RTL must carry clear boundary intent and clean handshake behavior.

    An always-on controller drives the power switch, the isolation enable and the save and restore pulses for a switchable domain

    Read it from the power controller outwards: it is the only block that must stay powered to switch the other domain off and on.

    • Switch enable connects or removes VDD_SW, the supply of everything inside the dashed box.

    • iso sits where the accel outputs enter live logic. With iso_en high it drives a fixed value, so a dying domain cannot send X onward.

    • Save and restore move context into a register that keeps the always-on supply, so it survives while VDD_SW is off.

    Clamp every crossing

    Signals leaving an OFF domain must not float into live logic. An isolation cell clamps each crossing to a chosen safe value while isolation holds.

    Direction

    Rule

    Reason

    OFF to ON

    Clamp to 0 or 1 while isolated

    Blocks X from spreading into control logic

    ON to OFF

    Pass through, level-shift where voltages differ

    The sink is dark, but the return path must stay clean

    Watch clamped_out: it follows off_data until iso_en rises, then it stays 0.

    • Slot 0: iso_en is 0, off_data is 1, and the output is 1.

    • Slot 1: off_data is 0, and the output follows to 0.

    • Slot 2: iso_en is 1, and the output clamps to 0 although the input is 1.

    • Slot 3: the input floats (x), and the output stays 0.

    • Slot 4: the input is still x, and the output is still 0.

    • Slot 5: iso_en is 0, the input is 1, and the output follows again.

    Quiesce, then switch

    Power switches move only after the boundary is quiet. RTL owns this order even when tools insert the cells.

    1. Drain traffic and park every interface in idle.

    2. Assert isolation on each OFF-to-ON crossing.

    3. Open the switch only after isolation acknowledges.

    4. On wake, restore power and wait for synchronized power-good; complete retention restore and reset/clock readiness while isolation remains asserted; only then release isolation and resume traffic.

    Retention is used for state that must survive power collapse (context pointers, security state, protocol epoch). Separate retained and reconstructable state early in architecture.

    design.v
    1
    2
    3
    4
    5
    6
    7
    // snippet: retention save and restore idiom (partial; the always-on side owns the saved copy)
    always_ff @(posedge clk_aon or negedge rst_aon_n) begin
      if (!rst_aon_n)
        ctx_ptr_q <= '0;
      else if (save_ctx_i)
        ctx_ptr_q <= ctx_ptr_d;
    end

    Common mistakes

    Common pitfall

    Releasing isolation before the domain is stable lets X flood the live logic. Assert isolation before the switch opens, and release it only after power and reset settle.

    Interview

    Likely question: “An active-low reset crosses into an OFF domain. Clamp 0 or clamp 1.”

    • Clamp 0 holds an active-low reset asserted and can be correct while a domain powers up and initializes.

    • Clamp 1 keeps reset deasserted and may be required for retained state that must not be cleared. It is not universally safe either.

    • Rule: derive polarity and release timing from the reset/retention contract. Check cell supplies, power states and reset-domain crossings; do not choose solely from signal polarity.

    Check yourself Isolation is up and the off-domain input floats to X. What does a clamp-0 output read, and why?

    It reads 0. The cell selects the constant while iso_en holds, so the X never reaches live logic.

    Check yourself Which state earns retention: a context pointer or a pipeline data register?

    The context pointer. It cannot be rebuilt after collapse, while the pipeline register refills naturally once traffic resumes.

    Testbench

    Clamp-0 and clamp-1 cells with the testbench that proves pass-through, clamp, X blocking, and release.

    iso_clamp0.sv
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    `timescale 1ns/1ps
    module iso_clamp0 (
      input logic iso_en, off_data,
      output logic clean
    );
      assign clean = iso_en ? 1'b0 : off_data;
    endmodule
    
    module iso_clamp1 (
      input logic iso_en, off_data,
      output logic clean
    );
      assign clean = iso_en ? 1'b1 : off_data;
    endmodule
    

    Remember

    • Every OFF-to-ON crossing needs an isolation cell clamped to a safe value.

    • Quiesce, isolate, then open the switch. On wake, release isolation last, after power, restore and reset are ready.

    • Retain only state that cannot be rebuilt, such as context pointers; pipeline registers refill by themselves.

    Rule of thumb: isolate before power drops, and release isolation only when the domain is ready.

    Keep going

    • Practice: Design strategy for isolation cell enable control

    • Practice: Isolation cells and boundary wrapper, with X-containment

    • Code lab: Isolation cell model

    • Interview: run a mock interview on this topic

    Related topics

    • UPF intent every RTL lead should know

    Previous

    276 / 350

    Next: UPF intent every RTL lead should know

    Up next

    Up nextUPF intent every RTL lead should know

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Clock gating done right
    clkiso_enoff_dataclamped_out
    A clamp-0 cell holding its output while the off-domain input floats