Should you implement power switches as an array or a ring?
From PDVerse Low-Power Physical Design Mentor Guide · pdVerse Mentor Guide
Short Answer
An array spreads switch cells in columns or a grid through the voltage area, so every standard cell is close to a switch and IR drop stays low. A ring places the switches along the voltage-area boundary, which keeps the core rows free but makes the centre the farthest point from any switch. Arrays suit large or high-current domains; rings suit small domains and hard macros that cannot take switch cells inside.
Technical Explanation
- Array (grid or columns): switch cells sit inside the voltage area at a regular pitch, each feeding a nearby patch of the virtual rail.
- Ring: switch cells line the voltage-area edge; current reaches the centre through the virtual rail mesh alone.
- IR drop grows with distance from the nearest switch, so a ring's worst spot is the centre, and it grows with domain size.
- Arrays cost placement sites inside the domain and break up rows; rings cost area at the boundary and need a strong virtual mesh.
- In ICC2 the jobs are named
create_power_switch_array(ICC2) andcreate_power_switch_ring(ICC2); check your release for their options. connect_power_switch(ICC2) chains either style, and its-ring_directionoption works with ring switches in daisy mode.- Picking a ring for a large, high-current domain leaves the centre starved during a burst, causing timing failures at low voltage.
Common Mistake
The Trap: Choosing a ring for a large domain because it keeps the floorplan clean.
- The centre of the domain sits far from every switch, so the virtual rail sags there under peak current.
- Timing in the middle of the block fails at the low-voltage corner, and the fix late in the flow is adding switches inside anyway, which means reopening placement in a block that was already closed.
Follow-up Question & Model Response
"Can you mix both styles?"
Candidate Model Response: Yes. Some teams put a ring around a block with a few inner columns where the current is highest, such as near a busy datapath. The ring handles the edges and the columns cover the hot spot, and you then chain all of them in one daisy chain, so the wake-up order and in-rush limit still hold. The rail analysis decides how many inner columns you actually need. Run it at the peak-current mode, not the average one, because the ring weakness only shows under a burst.
Practical Example
Design Scenario: (illustrative) PD_COP is 200 x 150 um and draws 120 mA at peak. A ring of 60 header cells along the edge gives a simulated worst drop of 48 mV at the centre, against a 30 mV budget. An array of 5 columns with 12 cells each, the same 60 cells, puts every cell within 20 um of a column and gives a worst drop of 18 mV, between columns. The team keeps the array and loses about 3% of placement sites to the switch columns. A small 40 x 40 um accelerator block elsewhere on the die uses a ring, because its worst drop is only 9 mV and its rows stay unbroken.
Low-Power & UPF Handbook
Master Low-Power VLSI & Multivoltage Design
Read the complete low-power guide library covering power domains, level shifters, isolation clamps, state retention, and UPF signoff verification.

Continue practising