How are nets with loads in several domains, or nets driven by constants, isolated?
From PDVerse Low-Power Physical Design Mentor Guide · pdVerse Mentor Guide
Short Answer
When one driver fans out to loads on different supplies, a port-based strategy cannot say which branch needs isolation, so you describe it by supplies: -source, -sink and -diff_supply_only on set_isolation (UPF) put cells only on branches whose load supply differs from the driver. Nets driven by literal constants count as real drivers with a related supply, and ICC2 can skip isolation where the constant already equals the clamp value.
Technical Explanation
- Heterogeneous fanout: a PD_COP output drives loads in PD_COP, PD_MYCHIP and PD_CPU; only the branches into always-on domains need a clamp.
- Supply filters: -source and -sink match driver and load supply sets; -diff_supply_only true isolates only where the two differ.
- Location fanout: puts a cell at each qualifying load; the ICC2 MV UG allows it only with a -source, -sink or -diff_supply_only filter.
- Precedence: explicit -elements, instance and domain-name strategies all outrank -source/-sink ones, which outrank diff_supply_only true, which outranks false.
- Literal constants: a 1'b0 or 1'b1 is a valid driver; its related supply comes from set_port_attributes -literal_supply, otherwise the primary of the domain it sits in.
- Skipping needless cells: with relax_constant_corruption_for_macro_inputs_and_primary_outputs true, a constant that equals the clamp value into a macro input or primary output gets no cell.
- Legacy form (still accepted by ICC2/PT):
set_isolation_control(UPF) carries the isolation signal and sense separately; the legacy -isolation_power_net is not allowed with -location fanout.
# [UPF] mychip.upf
set_isolation ISO_COP_DIFF -domain PD_COP -applies_to outputs -diff_supply_only true -clamp_value 0 -isolation_signal ise -isolation_sense high -location fanout
# [ICC2] icc2_shell
set_design_attributes -attribute relax_constant_corruption_for_macro_inputs_and_primary_outputs true
create_mv_cells
check_mv_design -isolation
report_mv_path -all_heterogeneous_pathsWhat To Check
- For each crossing net, the driver supply and every load supply.
- Isolation lands only on branches whose load supply differs from the driver.
- Constant-driven nets that cross a boundary have a known related supply.
- No older domain-wide strategy still covers the same ports.
Command Checks & Actions
set_isolation ISO_COP_DIFF -domain PD_COP -applies_to outputs -diff_supply_only true -clamp_value 0 -isolation_signal ise -isolation_sense high -location fanoutIsolate only branches whose load supply differs, placing cells at the loads
set_design_attributes -attribute relax_constant_corruption_for_macro_inputs_and_primary_outputs trueSkip isolation on constants that already equal the clamp value
create_mv_cellsInsert the isolation cells the strategies call for
check_mv_design -isolationCheck isolation strategies and cells after insertion
report_mv_path -cell U_COP/done_isoShow the strategy, supply and loads of one inserted cell
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): U_COP/done drives 3 loads and gets exactly 2 isolation cells, on the PD_MYCHIP and PD_CPU branches.
- Suspicious (illustrative): The PD_COP counter branch also has a cell, so an older domain-wide strategy is still winning somewhere.
- Hard stop:
check_mv_design-isolation reports an unprotected branch into PD_MYCHIP.
Common Mistake
The Trap: Keeping an old domain-wide ISO_COP strategy with -applies_to outputs next to the new supply-based one.
- Strategies implied by the domain name outrank -source, -sink and -diff_supply_only strategies in the ICC2 order, so the old one still isolates every branch, internal loads included.
What The Interviewer Is Testing
- Can you isolate by supply relationship instead of by port list?
- Do you know where supply-based strategies sit in the precedence order?
Follow-up Question & Model Response
"Why does -location fanout need a source, sink or diff_supply_only filter?"
Candidate Model Response: Fanout places a cell at each load instead of once at the domain boundary, so the tool must decide per branch which loads need one. The supply filters give that per-branch answer; without them every load would look the same. The ICC2 MV UG also bars -isolation_power_net with fanout, while parent and self locations accept it. If you mix -elements with a supply filter, you must set the derived_iso_strategy attribute first, and fanout is then the only legal location.
Practical Example
Design Scenario: (illustrative) U_COP/done in PD_COP (VDD1p0_SW) drives a counter in PD_COP, the interrupt controller in PD_MYCHIP (VDD1p0) and a status flop in PD_CPU (VDD0p9). A domain-wide output strategy would place one cell at the PD_COP boundary and slow the internal counter path too. ISO_COP_DIFF with -diff_supply_only true and -location fanout places 2 clamp-0 cells, one before each always-on load, and leaves the counter path alone. A second net, U_COP/mode, is tied to 1'b0 in RTL and feeds a hard macro in PD_MYCHIP; with the relax attribute set and the clamp at 0, it gets no cell.
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