ExpertQuestion 48 of 50Source: Synopsys IC Compiler II Multivoltage User Guide: Specifying Retention Strategies, Checking Zero-Pin Retention Registers; Synopsys VC LP User Guide: Zero Pin Retention Cells

After wake-up, retained registers come back with wrong values. How do you debug it?

From PDVerse Low-Power Physical Design Mentor Guide · pdVerse Mentor Guide

Short Answer

Wrong values after wake-up almost always come from the control sequence or the retention supply, not the flop. Check in order that the retention supply stayed on, that RESTORE came after the primary rail was stable and before clocks restarted, that save and restore polarity match the cells, and, for zero-pin retention cells, that check_lp -stage design (VCLP) reports no RET_CLAMP_INVERT.

Technical Reference DiagramAfter wake-up, retained registers come back with wrong values. How do you debug it?
Two waveform panels on one time axis: correct sequence (pse rises, VDD1p0_SW ramps, pse_ack rises at 1.2 µs, then cop_restore pulses, then clk_en_cop rises) against broken sequence where cop_restore pulses while VDD1p0_SW is at 0.6 V, before pse_ack, with the retained Q marked red as wrong.

Technical Explanation

  • Retention supply: the shadow latch runs on the retention supply; if that supply is switched with PD_COP, saved state is gone after sleep.
  • RESTORE too early: restoring before VDD1p0_SW settles writes the saved value into a master stage that is not yet reliably powered.
  • Clock during restore: a clock edge during or just after restore overwrites the restored value with whatever sits on the D input.
  • Polarity: set_retention (UPF) with -save_signal {cop_save high} must match the controller; an inverted sense saves at the wrong time or never.
  • Zero-pin retention: these cells retain while clock is clamped low and reset clamped high; an odd number of inverters after a NOR-style clamp gives RET_CLAMP_INVERT.
  • Reports: report_mv_cells -retention_clamp (ICC2) lists zero-pin clamp cells; check_mv_design (ICC2) checks clamp values and that clamps run on an always-on supply.
  • Legacy form (still accepted by ICC2/PT): set_retention_control (UPF) carrying -save_signal and -restore_signal, with -retention_power_net on the strategy.
# [UPF]  mychip.upf
set_retention RET_COP -domain PD_COP -retention_supply SS_AON -save_signal {cop_save high} -restore_signal {cop_restore high}
# [ICC2]  icc2_shell
report_mv_cells -retention
report_mv_cells -retention_clamp -verbose
check_mv_design -retention
# [VC LP]  vc_static_shell
check_lp -stage design
report_violations -app LP

What To Check

  • RET_COP uses SS_AON, which is on in every state where PD_COP is off.
  • In simulation, cop_restore rises after pse_ack and while clocks are still stopped.
  • Save and restore sense in the UPF match the controller and the library pins.
  • Zero-pin retention clamp paths have an even inverter count and clamps on an always-on supply.

Command Checks & Actions

UPF (design.upf)set_retention RET_COP -domain PD_COP -retention_supply SS_AON -save_signal {cop_save high} -restore_signal {cop_restore high}

Modern strategy with always-on retention supply and active-high controls

ICC2 (icc2_shell)report_mv_cells -retention

List retention cells and their strategy

ICC2 (icc2_shell)report_mv_cells -retention_clamp -verbose

Show zero-pin retention clamp cells in detail

ICC2 (icc2_shell)check_mv_design -retention

Check retention strategies and cells

VC LP (vc_static_shell)check_lp -stage design

Static check including zero-pin clamp tags such as RET_CLAMP_INVERT

VC LP (vc_static_shell)report_violations -app LP

List the retention violations found

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): Power-aware simulation restores all 1,200 retained flops across 50 sleep cycles, and check_lp -stage design is clean.
  • Suspicious (illustrative): Restores pass, but cop_restore rises only 5 ns after pse_ack with no agreed margin.
  • Hard stop: RET_CLAMP_INVERT on a U_COP clock clamp path, or RET_COP's retention supply resolves to VDD1p0_SW.

Common Mistake

The Trap: Debugging the retention flop cell first because the symptom shows up on its Q output.

  • The cause is almost always upstream, so hours go into library checks while the controller's RESTORE timing stays wrong.

What The Interviewer Is Testing

  • Do you debug the sequence and supplies before blaming the retention cell?
  • Do you know the zero-pin retention clamp rule and how VC LP reports it?

Follow-up Question & Model Response

"How do you tell a restore-too-early bug from a clock-during-restore bug in simulation?"

Candidate Model Response: Look at when the wrong value appears. If Q is wrong right at the restore pulse and the primary rail was still ramping, the restore came too early. If Q is correct after restore and changes on the first clock edge, the clock started before the inputs were valid or before RESTORE finished. Power-aware simulation shows both clearly, because corrupted values appear as X until the rail is valid.

Practical Example

Design Scenario: (illustrative) PD_COP wakes and 40 of its 1,200 retained flops come back as 0. Simulation shows cop_restore rising about 280 ns after pse, with VDD1p0_SW at 0.6 V and pse_ack still about 900 ns away (it arrives 1.2 µs after pse). The controller started restore from the switch enable instead of the acknowledge. Moving cop_restore to 10 ns after pse_ack fixes all 40. Separately, check_lp -stage design reports RET_CLAMP_INVERT on one zero-pin retention clock path where CTS added a single inverter; replacing it with a buffer clears the violation.

Low-Power & UPF Handbook

Read the complete low-power guide library covering power domains, level shifters, isolation clamps, state retention, and UPF signoff verification.

Low-Power VLSI & UPF Handbook — nine chaptersLow-Power & UPFDomains, isolation, retention, and multivoltage UPF. →