ExpertQuestion 30 of 50Source: Synopsys IC Compiler II Multivoltage User Guide: Hierarchical Secondary PG Placement Constraints, Hierarchical Implementation With ETMs and Macros, Writing Full-Chip UPF for Specific Blocks

How do you implement a multivoltage design hierarchically in ICC2?

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

Short Answer

You split the flat design and its UPF into blocks, shape the blocks so their voltage areas fit, build top-level straps, and push a PG strategy down to each block. Each block then builds its own PG and secondary PG constraints and is implemented against its block UPF, while the top commits the block constraints and checks everything together. The order matters because each step uses data the previous one produced.

Technical Reference DiagramHow do you implement a multivoltage design hierarchically in ICC2?
Two lanes, top and block: split_constraints and commit_block at the top, shape_blocks creating block shapes and voltage areas, top PG straps then characterize_block_pg, compile_pg in each block, block secondary PG constraints committed, and top commit with -commit_subblocks, each tagged ICC2.

Technical Explanation

  • Partition: split_constraints (ICC2) writes block-level constraints and UPF, and commit_block (ICC2) turns the partitions into physical blocks.
  • Shape: shape_blocks (ICC2) creates block shapes and the voltage area shapes inside them.
  • Top PG: build top straps first, then characterize_block_pg (ICC2) derives the PG strategy each block must follow.
  • Block PG: compile_pg (ICC2) builds straps in each block, then you create and commit that block secondary PG constraints.
  • Top commit: commit_secondary_pg_placement_constraints -commit_subblocks (ICC2) commits any uncommitted block constraints along with the top ones.
  • Consistency: block supply ports and top supplies must connect, or supplies become independent and the system PST grows.
  • Block scope: keep block UPF supplies inside the block scope, so the block can be implemented alone without names that only exist at the top.
# [ICC2]  icc2_shell
split_constraints
commit_block
shape_blocks
characterize_block_pg
compile_pg
commit_secondary_pg_placement_constraints -commit_subblocks
report_secondary_pg_placement_constraints -all_blocks
check_secondary_pg_placement_constraints -blocks {BLK_CPU BLK_DSP}
check_mv_design

What To Check

  • Each block UPF matches the slice of the top UPF it came from.
  • Block voltage areas sit inside their block shapes with guard bands intact.
  • Top and block straps line up at the block boundary.
  • Block and top secondary PG constraints are all committed.

Command Checks & Actions

ICC2 (icc2_shell)split_constraints

Write block constraints and UPF from the top

ICC2 (icc2_shell)shape_blocks

Create block and voltage area shapes

ICC2 (icc2_shell)characterize_block_pg

Push the top PG strategy to each block

ICC2 (icc2_shell)compile_pg

Build the block power grid

ICC2 (icc2_shell)report_secondary_pg_placement_constraints -all_blocks

List constraints in every block

ICC2 (icc2_shell)check_secondary_pg_placement_constraints -blocks {BLK_CPU BLK_DSP}

Check chosen blocks for conflicts

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): Every block reports committed constraints and check_mv_design is clean at the top.
  • Suspicious (illustrative): Blocks are clean alone, but the top shows two supply net groups where one was expected.
  • Hard stop: Block straps miss the top straps at the boundary, or a block has uncommitted secondary PG constraints at top commit.

Common Mistake

The Trap: Building block PG before the top straps and characterization exist.

  • Block straps then miss the top straps at the boundary, and the fix means redoing PG in every affected block.
  • Secondary PG constraints built on the old straps must also be re-derived and re-committed, so the schedule slips twice.

What The Interviewer Is Testing

  • Can you order the hierarchical MV steps?
  • Do you know what the top must re-check after blocks come back?

Follow-up Question & Model Response

"How does the top see a finished block during MV checks?"

Candidate Model Response: Through its block UPF and an abstract or ETM that carries the port supplies. The top needs each block port to have a known related supply, so crossings at the boundary can be checked. save_upf -full_chip -block (ICC2) can also write a full-chip UPF for specific blocks, which helps when a block team needs the surrounding intent. If a port supply is missing, the top treats the crossing as unknown and misses isolation or level shifters.

Practical Example

Design Scenario: (illustrative) MYCHIP is split into BLK_CPU (PD_CPU) and BLK_DSP (PD_DSP), with PD_COP and PD_MYCHIP at the top. After shape_blocks, the team builds M9 and M10 straps at the top, runs characterize_block_pg, then compile_pg in each block. BLK_CPU commits its VDD1p0 secondary constraints for the dual-rail level shifters on its inputs from PD_MYCHIP. At the top, commit with -commit_subblocks finds BLK_DSP still uncommitted, commits it, and check_mv_design comes back clean. Only then do the block teams start placement, knowing the straps and constraints at every boundary agree.

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