How do you confirm every crossing that needs isolation actually has it?
From PDVerse Low-Power Physical Design Mentor Guide · pdVerse Mentor Guide
Short Answer
Check functional and DFT crossings separately. For functional paths, run check_mv_design -isolation (ICC2), which checks isolation strategies, isolation cells and the isolation of the netlist, then trace anything it flags with report_mv_path (ICC2) to see which strategy applies and why a cell is missing or unassociated. Scan stitching adds crossings the RTL UPF never listed, so after scan insertion run check_isolation_coverage -dft_signals (ICC2), which reports DFT paths with an isolation violation that no strategy covers.
Technical Explanation
- Coverage is not existence: a strategy on PD_COP proves nothing by itself; its element list or source/sink filters can miss the one port that crosses.
- Functional check:
check_mv_design -isolation(ICC2) restricts the full MV check to isolation strategy and isolation cell rules; run it aftercreate_mv_cells(ICC2). - Tracing:
report_mv_path -net(ICC2) shows strategy applicability and association on one path;-all_not_associatedlists every isolation or LS cell no strategy owns. - DFT scope:
check_isolation_coverage(ICC2) requires-dft_signalsand analyzes only paths through scan, test-mode and wrapper signal pins, never plain functional ports. - DFT options:
-fromfilters driver domains,-toload domains,-clamp_value 0|1|latch|alllimits which strategies count, and-ignore_unimplemented_strategiescounts only implemented ones. - Default coverage: a strategy still waiting to be implemented counts as coverage, and so does one whose isolation supply cannot drive the loads.
- What breaks: an uncovered PD_COP output floats when VDD1p0_SW drops, so the always-on load sees an unknown value and can draw crowbar current.
# [ICC2] icc2_shell
create_mv_cells
check_mv_design -isolation
report_mv_path -net U_COP/irq_out
report_mv_path -all_not_associated
check_isolation_coverage -dft_signals -from PD_COP -to {PD_MYCHIP PD_CPU}
check_isolation_coverage -dft_signals -ignore_unimplemented_strategiesWhat To Check
- Every PD_COP output that reaches an on domain has an isolation cell owned by a strategy.
- The clamp value of each covering strategy suits its load while PD_COP is off.
report_mv_path -all_not_associated(ICC2) returns no isolation cells.- Scan crossings added by stitching are clean under
check_isolation_coverage -dft_signals(ICC2).
Command Checks & Actions
check_mv_design -isolationCheck isolation strategies, isolation cells and isolation of the netlist
report_mv_path -net U_COP/irq_outShow which strategy applies to a flagged crossing and why a cell is missing or unassociated
report_mv_path -all_not_associatedList isolation or level-shifter cells that no strategy owns
check_isolation_coverage -dft_signals -from PD_COPList DFT paths from PD_COP with an isolation violation no strategy covers
check_isolation_coverage -dft_signals -ignore_unimplemented_strategiesCount only implemented strategies as coverage on DFT paths
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative):
check_mv_design -isolation(ICC2) is clean on all 64 PD_COP outputs, and the DFT coverage run after scan insertion reports no violating paths. - Suspicious (illustrative): Functional checks are clean, but
-ignore_unimplemented_strategiesshows two scan crossings: a DFT strategy never turned into cells. - Hard stop: U_COP/irq_out to PD_CPU has no strategy and no isolation cell: U_CPU sees a floating input every time PD_COP powers down.
Common Mistake
The Trap: Treating "PD_COP has an isolation strategy" as proof that every crossing is isolated.
- An element list written for 63 outputs misses the 64th, which floats in silicon the first time PD_COP switches off.
What The Interviewer Is Testing
- Do you separate strategy defined, crossing covered and cell implemented?
- Do you know which check covers functional crossings and which covers DFT paths?
Follow-up Question & Model Response
"Why can coverage look clean before scan insertion and fail after it?"
Candidate Model Response: Scan stitching punches new ports between domains that the RTL UPF never listed. A scan_out from PD_COP into a PD_MYCHIP chain is a new crossing no element-based strategy mentions. check_isolation_coverage -dft_signals (ICC2) finds those paths and suggests set_dft_isolation (ICC2) strategies. You either add strategies and rerun insert_dft (ICC2), or add them incrementally and apply them with commit_dft_isolation (ICC2).
Practical Example
Design Scenario: (illustrative) PD_COP has 64 outputs and ISO_COP_OUT lists 63 of them. After create_mv_cells (ICC2), check_mv_design -isolation (ICC2) flags U_COP/irq_out into PD_CPU, and report_mv_path -net U_COP/irq_out (ICC2) shows no strategy applies to it. You extend the strategy with set_isolation ISO_COP_OUT -domain PD_COP -elements {U_COP/irq_out} -update (UPF), keeping clamp 0 because irq_out is active-high, rerun create_mv_cells (ICC2), and the check comes back clean. After scan insertion, check_isolation_coverage -dft_signals -from PD_COP (ICC2) reports zero violating DFT paths.
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