Walk through the complete shutdown and wake-up sequence of a switchable domain.
From PDVerse Low-Power Physical Design Mentor Guide · pdVerse Mentor Guide
Short Answer
Shutdown runs stop clocks, assert isolation, save state, then switch off and wait for the acknowledge. Wake-up is the mirror: switch on and wait for the acknowledge, restore state, release isolation, then restart clocks, and swapping any two neighbouring steps either corrupts retained state or lets unknown values reach always-on logic.
Technical Explanation
- Stop clocks first: registers must be quiet before SAVE, or a clock edge can change state while it is being copied.
- Isolate before save and power-off: outputs are clamped before any can glitch or float, so always-on logic never sees X.
- SAVE with power still on: the shadow latch copies the register while the primary rail is stable.
- Switch off, wait for ack: the switch acknowledge is the only proof the rail actually moved; the controller waits on it in both directions.
- Wake: switch on and wait for ack, RESTORE, release isolation, then start clocks.
- Swaps that break: RESTORE before ack loads garbage, releasing isolation before RESTORE exposes reset values, and clocks before RESTORE overwrite retained state.
- Legacy form (still accepted by ICC2/PT):
set_isolation_control(UPF) andset_retention_control(UPF) carry the same signals outside the strategies.
# Conceptual (not a tool command)
clk_en_cop = 0
ise = 1
cop_save = 1
cop_save = 0
pse = 0
wait pse_ack == 0
pse = 1
wait pse_ack == 1
cop_restore = 1
cop_restore = 0
ise = 0
clk_en_cop = 1
# [UPF] mychip.upf
set_isolation ISO_COP -domain PD_COP -applies_to outputs -clamp_value 0 -isolation_supply SS_AON -isolation_signal ise -isolation_sense high
set_retention RET_COP -domain PD_COP -retention_supply SS_AON -save_signal {cop_save high} -restore_signal {cop_restore high}
create_power_switch SW_COP -domain PD_COP -input_supply_port {SWIN VDD1p0} -output_supply_port {SWOUT VDD1p0_SW} -control_port {CTRL pse} -ack_port {ACK pse_ack} -on_state {ON SWIN {CTRL}}What To Check
- Every control signal (clk_en_cop, ise, cop_save, cop_restore, pse) comes from always-on logic in PD_MYCHIP.
- Isolation rises before SAVE and before pse falls, and falls only after RESTORE.
- The controller waits on pse_ack, not a fixed delay, in both directions.
- Clocks restart only after isolation is released.
Command Checks & Actions
set_isolation ISO_COP -domain PD_COP -applies_to outputs -clamp_value 0 -isolation_supply SS_AON -isolation_signal ise -isolation_sense highTie isolation to ise, active high, powered from SS_AON
set_retention RET_COP -domain PD_COP -retention_supply SS_AON -save_signal {cop_save high} -restore_signal {cop_restore high}Tie save and restore to the controller signals
create_power_switch SW_COP -domain PD_COP -input_supply_port {SWIN VDD1p0} -output_supply_port {SWOUT VDD1p0_SW} -control_port {CTRL pse} -ack_port {ACK pse_ack} -on_state {ON SWIN {CTRL}}Define the switch with its enable and acknowledge
check_lp -stage designCheck control connections and states, e.g. ISO_CONTROL_CONN and CORR_CONTROL_STATE
report_violations -app LPList sequencing-related static violations
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): Power-aware simulation of 100 sleep and wake cycles shows no X on PD_MYCHIP inputs and every retained flop correct.
- Suspicious (illustrative): The order is right, but on wake the controller uses a fixed 500 ns delay instead of pse_ack.
- Hard stop: ise falls before cop_restore, or check_lp reports ISO_CONTROL_CONN on ISO_COP.
Common Mistake
The Trap: Releasing isolation in the same cycle as RESTORE to shave wake time.
- For that cycle the always-on side sees the flops' pre-restore values, and a reset-state valid bit can fire a spurious interrupt.
What The Interviewer Is Testing
- Can you give the full order and say what breaks for each swapped pair?
- Do you know why the acknowledge, not a timer, gates RESTORE?
Follow-up Question & Model Response
"Why wait for the acknowledge instead of a fixed delay?"
Candidate Model Response: Ramp time depends on process, voltage, temperature and the length of the switch chain, so any fixed delay is either wasteful or sometimes too short. The acknowledge comes from the end of the chain, so it changes only after the last switch has turned. Waiting on it ties RESTORE to the real rail instead of a guess. Many controllers still add a small fixed margin after the acknowledge.
Practical Example
Design Scenario: (illustrative) MYCHIP's power controller U_PC shuts PD_COP down: clk_en_cop falls, ise rises one cycle later, cop_save pulses for 2 cycles, then pse falls and U_PC waits about 300 ns for pse_ack to fall. On wake, pse rises and pse_ack returns after 1.2 µs, cop_restore pulses for 2 cycles, ise falls and clk_en_cop rises. Total wake is about 1.3 µs. Swapping the restore pulse and the ise release lets PD_MYCHIP see U_COP/dbg_valid at its reset value for one cycle.
Low-Power & UPF Handbook
Master Low-Power VLSI & Multivoltage Design
Read the complete low-power guide library covering power domains, level shifters, isolation clamps, state retention, and UPF signoff verification.

Continue practising