IntermediateQuestion 39 of 60Source: Synopsys IC Compiler II Multivoltage User Guide: Multivoltage Design Overview and Inserting Power Management Cells; Synopsys IC Compiler II Tool Commands: create_mv_cells

What does `create_mv_cells` insert, and where does it sit in the flow?

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

Short Answer

create_mv_cells (ICC2) inserts power management cells from the UPF strategies: isolation cells, level shifters and repeaters, and with its own options retention cells and always-on legalization of buffers. It runs after load_upf (ICC2) and before placement, and it is optional because synthesis normally inserts these cells, but it gives early feedback on whether the power intent is feasible. The flow then continues with check_mv_design (ICC2), placement and optimization, and save_upf (ICC2).

Technical Reference DiagramWhat does `create_mv_cells` insert, and where does it sit in the flow?
Five-step flow load_upf, create_mv_cells, check_mv_design, place and optimize, save_upf (all ICC2), with the netlist change at each step: UPF strategies loaded, isolation, level shifter and repeater cells inserted and associated, violations reported, cells placed at strategy locations, tool-derived UPF written out.

Technical Explanation

  • What it inserts: -isolation, -level_shifter, -repeater, -retention each insert that cell type from the matching strategy.
  • -all inserts repeaters, isolation and level shifters and remaps single-rail cells in always-on blocks; it does not cover retention.
  • -always_on runs only always-on legalization of buffers and inverters; pair it with -level_shifter to fix voltage violations together.
  • Mapped or GTECH: the MV UG says mapped cells go in only if every instance is mapped (Tool Commands says GTECH by default); -mapped forces library cells or errors out.
  • It also commits the UPF, traces MV cells to drivers and loads, and puts dont_touch on nets between MV cells and domain boundaries.
  • Messages MV-054 count inserted cells and MV-021 counts isolation cells associated with strategies.
  • Skipping it is fine if synthesis already inserted everything, but a missing strategy then surfaces only at check_mv_design (ICC2).
# [ICC2]  icc2_shell
load_upf design.upf
create_mv_cells -all
create_mv_cells -retention
check_mv_design
place_opt
save_upf mychip_prime.upf

What To Check

  • MV-054 counts match the expected number of isolation, level shifter and repeater cells from the strategies.
  • Every inserted isolation cell is associated with a strategy (MV-021 count equals the insert count).
  • No GTECH power management cells remain when the design is fully mapped.
  • check_mv_design (ICC2) is clean before placement starts.

Command Checks & Actions

ICC2 (icc2_shell)load_upf design.upf

Reads the power intent into the design.

ICC2 (icc2_shell)create_mv_cells -all

Inserts repeater, isolation and level shifter cells from the strategies.

ICC2 (icc2_shell)create_mv_cells -retention

Inserts retention cells from the retention strategies.

ICC2 (icc2_shell)check_mv_design

Checks electrical correctness before placement.

ICC2 (icc2_shell)save_upf mychip_prime.upf

Writes user and tool-derived UPF for the UPF prime flow.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): MV-054 reports 51 isolation and 30 level shifter cells, MV-021 reports 51 associated, and check_mv_design (ICC2) is clean.
  • Suspicious (illustrative): Counts are right but some cells are GTECH because a few instances are still unmapped; rerun after mapping or use -mapped.
  • Hard stop: create_mv_cells -mapped (ICC2) errors because no suitable library cell exists for a strategy, or isolation cells are inserted but not associated.

Common Mistake

The Trap: Running create_mv_cells -all (ICC2) and assuming retention registers were handled.

  • -all covers repeaters, isolation and level shifters only; retention needs -retention or the synthesis flow.
  • PD_COP registers stay plain flops, and state is lost on the first power-down.

What The Interviewer Is Testing

  • Knows what create_mv_cells (ICC2) inserts and which option covers which cell type.
  • Places it correctly between load_upf (ICC2) and placement.
  • Reads the MV-054 and MV-021 counts as a sanity check.

Follow-up Question & Model Response

"Which save_upf (ICC2) form do you use at the end?"

Candidate Model Response: It depends on the UPF flow. In the traditional UPF prime flow, save_upf (ICC2) with a file name writes a full UPF that merges your commands with tool-derived ones. In the golden UPF flow you write only the supplemental part with save_upf -format supplemental (ICC2) and keep the original golden UPF untouched. Mixing the two flows in one project leaves nobody sure which file is the real intent.

Practical Example

Design Scenario: (guide-style counts) MYCHIP after load_upf (ICC2): PD_COP has one isolation strategy on its outputs, PD_CPU at 0.9 V drives PD_MYCHIP at 1.0 V through a low-to-high strategy, and PD_COP has a retention strategy. create_mv_cells -all (ICC2) reports 20 repeaters, 51 isolation cells (51 associated, MV-021) and 30 level shifters (MV-054). create_mv_cells -retention (ICC2) then maps 1,200 PD_COP flops to retention cells. check_mv_design (ICC2) is clean, placement runs, and save_upf mychip_prime.upf (ICC2) captures the derived commands.

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