IntermediateQuestion 29 of 60Source: Synopsys IC Compiler II Implementation User Guide: Merging Voltage Area Shapes and Resolving Overlapping Voltage Areas

How do nested or rectilinear voltage areas work, and which shape wins where they overlap?

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

Short Answer

Where voltage-area shapes overlap, ICC2 uses stacking order: by default the shape defined last sits on top and owns the overlap. To nest one voltage area inside another, you define the outer one first and the inner one second, so the inner shape is on top and the outer area's effective shape becomes a ring. Define them the other way round and the outer shape masks the inner one, which ends up with no placement area at all.

Technical Reference DiagramHow do nested or rectilinear voltage areas work, and which shape wins where they overlap?
Two side-by-side panels of a 30 x 30 PD1 voltage area with a 10 x 10 PD2 area at (10,10)-(20,20): left panel, PD1 defined first so PD2 sits on top and PD1 becomes a ring (correct); right panel, PD2 defined first so the PD1 shape masks it and PD2 has no effective shape (marked red).

Technical Explanation

  • Stacking order: by default the order of definition, with the last shape on top.
  • Overlap between voltage areas: the top shape owns the overlap; the tool changes the interpretation but deletes no shapes.
  • Effective shapes: the effective_shapes attribute read with get_attribute (ICC2) shows what each voltage area really owns after resolution.
  • Merging within one voltage area: -merge_regions on create_voltage_area or create_voltage_area_shape (ICC2) merges abutting or overlapping shapes into disjoint ones.
  • create_voltage_area_shape (ICC2) adds one shape per call to an existing voltage area.
  • You can reorder shapes with set_voltage_area_shape -top (ICC2) and friends instead of recreating them.
  • A masked inner area has no placeable region, so its cells fail placement or end up outside the intended domain.
# [ICC2]  icc2_shell
create_voltage_area -power_domains PD1 -region {{0 0} {30 30}}
create_voltage_area -power_domains PD2 -region {{10 10} {20 20}}
get_attribute -objects [get_voltage_areas PD2] -name effective_shapes
get_attribute -objects [get_voltage_areas PD1] -name effective_shapes
create_voltage_area_shape -voltage_area PD1 -region {{30 0} {40 10}} -merge_regions
report_voltage_areas -verbose

What To Check

  • Every nested voltage area was created after its parent, or raised to the top afterwards.
  • effective_shapes of the inner voltage area is not empty and matches its intended region.
  • The outer voltage area's effective shape is a ring around the inner one, not a solid rectangle.
  • After merging, each voltage area has the minimum set of disjoint shapes you expect.

Command Checks & Actions

ICC2 (icc2_shell)create_voltage_area -power_domains PD1 -region {{0 0} {30 30}}

Creates the outer voltage area first so it sits below the inner one.

ICC2 (icc2_shell)create_voltage_area_shape -voltage_area PD1 -region {{30 0} {40 10}} -merge_regions

Adds one shape to PD1 and merges it with the existing shapes.

ICC2 (icc2_shell)set_voltage_area_shape -top VOLTAGE_AREA_SHAPE_2

Moves a shape to the top of the stack to fix a wrong order.

ICC2 (icc2_shell)get_attribute -objects [get_voltage_areas PD2] -name effective_shapes

Shows the region PD2 really owns after overlap resolution.

ICC2 (icc2_shell)report_voltage_areas -verbose

Reports shapes, guard bands and the stacking order.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): PD2 effective_shapes returns {10 10} {20 20}, and PD1 returns the ring outline around it.
  • Suspicious (illustrative): Both effective_shapes are correct, but neither voltage area has a guard band, so PD1 and PD2 cells can abut at the ring edge; add one before power planning.
  • Hard stop: PD2 effective_shapes is empty: the outer shape masks it, and every PD2 cell has nowhere legal to go.

Common Mistake

The Trap: Writing the voltage-area script inner-first, for example in alphabetical order of domain names.

  • The outer shape lands on top and masks the inner voltage area, so its effective shape is empty.
  • create_voltage_area (ICC2) still succeeds, so the problem only appears when placement cannot legalize PD2 cells.

What The Interviewer Is Testing

  • Knows that stacking order, not size or containment, decides who owns an overlap.
  • Checks effective_shapes rather than the shapes you typed.
  • Can fix a wrong order in place with set_voltage_area_shape (ICC2).

Follow-up Question & Model Response

"What is the difference between merging shapes and resolving overlaps?"

Candidate Model Response: Merging works inside one voltage area: -merge_regions (ICC2) replaces abutting or overlapping shapes with a minimum set of disjoint shapes, and the merged shape takes the top shape's place. Resolving works between different voltage areas: the top shape owns the overlap, but no shape is removed; only the interpretation changes. So merging changes the shape list, while resolution changes only the effective shapes. Guard bands follow the same rules, and after merging the top shape's guard band applies.

Practical Example

Design Scenario: (guide example) PD1 is 30 x 30 at the origin and PD2 is 10 x 10 at (10,10)-(20,20). Created outer-first, PD2 effective_shapes is {10 10} {20 20} and PD1 becomes a ring with a 10 x 10 hole, 800 area units instead of 900. Created inner-first, PD2 effective_shapes comes back empty and PD1 reports the full {0 0} {30 30}. The fix without recreating anything: set_voltage_area_shape -top (ICC2) on the PD2 shape, then check both effective_shapes again.

Low-Power & UPF Handbook

Read the complete low-power guide library covering power domains, level shifters, isolation clamps, state retention, and UPF signoff verification.

VLSI Physical Design Planning Handbook — fourteen chaptersDesign PlanningFourteen chapters, floorplanning through timing budgets. →