ExpertQuestion 35 of 50Source: Synopsys IC Compiler II Multivoltage User Guide: Checking the Design for Power Violations, Reporting Multivoltage Paths; Synopsys VC LP User Guide: Low-Power Static Checking

After a late ECO, isolation or level shifters are missing. What's your triage flow?

From PDVerse Low-Power Physical Design Mentor Guide · pdVerse Mentor Guide

Short Answer

A late ECO can add ports and domain crossings that no isolation or level-shifter strategy was written for, so the cells are never inserted. Triage in a fixed order: find every new crossing with check_mv_design (ICC2), fix the power intent first, insert cells with create_mv_cells (ICC2), then rerun check_lp -stage design (VCLP) as the independent signoff check.

Technical Reference DiagramAfter a late ECO, isolation or level shifters are missing. What's your triage flow?
Decision tree for a MYCHIP ECO on U_COP: symptom (new port U_COP/dbg_valid reaches PD_MYCHIP unisolated) leads to check_mv_design (ICC2) and report_mv_path (ICC2), then to set_isolation -update (UPF) or fix_mv_design -buffer (ICC2), then create_mv_cells (ICC2), ending at check_lp -stage design (VCLP) clean.

Technical Explanation

  • New crossings: an ECO that reroutes a net or punches a hierarchical port can create a domain crossing the original UPF never described.
  • Element-based strategies name ports one by one, so a newly punched port is not covered; strategies implied by the domain name pick it up automatically.
  • Control ports: ICC2 derives -no_isolation on newly punched save, restore, switch and isolation control pins, which can hide a real violation on those paths.
  • mv.cells.smart_derive_iso_strategy_on_new_control_ports (ICC2) checks for a violation first, but the guide limits it to retention control pins today.
  • ECO buffers: add_buffer_on_route (ICC2) inserts single-rail buffers; one whose domain supply differs from its driver or load needs fix_mv_design -buffer (ICC2).
  • Order matters: create_mv_cells (ICC2) inserts only what a UPF strategy asks for, so fix the strategy before you insert cells.
  • What breaks: a missing isolation cell floats an always-on input when PD_COP is off; a missing low-to-high level shifter leaks crowbar current and weakens the logic high.
# [UPF]  UPF command, run in icc2_shell
set_isolation ISO_COP_OUT -domain PD_COP -update -elements {U_COP/dbg_valid}
# [ICC2]  icc2_shell
check_mv_design -isolation -level_shifter -max_message_count all
check_mv_design -isolation -objects {U_COP/dbg_valid}
report_mv_path -isolation -pin U_COP/dbg_valid
create_mv_cells
check_mv_design
save_upf mychip_eco.upf
# [VC LP]  vc_static_shell
check_lp -stage design
report_violations -app LP

What To Check

  • Every port the ECO added or reconnected, with its driver domain and load domain.
  • Each new crossing out of a switchable domain has a matching isolation strategy, or a deliberate -no_isolation.
  • New low-to-high crossings (0.9 V PD_CPU into 1.0 V PD_MYCHIP) have level shifters.
  • ECO buffers on crossings run from a supply that stays on whenever their load is on, or are dual-rail.
  • The saved UPF matches the netlist that PT and VC LP will read.

Command Checks & Actions

UPF (design.upf)set_isolation ISO_COP_OUT -domain PD_COP -update -elements {U_COP/dbg_valid}

Add the new port to the existing element-based strategy

ICC2 (icc2_shell)check_mv_design -isolation -level_shifter -max_message_count all

List every isolation and level-shifter violation without the default 20-per-type cap

ICC2 (icc2_shell)check_mv_design -isolation -objects {U_COP/dbg_valid}

Recheck isolation only on paths through the ECO port

ICC2 (icc2_shell)report_mv_path -isolation -pin U_COP/dbg_valid

Show the isolation path through the ECO port, its supplies and any applied strategy

ICC2 (icc2_shell)create_mv_cells

Insert the isolation and level-shifter cells the updated strategies require

ICC2 (icc2_shell)save_upf mychip_eco.upf

Write the updated power intent for PT and VC LP

VC LP (vc_static_shell)check_lp -stage design

Independent static check of the post-ECO netlist against the UPF

VC LP (vc_static_shell)report_violations -app LP

List remaining LP violations, such as ISO_INST_MISSING

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): check_mv_design and check_lp -stage design both report zero isolation and level-shifter errors after create_mv_cells.
  • Suspicious (illustrative): ICC2 is clean but VC LP reports ISO_STRATEGY_MISSING on the new port, so the two tools read different UPF (save_upf was skipped).
  • Hard stop: report_violations -app LP shows ISO_INST_MISSING on a PD_COP output that reaches PD_MYCHIP.

Common Mistake

The Trap: Hand-instantiating a library isolation cell on the new port without touching the UPF.

  • check_mv_design (ICC2) warns that the cell is not associated with any isolation strategy (MV-071), and every tool reading the old UPF still sees an unprotected crossing.

What The Interviewer Is Testing

  • Do you know how ECOs escape the UPF: new ports, element-based strategies and single-rail ECO buffers?
  • Do you fix the power intent before inserting cells, and re-verify in a second tool?

Follow-up Question & Model Response

"The ECO added a buffer on a PD_COP-to-PD_MYCHIP net with add_buffer_on_route. What can go wrong?"

Candidate Model Response: The command inserts single-rail buffers, so the buffer takes the primary supply of whatever domain it lands in. If that supply differs from its driver or load supply, you have a multivoltage violation, and a buffer on VDD1p0_SW dies with PD_COP. Run fix_mv_design -buffer (ICC2) to swap it to a dual-rail cell. If the library has no dual-rail buffers, add -move_within_x or -move_within_y so the tool can move it into a nearby voltage area that has the right supply.

Practical Example

Design Scenario: (illustrative) A timing ECO on MYCHIP punches a new output port U_COP/dbg_valid on U_COP and routes it to a debug mux in PD_MYCHIP. ISO_COP_OUT was written with -elements listing 14 ports, so the 15th is uncovered and no cell is inserted. check_mv_design -isolation flags one error, and report_mv_path -isolation -pin U_COP/dbg_valid shows the path with no applied strategy. Adding the port with set_isolation -update and rerunning create_mv_cells inserts one clamp-0 cell, since dbg_valid is active-high and 0 means idle. Both check_mv_design and check_lp -stage design then report zero isolation errors.

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