How is an always-on control network constructed, and what is the automatic inference rule for always-on cells?
From PDVerse Low-Power Physical Design Mentor Guide, part of the pdVerse Mentor Guide
Short Answer
Always-on logic is whatever must keep working inside a shutdown domain: retention cells, isolation cells, and the save, restore and isolation-enable paths that reach them. ICC2 builds it automatically, but only if the target library has always-on buffers and inverters marked with the always_on attribute. It then marks as always-on logic any buffer, inverter or tie cell whose supply differs from the primary supply of the domain it sits in.
Technical Explanation
- What must stay on: control nets from an always-on domain into a shutdown domain, such as SRE and ISE, plus feedthroughs across a shutdown area.
- Library gate: always-on optimization runs only when the target library has always-on buffers and inverters marked
always_on. - Supply choice: an inserted buffer takes the driver or load supply; its backup pin may use a local bias supply that is at least as on.
- If neither the driver nor the load supply is available in a feedthrough domain, the tool marks the net dont_touch instead of buffering it.
- Inference rule:
is_always_on_logicis true for any buffer, inverter or tie cell whose supply differs from its domain primary. - RTL buffers:
mv.upf.ao_legalize_gtech_buf(ICC2) makes preinstantiated GTECH buffers dual-rail where needed;create_mv_cells -always_on(ICC2) covers all buffers and inverters. - What breaks: a single-rail buffer on SRE inside PD_COP dies at shutdown, so the restore pulse never reaches the retention flops.
# [ICC2] icc2_shell
report_mv_lib_cells -always_on -verbose
create_mv_cells -always_on -level_shifter
get_cells -hierarchical -filter is_always_on_logic==true
check_mv_designWhat To Check
- The target library has always-on buffers and inverters with the
always_onattribute. - Every buffer on SRE, ISE and PSE inside PD_COP is dual-rail with its backup pin on VDD1p0.
- Feedthrough nets across VA_COP are buffered, or left dont_touch on purpose.
- The MV-055 conversion count matches the buffers you expected.
Command Checks & Actions
report_mv_lib_cells -always_on -verboseLists the always-on buffers, inverters and tie cells the libraries provide
create_mv_cells -always_on -level_shifterLegalizes buffers and inverters as always-on together with shifter insertion
get_cells -hierarchical -filter is_always_on_logic==trueLists every cell the tool treats as always-on logic
check_mv_designReports always-on paths still driven by cells on a switched supply
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): MV-055 reports 2 GTECH buffers converted from single-rail to dual-rail, matching the two on SRE.
- Suspicious (illustrative): A feedthrough net across VA_COP is dont_touch because neither the driver nor the load supply is available there.
- Hard stop: A single-rail buffer powered by VDD1p0_SW sits on SRE inside PD_COP.
Common Mistake
The Trap: Hand-instantiating a plain buffer on the SRE path in RTL and marking it dont_touch.
- AO legalization will not touch it, so it loses power with PD_COP and restore never reaches the retention flops.
What The Interviewer Is Testing
- Whether you know what makes logic always-on and that the library gates it.
- Whether you can confirm AO results with cell attributes and MV-055 messages.
Follow-up Question & Model Response
"Why does ICC2 sometimes put a regular buffer on an always-on feedthrough net?"
Candidate Model Response: Regular buffers cost less area and congestion than dual-rail ones. By default ICC2 uses one when the primary supply of the feedthrough area is more on than the sink supply and is off only when the source supply is off. Then the buffer is never off while the signal matters. Otherwise it needs an always-on buffer.
Practical Example
Design Scenario: (illustrative) SRE runs 500 ยตm from U_PC in PD_MYCHIP across VA_COP to retention flops in PD_COP, through two RTL GTECH buffers. With mv.upf.ao_legalize_gtech_buf (ICC2) true, create_mv_cells (ICC2) converts both to dual-rail AO_BUF_X2 cells with backup pins on VDD1p0, and MV-055 reports 2 conversions. The is_always_on_logic query then returns both cells, and the restore pulse reaches every retention flop in PD_COP after wake-up. AO_BUF_X2 is an illustrative name.
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.
Offline PDF Bundle
Want all 1109 questions offline?
Get the complete 4-book PDF bundle (PnR, STA, MMMC, Low Power) with a clickable table of contents - no ads, no internet needed.

Continue practising