How to design the power delivery network (PDN) that keeps every cell alive: power rings, straps, IR drop, electromigration, decoupling capacitors, UPF power domains, and the full Voltus/RedHawk sign-off flow.
Every chip failure mode ultimately comes back to power. If the power delivery network (PDN) drops too much voltage — a phenomenon called IR drop — logic gates switch slower than the timing model expects, setup violations appear at signoff, and the chip either fails at the rated frequency or fails completely. If metal wires carry too much current density — electromigration — they slowly degrade over years of operation until the chip dies in the field.
Power planning is therefore not an afterthought: it is done during floorplanning, before any standard cell is placed, because the PDN structure determines how much routing area is consumed, where macro blockages must go, and what the fundamental IR drop floor of the design will be.
Modern SoC power grids are a four-level hierarchy, each level progressively finer and closer to the cells:
| Level | Structure | Metal Layers | Width (28nm node) | Purpose |
|---|---|---|---|---|
| L1 — Bump/Pad | C4 flip-chip bumps or wire-bond pads | RDL / top metal | 50–100 µm pitch | Connect package to die |
| L2 — Power Ring | Wide ring around chip core or block | M8–M10 (top metals) | 10–40 µm | Distribute power from pads to straps |
| L3 — Power Straps | H/V grid across core | M5–M9 | 2–10 µm | Reduce sheet resistance across die |
| L4 — Power Rails | Cell-pitch H wires (VDD/VSS rows) | M1–M2 | 0.1–0.5 µm | Connect directly to cell VDD/VSS pins |
The power ring must carry the entire chip current from the pads to the straps. Sizing starts from the power budget:
In practice, power ring widths range from 10 µm for small blocks to 40–80 µm for full-chip rings carrying 10+ amperes. The ring runs on at least two metals (e.g. M9 for VDD, M8 for VSS) so they can be parallel without shorting.
Straps create the grid interior. The key tradeoff: narrower pitch → lower IR drop but more routing blockage. A common starting point is to target IR drop contribution from straps of ≤ 3 mV, then calculate the required strap count from the current density per strap.
| Parameter | Typical Range (28nm) | 5nm FinFET Range | Effect of Increasing |
|---|---|---|---|
| Strap pitch | 20–60 µm | 5–15 µm | More straps → lower IR, less routing area |
| Strap width | 2–8 µm | 0.3–1 µm | Wider → lower resistance, lower EM risk |
| Metal layer | M5–M8 | M4–M6 | Higher metal → lower ρ (thicker), less congestion |
| VDD:VSS ratio | 1:1 alternating | 1:1 alternating | Equal pitch minimizes loop inductance |
# 1. Add VDD/VSS power ring around core
addRing \
-nets {VDD VSS} \
-layer_top M9 \
-layer_bottom M9 \
-layer_left M8 \
-layer_right M8 \
-width 20 \
-spacing 5 \
-offset 2
# 2. Add power straps across the core (horizontal M6, vertical M7)
addStripe \
-nets {VDD VSS} \
-layer M7 \
-direction vertical \
-width 4 \
-spacing 2 \
-set_to_set_distance 40 \
-start_offset 20
addStripe \
-nets {VDD VSS} \
-layer M6 \
-direction horizontal \
-width 3 \
-spacing 2 \
-set_to_set_distance 30 \
-start_offset 15
# 3. Connect standard cell rails to straps (globalNetConnect)
globalNetConnect VDD -type pgpin -pin VDD -all
globalNetConnect VSS -type pgpin -pin VSS -allIR drop is the resistive voltage loss from the power source to the cells. There are two flavors with very different analysis methods:
| Type | Cause | Analysis Method | Typical Budget | Fix Strategy |
|---|---|---|---|---|
| Static IR drop | DC leakage current through grid resistance | DC analysis: V = I_leakage × R_grid | < 5% VDD | Widen straps, add ring layers |
| Dynamic IR drop | Simultaneous switching (SSO) creates large current transients | Transient simulation: L×dI/dt + I×R | < 10% VDD | Add decoupling capacitors, stagger clocks |
| Self-heating (EM risk) | High current density → Joule heating → accelerates EM | Thermal + EM co-analysis | J < J_limit (125°C) | Widen wires, add vias, parallel paths |
A 50 mV drop on a 0.8 V rail is 6.25%. Cell delay increases roughly linearly with reduced VDD — on a 0.8 V nominal, 50 mV drop adds ~8–10% delay to cells in that region. If your hold budget is tight, this can cause functional failures at speed even if the STA passed at nominal VDD.
Electromigration (EM) is the directed motion of metal atoms caused by momentum transfer from conduction electrons (the "electron wind"). In copper interconnects, this creates two failure modes over time: voids (where metal was) that increase resistance and eventually open-circuit, and hillocks (where metal piled up) that can create shorts to adjacent lines.
| Wire Type | J_limit (mA/µm) at 125°C | Fix if violated |
|---|---|---|
| Power strap (unidirectional DC) | 1.0–2.0 | Widen strap, add parallel via path |
| Power rail M1/M2 | 0.5–1.0 | Add more vias, increase rail width |
| Signal wire (bidirectional AC) | 4–8 (RMS, AC relaxed rule) | Wider wire, reduce drive strength |
| Via stack (via current) | 0.1–0.5 mA/via | Add via array (more vias in parallel) |
A single via may carry only 0.1–0.5 mA before exceeding its EM limit. A 4 µm strap on M7 might be EM-clean (it's wide), but the single via connecting it to M6 below carries all the current through a tiny contact area. Always check via EM, not just wire EM. Fix: use via arrays (e.g. 4×4 = 16 vias in parallel) to spread the current load.
# Set power analysis mode
setAnalysisMode -analysisType onChipVariation -cppr both
# Load activity file (switching probability per net)
read_activity_file -format VCD design_activity.vcd
# Run static IR and EM check (quick pre-Voltus check)
analyzeIRDrop \
-nets {VDD VSS} \
-temperature 125 \
-report_violations_only yes \
-out_file ir_drop_report.rpt
# View violations in GUI
report_ir_drop -min_violation 10 -max_violation 200Decoupling capacitors (decaps) act as local charge reservoirs. When a large block switches simultaneously, instead of drawing a huge current spike from the distant power ring (which takes nanoseconds to respond due to inductance), the cells draw from decap cells placed nearby that discharge instantly.
| Type | Construction | Capacitance/area | Use Case |
|---|---|---|---|
| Standard decap cell | NMOS transistor, gate = VDD, source/drain = VSS → gate-oxide cap | High (gate oxide thin) | Placed in filler cell slots between standard cells |
| Well-tap decap | Combined well-tap + decap in one cell | Medium | Rows requiring both well tie and decap |
| MOM cap (Metal-Oxide-Metal) | Interdigitated metal comb structure | Lower density, no oxide risk | Blocks where gate-oxide reliability is marginal |
| MIM cap | Dedicated metal-insulator-metal layer | Medium | Analog domains, I/O ring |
# Add decap cells in empty filler slots — run after placement
addDecap \
-cell_list {DCAP4 DCAP8 DCAP16 DCAP32} \
-total_cap 2.0e-9 \
-target_cap 2.5e-9 \
-distribute_location user_defined \
-region {100 100 800 700}
# Alternatively: activity-driven decap (requires VCD/power intent)
addDecap \
-cell_list {DCAP8 DCAP16} \
-voltage_domain VDD \
-target_dynamic_ir_drop 0.05 ;# 5% VDD target
# Check result
report_power -rail_analysisModern SoCs are not a single-voltage chip. A smartphone SoC may have 8–12 distinct power domains running at different voltages or completely powered off when idle. UPF (Unified Power Format, IEEE 1801) is the standard that describes this multi-voltage intent in a file that synthesis, PnR, and sign-off tools all consume.
| UPF Construct | What It Does | Physical Meaning |
|---|---|---|
create_power_domain | Defines a logic region with its own supply | Area enclosed by power ring or strap set |
create_supply_net | Declares a named supply rail | VDD1, VDD_CPU, VDD_GPU, VDDIO… |
create_power_switch | Power gating transistor (header/footer) | MTCMOS header cell in row between on/off domain |
create_isolation_cell | Clamps signals crossing powered→off domain | ISO cells at domain boundary; clamp to 0 or 1 |
create_level_shifter | Converts voltage between domains | LS cells at boundary between VDD1 and VDD2 domains |
create_retention_register | Saves state when domain powers down | Retention FF (bubble/balloon FF) with shadow latch on always-on supply |
# Always-on top domain
create_power_domain PD_TOP -include_scope
# GPU domain — can be power-gated
create_power_domain PD_GPU \
-elements {u_gpu} \
-scope top
# Supply rails
create_supply_net VDD_AON -domain PD_TOP
create_supply_net VDD_GPU -domain PD_GPU
# Power switch (MTCMOS header)
create_power_switch SW_GPU \
-domain PD_GPU \
-input_supply_port {vin VDD_AON} \
-output_supply_port {vout VDD_GPU} \
-control_port {sleep gpu_sleep_n} \
-on_state {on_state vin {!sleep}} \
-off_state {off_state {} {sleep}}
# Isolation strategy at PD_GPU output
create_isolation_cell ISO_GPU \
-domain PD_GPU \
-applies_to outputs \
-clamp_value 0 \
-isolation_supply_net VDD_AON \
-isolation_signal gpu_iso_en \
-isolation_sense highPre-signoff checks in Innovus catch obvious problems, but full PDN sign-off requires dedicated power integrity tools — Cadence Voltus or Ansys RedHawk. These tools solve a resistor-network equation with millions of nodes and use VCD-derived switching activity to model dynamic currents accurately.
| Step | Input | What Voltus Does | Output |
|---|---|---|---|
| 1. DEF/SPEF import | Post-route DEF, RC SPEF | Build resistor network from metal/via geometry | Internal PDN netlist |
| 2. Power intent | UPF + Liberty (.lib) | Map cells to supply rails, leakage per cell | Cell current map |
| 3. Activity annotation | VCD or switching probability | Assign dynamic current sources per cell | Annotated netlist |
| 4. Static IR analysis | DC leakage | Solve V=IR across PDN — find worst node | IR map, violation report |
| 5. Dynamic IR analysis | VCD transients | Transient simulation — finds voltage droop magnitude | Time-domain droop waveforms |
| 6. EM check | Current density per wire | Compare J to PDK EM limit; compute MTTF | EM violation report |
| 7. ECO feedback | Violation list | Suggest strap additions, decap placement | ECO script for Innovus |
# Run from Cadence Voltus environment
set_db design_process_node 28
read_physical -def chip_postroute.def
read_parasitics -format spef chip.spef.gz
# Load power intent
read_power_intent -cpf design.cpf ;# or -upf design.upf
# Set activity for dynamic analysis
read_activity_file -format VCD sim_output.vcd \
-scope top -start 1000ns -end 2000ns
# Static IR analysis
analyze_power_rail \
-rail_name {VDD VSS} \
-temperature 125 \
-type static \
-report chip_static_ir.rpt
# Dynamic droop analysis
analyze_power_rail \
-rail_name {VDD} \
-type dynamic \
-time_range {1000ns 2000ns} \
-report chip_dynamic_ir.rpt
# EM sign-off
check_em \
-temperature 125 \
-nets {VDD VSS} \
-report em_violations.rpt \
-max_violations 0| Metric | Apple A17 Pro (3nm) | AMD EPYC Genoa (5nm) | Intel Xeon SPR (Intel 7) |
|---|---|---|---|
| TDP | ~8W (mobile) | ~360W (server) | ~350W |
| Supply voltage | ~0.7–1.0V (DVS) | ~0.7–1.05V | ~0.75–1.0V |
| Peak current | ~10–12A | ~360A | ~380A |
| IR drop budget | <30 mV static | <40 mV static | <50 mV static |
| Power domains | 12+ (CPU/GPU/NE/ISP…) | Chiplet-level + core-level | Tile-based + ring-level |
| Bump/pad pitch | 130 µm (C4 flip-chip) | 130 µm | 100 µm (FOVEROS) |
AMD EPYC draws 360W at ~0.85V — that's 420 amperes total. At this scale, package and PCB resistance (not just on-chip) become the dominant IR drop sources. The VRM (Voltage Regulator Module) must be positioned within centimetres of the socket, and the package substrate power planes are as thick as 50–100 µm copper. On-chip PDN design is just one layer of a multi-board stack problem.
| Mistake | Consequence | Prevention |
|---|---|---|
| Under-sized power ring | IR drop concentrated at ring segments; all cells downstream suffer | Size ring for worst-case I × R in first iteration; check with Innovus before placement |
| Missing via arrays at strap–ring intersection | EM failure at via after 2–3 years in field | Always use max-via array at power connections; check EM at via in Voltus |
| Straps blocked by macro placement | Current forced to route around macros → long path → high R | Plan strap grid BEFORE placing macros; reserve strap channels in floorplan |
| No isolation cells at power domain boundary | Unknown logic levels from powered-off domain corrupt active domain | Check UPF isolation coverage in DC/Genus; verify in Voltus power intent check |
| Excessive decap leakage | Static power increases 10–15% above power budget | Use tool-controlled decap insertion with leakage limit constraint |
| Ignoring dynamic IR at clock edges | Setup violations appear only at high frequencies | Always run dynamic IR with representative VCD; check droop at clock edge |
| # | Interview Question | Strong Answer Points |
|---|---|---|
| 1 | What is the difference between static and dynamic IR drop? | Static = DC leakage × R_grid (permanent). Dynamic = transient SSO current spike + inductance effect (L·dI/dt). Dynamic is usually 2–3× worse. Dynamic requires VCD for analysis. |
| 2 | How do you size a power strap? | Start from power budget → peak current → target IR (5% VDD) → R_max = ΔV/I → W = ρL/(R_max × T). Then verify EM: J = I/W < J_limit. |
| 3 | What is Black's equation and what does it govern? | MTTF = A·J⁻ⁿ·exp(Ea/kT). Governs electromigration MTTF. Key: doubling J reduces MTTF by 4×; raising temp 10°C ~halves MTTF. Used to set current density limits on power wires and vias. |
| 4 | What is an isolation cell and when is it needed? | ISO cell clamps a signal from a powered-off domain to a known value (0 or 1) so the always-on domain doesn't see floating/corrupted inputs. Required at every output crossing from a power-gated domain. |
| 5 | What is the purpose of a decoupling capacitor in a power grid? | Decap stores local charge that can supply switching current instantly, preventing voltage droop. It bridges the time between when a current transient occurs and when the distant power rail can respond through its RC network. |
| 6 | What tools do you use for PDN sign-off? | Cadence Voltus (static/dynamic IR, EM, thermal), Ansys RedHawk-SC. Pre-signoff quick check inside Innovus (analyzeIRDrop). Both tools require DEF, SPEF, UPF, and VCD activity. |