IntermediateQuestion 41 of 60Source: Synopsys IC Compiler II Multivoltage User Guide: Reporting Multivoltage Paths; Analyzing Level-Shifter Insertion

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 Reference DiagramWhat does report_mv_path show, and when do you use it?
Flow of net dbg_out from a U_COP driver in hatched PD_COP (VDD1p0_SW) through isolation cell U_COP/DATA_UPF_ISO on SS_AON into a U_CPU load in tinted PD_CPU (VDD0p9), with the report_mv_path -cell (ICC2) result below: domain PD_COP, supply SS_AON, strategy none because ISO_COP_OUT lists only the functional dout ports, not the debug port dbg_out.

Technical Explanation

  • Entry point: pass -cell, -net or -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_out

What 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

ICC2 (icc2_shell)check_mv_design

Find the violation to trace, for example MV-071 (isolation cell not associated with any strategy)

ICC2 (icc2_shell)report_mv_path -cell U_COP/DATA_UPF_ISO

Show supply, drivers, sinks, strategy and domain for one MV cell

ICC2 (icc2_shell)report_mv_path -net U_COP/dbg_out

Trace the isolation path through a net (the default type; add -level_shifter for shifters)

ICC2 (icc2_shell)report_mv_path -all_heterogeneous_paths

List drivers whose loads have different related supplies

ICC2 (icc2_shell)analyze_mv_design -level_shifter -through U_COP/dbg_out

Explain 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

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. →