What does report_mv_path show, and when do you use it?
From PDVerse Low-Power Physical Design Mentor Guide · pdVerse Mentor Guide
Short Answer
report_mv_path (ICC2) traces one multivoltage path through a pin, net or cell and shows every MV cell on it with its supply, drivers, sinks, strategy and power domain. For a level shifter or isolation cell that failed to insert or associate, it prints the reason. You reach for it when check_mv_design (ICC2) flags a cell or net and you need to know why.
Technical Explanation
- Entry point: pass
-cell,-netor-pin; the report follows that path from driver to loads, isolation by default, shifters with-level_shifter. - Per MV cell: supply, inputs, outputs, drivers, sinks, matching strategy and power domain, so you see which strategy owns each ISO or LS.
- Failure reasons: for an LS or ISO cell that was not inserted or not associated, the report says why; the one-line check message does not.
- Supply source tags: a related supply printed with (Literal Supply), (Domain) or (CSN) came from a literal-supply port attribute, the domain primary, or the PG net connection.
- -all_heterogeneous_paths lists every driver whose loads have different related supplies. All other options are ignored when you use it.
- Timing in the flow: the guide runs it after placement, routing or optimization plus
check_mv_design(ICC2), when the MV cells exist to report. - For level-shifter failures along a whole global net, follow up with
analyze_mv_design -level_shifter -through(ICC2).
# [ICC2] icc2_shell
check_mv_design
report_mv_path -cell U_COP/DATA_UPF_ISO
report_mv_path -net U_COP/dbg_out
report_mv_path -all_heterogeneous_paths
analyze_mv_design -level_shifter -through U_COP/dbg_outWhat To Check
- Each ISO or LS cell on the path names the strategy you wrote for that boundary.
- Driver and load related supplies match the domains: VDD1p0_SW for PD_COP, VDD0p9 for PD_CPU.
- The isolation cell supply is always-on (SS_AON), not the switched PD_COP rail.
- No failure reason appears for a cell the check reported clean.
Command Checks & Actions
check_mv_designFind the violation to trace, for example MV-071 (isolation cell not associated with any strategy)
report_mv_path -cell U_COP/DATA_UPF_ISOShow supply, drivers, sinks, strategy and domain for one MV cell
report_mv_path -net U_COP/dbg_outTrace the isolation path through a net (the default type; add -level_shifter for shifters)
report_mv_path -all_heterogeneous_pathsList drivers whose loads have different related supplies
analyze_mv_design -level_shifter -through U_COP/dbg_outExplain why level-shifter insertion failed on that global net
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): Every MV cell on U_COP/dbg_out shows a strategy name, SS_AON as isolation supply and a load in PD_CPU.
- Suspicious (illustrative): The isolation cell supply shows (Domain) and resolves to PD_COP: it would switch off with the domain it guards.
- Hard stop: The report prints an association failure for DATA_UPF_ISO, matching MV-071: no strategy owns the cell, so nothing guarantees its clamp.
Common Mistake
The Trap: Reading only the one-line check_mv_design (ICC2) message and editing the UPF by guesswork.
- You change the wrong strategy, the real crossing stays unowned, and the next run reports the same MV-071.
What The Interviewer Is Testing
- Do you know which ICC2 command explains an MV cell, as opposed to one that only counts violations?
- Can you read a related-supply source tag and say where the supply came from?
Follow-up Question & Model Response
"When would you use -all_heterogeneous_paths instead of -net?"
Candidate Model Response: Use it when one driver fans out to loads on different supplies and you rely on source- or sink-based isolation. The -net form shows one path, while -all_heterogeneous_paths lists every driver whose loads disagree on related supply, with the boundary ports and load pins for each. That tells you where a source or sink strategy will and will not insert cells. It ignores every other option you pass with it.
Practical Example
Design Scenario: (illustrative) After placement, check_mv_design (ICC2) warns MV-071 on U_COP/DATA_UPF_ISO. report_mv_path -cell U_COP/DATA_UPF_ISO (ICC2) shows the cell sits on dbg_out from PD_COP (VDD1p0_SW) toward U_CPU in PD_CPU (VDD0p9) but matches no strategy, because ISO_COP_OUT lists only the functional dout ports, not this debug port. You add dbg_out to the strategy element list so the tool can associate the existing cell, then rerun check_mv_design (ICC2) to confirm MV-071 is gone.
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