IR drop and electromigration

Follow the supply current from the grid to the cells, estimate the drop along a rail by hand, read a static IR-drop analysis, and say what electromigration limits.

Lesson
L3.5
Time
25 min
Runs on
OpenROAD
Check
6 questions

A team doubled the pitch of the met4 power straps to give the router more tracks. On the MAC with W = 24, the worst supply drop went from 1.48 mV to 3.32 mV. The router gained only 7.1 % more met4 capacity.

Power gridmet4 straps (VDD)Worst dropAverage dropmet4 routing capacity
Platform grid, 27.14 µm pitch91.48 mV (0.082 % of VDD)0.152 mV9268 (reference)
met4 pitch doubled, 54.28 µm pitch43.32 mV (0.184 % of VDD)0.471 mV9924 (+7.1 %)
met4 pitch halved, 13.57 µm pitch180.69 mV (0.038 % of VDD)0.0566 mV7880 (-15.0 %)

PDNSim (analyze_power_grid) on VDD at 1.8 V, the same placement in all three runs; capacity is global routing's met4 resource count. Build-only runs, OpenROAD 26Q2-1164-g08f67ee5ec, sky130hd at ORFS 302dabb9 (build-only runs of tools/pd-runner.mjs).

This timing run uses the library at 1.8 V without a per-cell voltage correction.

Current through resistance

Cell current flows from VDD through the grid and returns to VSS. Each resistance loses I·R volts. Resistance lowers local VDD and raises local VSS. The cell sees their difference. Here we analyze only the VDD loss, with VSS treated as ideal: one part of the total supply loss.

Where the supply current of one cell flowsArrows show current, from the block's power pins down to one cell.
Where the supply current of one cell flowsArrows show current, from the block's power pins down to one cell. component met5 strap The block's VDD pins component via4 met5 to met4 component met4 strap Vertical, 1.6 µm wide component Via stack via3, via2, via component met1 rail 0.48 µm wide component Cell VPWR pin
Read the diagram as text
  • met5 strap: The block's VDD pins
  • via4: met5 to met4
  • met4 strap: Vertical, 1.6 µm wide
  • Via stack: via3, via2, via
  • met1 rail: 0.48 µm wide
  • Cell: VPWR pin
  • met5 strap → via4
  • via4 → met4 strap
  • met4 strap → Via stack
  • Via stack → met1 rail
  • met1 rail → Cell

The wide upper layers carry the most current over the longest distance; the thin rail carries the least, over a few microns.

Static IR drop uses each cell's average current: its power divided by VDD. report_power uses an assumed switching activity. Here non-clock inputs are assigned an average activity of 0.2 transitions per 10 ns clock cycle, and the tool propagates that through the logic. With an ideal clock and no clock tree yet, the MAC draws 43.03 mW: an average of 23.91 mA from VDD.

Dynamic IR drop uses the current peaks when many cells switch at the same clock edge. Decap cells (L1.2) near the switching cells supply part of those peaks locally. This lesson measures only static drop.

One rail between two straps

Take one met1 rail between two VDD straps a distance D apart. The cells along it draw a current j per micron, and the rail has a resistance r per micron. With equal end voltages and uniform current demand, current enters from both ends and the middle sits farthest from both. Summing I·R along the rail gives a parabola with its peak midway: j·r·D²/8.

The rail-between-straps modelBoth straps hold the rail's ends at the same voltage; each cell is a current sink to ground.
The rail-between-straps modelstrap Astrap Br·Δxr·Δxr·Δxj·Δxj·Δx
Read the circuit as text
  • r·Δx resistor: pin 1 → n1, pin 2 → strap A
  • r·Δx resistor: pin 1 → n2, pin 2 → n1
  • r·Δx resistor: pin 1 → strap B, pin 2 → n2
  • j·Δx current source: + → n1, − → 0
  • j·Δx current source: + → n2, − → 0

Each Δx of rail is a resistor; each cell is a current sink. The drop grows toward the middle.

A followpin rail is 0.48 µm wide, and met1 has 0.125 Ω per square in the tech LEF. So r = 0.125 / 0.48 = 0.2604 Ω/µm. The model leaves out the straps and the vias: they add their own drop to both ends.

Test the model on the doubled grid, where the effect is largest. PDNSim reports every resistor's current: on the middle VDD rail, 56.40 µA and 27.25 µA enter from the two straps' via stacks, which sit D = 54.28 µm apart. That gives j = 1.541 µA/µm and a model peak of 148 µV.

DC sweepDrop along one met1 rail between two strapsThe doubled grid, the middle VDD rail. Ends at 154 µV and 452 µV: the straps themselves have dropped.
  • PDNSim, each cell
  • model: line + j·r·x(D−x)/2
100 µV200 µV300 µV400 µV500 µV600 µVIR drop120 µm130 µm140 µm150 µm160 µmPosition along the rail100 µV200 µV300 µV400 µV500 µV600 µVIR drop120 µm140 µm160 µmPosition along the rail
Read the plot as a table
Position along the railPDNSim, each cellmodel: line + j·r·x(D−x)/2
120 µm278.9 µV243.9 µV
130 µm424.5 µV360.1 µV
140 µm536.5 µV434.8 µV
150 µm517.4 µV469.6 µV
160 µm470.2 µV464.6 µV

Cell voltages from the PDNSim voltage file (1 µV resolution). Build-only run, OpenROAD 26Q2-1164-g08f67ee5ec, sky130hd at ORFS 302dabb9 (build-only runs of tools/pd-runner.mjs).

The model interpolates the unequal end voltages. Above that line PDNSim's cells bulge by up to 228 µV, against the model's 148 µV. Actual cell loading is uneven. On the platform grid, with the straps half as far apart, the same rail bulges only 40 µV. At the same j, halving D quarters the bulge.

The whole grid

LayoutThe static drop over the whole MACThe platform grid, the worst cell drop per square.
  • Tap cells
  • Logic
  • Buffers and inverters
  • Flip-flops
  • Worst static IR drop per bin: under 25 %, 25-50 %, 50-75 %, 75 % or more of 1.478 mV
  • Power stripes
  • I/O pins
Stage
Detailed placement
Cell area
26,639.3 µm²
Utilization
42.2 %
Wirelength (HPWL)
49,386 µm
Worst max slack
−2.1106 ns
Total negative max slack
−24.7089 ns
Worst min slack
0.4628 ns
Power
43.034 mW
Worst IR drop
1.480 mV
The static drop over the whole MACDrawing the layout…
  1. Placed

    4170 instances on 9 VDD and 9 VSS met4 straps.

  2. The drop map

    Each square shows its worst cell. The worst of all sees 1480 µV.

Read the layout as text

mac: die 262.89 × 262.89 µm, core 252.54 × 250.24 µm, 92 rows of 2.72 µm, 103 signal pins.

StageCell areaUtilizationWirelength (HPWL)Worst max slackTotal negative max slackWorst min slackOverflowPowerWorst IR dropCells placed
Floorplan26,639.3 µm²42.2 %—0.2794 ns0.0000 ns0.4243 ns———846 tap cells; I/O pins not placed yet
Global placement26,639.3 µm²42.2 %43,389 µm−2.0099 ns−22.2917 ns0.4472 ns0.0999——846 tap cells, 61 buffers and inverters, 3115 logic, 148 flip-flops
Detailed placement26,639.3 µm²42.2 %49,386 µm−2.1106 ns−24.7089 ns0.4628 ns—43.034 mW1.480 mV846 tap cells, 61 buffers and inverters, 3115 logic, 148 flip-flops

PDNSim voltage file, binned. Build-only run.

Compare the same rail in all three grids:

DC sweepDrop along the middle VDD rail for three gridsThe same placement under three met4 strap pitches: 27.14, 54.28 and 13.57 µm.
  • Platform grid
  • met4 pitch doubled
  • met4 pitch halved
00.2 mV0.4 mV0.6 mV0.8 mV1.0 mV1.2 mV1.4 mV1.6 mVIR drop50 µm100 µm150 µm200 µm250 µmPosition across the core00.5 mV1.0 mV1.5 mV2.0 mVIR drop100 µm200 µmPosition across the core
Read the plot as a table
Position across the corePlatform gridmet4 pitch doubledmet4 pitch halved
50 µm26 µV73.92 µV12.54 µV
100 µm68.53 µV168.2 µV24.18 µV
150 µm158.4 µV517.4 µV57.41 µV
200 µm697.3 µV1.479 mV414.2 µV
250 µm96.39 µV656.5 µV31 µV

PDNSim voltage file, VDD at 1.8 V. Build-only runs, OpenROAD 26Q2-1164-g08f67ee5ec, sky130hd at ORFS 302dabb9 (build-only runs of tools/pd-runner.mjs).

Each hump of the drop sits between two VDD straps. In these runs the met5 straps carry almost no current: the analysis feeds the supply in at the met5 pins, so the drop starts at met4. The worst cell overall is not on this rail. It sits at (141.0, 236.6) µm in the doubled grid.

Doubling the pitch frees 7.1 % of met4 capacity and multiplies the worst drop by 2.24. Halving it costs 15.0 % of met4 capacity and cuts the worst drop to 0.69 mV. In a resistive grid the drop scales with current: ten times the current gives ten times these drops. PDNSim also prints the worst drop as a share of VDD, the form a drop budget takes.

How the drop reaches timing

A cell on a lower supply has less drive current, so it switches more slowly. The Liberty table of L2.2 was characterized at one voltage: 1.8 V in tt_025C_1v80. A nominal-voltage timing run does not model the lower local supply. Voltage-aware timing needs characterized delay sensitivity or suitable voltage libraries. A justified derate, a multiplier on delay, can approximate a bounded effect.

Timing pathThe two-flop path at a 0.6 ns clock, no derateff1 → u1 (inv_1) → u2 (nand2_1) → ff2, ideal clock, no wires.

ff1 → ff2setup check, latest arrival3 cells

  • Clock latency
  • Cell delay
  • Setup time
The two-flop path at a 0.6 ns clock, no derate00.10.20.30.40.50.6time (ns)launch clk ↑capture clk ↑Data arrivesRequired byff1/CLK → ff1/Q (dfxtp_1): 0.2716 ns1 dfxtp_1u1/A → u1/Y (inv_1): 0.0377 ns2u2/A → u2/Y (nand2_1): 0.0331 ns3setup −0.1115 nsslack +0.1462 ns · metarrival 0.3423required 0.4885The two-flop path at a 0.6 ns clock, no derate00.20.40.6time (ns)launch clk ↑capture clk ↑Data arrivesRequired byff1/CLK → ff1/Q (dfxtp_1): 0.2716 ns1 dfxtp_1u1/A → u1/Y (inv_1): 0.0377 ns2u2/A → u2/Y (nand2_1): 0.0331 ns3setup −0.1115 nsslack +0.1462 ns · metarrival 0.3423required 0.4885
  1. Arrival

    Clock-to-Q and two gates: the data arrives at 0.3423 ns. Every one of those delays assumes 1.8 V.

  2. Slack

    Required at 0.4885 ns, so the slack is 0.1462 ns.

Read the path as a table

Launch: clk rise edge at 0.0000 ns, clock latency 0.0000 ns (ideal). Capture: clk rise edge at 0.6000 ns, latency 0.0000 ns, library setup time −0.1115 ns.

Arrival 0.3423 ns, required 0.4885 ns, slack 0.1462 ns (met).

CellArcThroughEdgeDelay (ns)Time (ns)Slew (ns)
1ff1/CLK → ff1/Qdfxtp_1fall0.27160.27160.0250
ff1/Q → u1/Awire q1fall0.00000.27160.0250
2u1/A → u1/Yinv_1rise0.03770.30920.0299
u1/Y → u2/Awire n1rise0.00000.30920.0299
3u2/A → u2/Ynand2_1fall0.03310.34230.0233
u2/Y → ff2/Dwire n2fall0.00000.34230.0233
The report
Startpoint: ff1 (rising edge-triggered flip-flop clocked by clk)
Endpoint: ff2 (rising edge-triggered flip-flop clocked by clk)
Path Group: clk
Path Type: max

Fanout       Cap      Slew     Delay      Time   Description
-------------------------------------------------------------------------------------
                    0.0000    0.0000    0.0000   clock clk (rise edge)
                              0.0000    0.0000   clock network delay (ideal)
                    0.0000    0.0000    0.0000 ^ ff1/CLK (sky130_fd_sc_hd__dfxtp_1)
     1    0.0022    0.0250    0.2716    0.2716 v ff1/Q (sky130_fd_sc_hd__dfxtp_1)
                                                 q1 (net)
                    0.0250    0.0000    0.2716 v u1/A (sky130_fd_sc_hd__inv_1)
     1    0.0024    0.0299    0.0377    0.3092 ^ u1/Y (sky130_fd_sc_hd__inv_1)
                                                 n1 (net)
                    0.0299    0.0000    0.3092 ^ u2/A (sky130_fd_sc_hd__nand2_1)
     1    0.0017    0.0233    0.0331    0.3423 v u2/Y (sky130_fd_sc_hd__nand2_1)
                                                 n2 (net)
                    0.0233    0.0000    0.3423 v ff2/D (sky130_fd_sc_hd__dfxtp_1)
                                        0.3423   data arrival time

                    0.0000    0.6000    0.6000   clock clk (rise edge)
                              0.0000    0.6000   clock network delay (ideal)
                              0.0000    0.6000   clock reconvergence pessimism
                                        0.6000 ^ ff2/CLK (sky130_fd_sc_hd__dfxtp_1)
                             -0.1115    0.4885   library setup time
                                        0.4885   data required time
-------------------------------------------------------------------------------------
                                        0.4885   data required time
                                       -0.3423   data arrival time
-------------------------------------------------------------------------------------
                                        0.1462   slack (MET)

OpenSTA 3.1.0 on the sky130 tt library.

set_timing_derate -late 1.1 -cell_delay makes every cell delay 10 % longer on the late side. The factor here is a chosen number for the exercise, not a measured voltage sensitivity.

Electromigration

Electromigration (EM) is wear by current. Electron momentum moves metal atoms, creating piles and voids. The void thins the wire until it opens, or the pile-up shorts to a neighbour.

Lifetime falls steeply as current density and temperature rise; Black's equation is the classic model of that. Power wires have sustained directional current; signal-wire checks must also account for their switching waveform and heating. Signal wires are checked too.

The SKY130 tech LEF states the limits as DCCURRENTDENSITY AVERAGE, at a junction temperature of 90 °C: 2.8 mA per micron of width on met1, 6.8 on met4, 10.17 on met5. Alternating current may reach 6.1 mA/µm RMS on met1. A via has a limit per cut: 0.29 mA for via, 2.49 mA for via4.

GridLargest met1 rail currentLargest met4 strap current
Platform grid0.267 mA → 0.557 mA/µm (19.9 %)0.548 mA → 0.343 mA/µm (5.0 %)
met4 pitch doubled0.481 mA → 1.001 mA/µm (35.8 %)0.947 mA → 0.592 mA/µm (8.7 %)
met4 pitch halved0.224 mA → 0.466 mA/µm (16.7 %)0.334 mA → 0.209 mA/µm (3.1 %)

analyze_power_grid -enable_em reports each resistor's current; the share of the tech LEF's DC average limit is computed from the wire width. Build-only runs, OpenROAD 26Q2-1164-g08f67ee5ec, sky130hd at ORFS 302dabb9 (build-only runs of tools/pd-runner.mjs).

The pinned build prints the currents and does not compare them with the limits itself. The reported met1 and met4 segment currents stay below those stated DC limits under this activity assumption; this is not a full-chip EM sign-off. Wider or closer straps lower the current density, the same cure as for IR drop.

Asked in interviews
  1. What is IR drop, and how do you reduce it?

    The supply lost across the grid's resistance. Reduce it with wider or closer straps, more vias and power pins, or by spreading high-current cells.

  2. Static or dynamic IR drop?

    Static uses average currents and a resistive grid. Dynamic uses the current waveforms when many cells switch together, with the decaps and the grid's capacitance.

  3. What is electromigration?

    Metal atoms moved by a high current density until a wire opens or shorts. It grows with current density and temperature, so the PDK limits current per micron of width and per via.

  4. How does IR drop affect timing?

    A lower supply slows the cells, while STA times them at the library voltage. Use voltage-aware timing or a derate justified by characterized voltage sensitivity.

Try it

This is the path of the timing section, with every cell delay 5 % longer. Run it: the setup slack drops from 0.1462 ns to 0.1291 ns. Open Paths to see each cell's delay grow.

Change the factor and find where the slack reaches zero. Then add -cell_check to derate the setup time as well, and see how much more slack goes.

STAOpenSTA in OpenROAD 26Q2 · sky130hd tt_025C_1v80 Liberty · simulator service
Edit the constraints, then run them

          
Expected: WNS 0.1291 ns
Read the netlist: path2.v (the bundled design path2)
// path2: the two-flop reference path of docs/pd-lessons (L2.1-L2.5), written by hand.
// ff1/Q -> u1 (inv_1) -> u2/A (nand2_1) -> ff2/D, both flops on clk.
module path2 (clk, a, b, y);
  input clk;
  input a;
  input b;
  output y;
  wire q1;
  wire n1;
  wire n2;
  sky130_fd_sc_hd__dfxtp_1 ff1 (.CLK(clk), .D(a), .Q(q1));
  sky130_fd_sc_hd__inv_1 u1 (.A(q1), .Y(n1));
  sky130_fd_sc_hd__nand2_1 u2 (.A(n1), .B(b), .Y(n2));
  sky130_fd_sc_hd__dfxtp_1 ff2 (.CLK(clk), .D(n2), .Q(y));
endmodule

Check yourself

ConceptWhat separates a static IR-drop analysis from a dynamic one?
ConceptA uniformly loaded rail between equal-voltage straps 27 µm apart has r = 0.26 Ω/µm, and its cells draw 2 µA per µm. About how large is the drop at its middle, above the straps?
ConceptWhy does the drop on a rail grow with the square of the strap spacing?
ConceptWhich pair sets how fast electromigration wears a power wire?
ConceptWhich of these grid changes lowers the worst static IR drop?
Predict the outputThe path figure has an arrival of 0.3423 ns and a required time of 0.4885 ns. Add set_timing_derate -late 1.1 -cell_delay. There are no wire delays. What setup slack (WNS) does OpenSTA report, in ns?
create_clock -name clk -period 0.6 [get_ports clk]
set_timing_derate -late 1.1 -cell_delay

Remember

  • IR drop is the supply lost across the grid's resistance; static analysis uses average currents from the power analysis.
  • With uniform load and equal end voltages, rail drop peaks midway at j·r·D²/8, so the strap spacing matters with its square.
  • A denser grid lowers the drop and costs routing tracks on the strap layers; measure both.
  • STA times cells at the library voltage; voltage-aware timing needs characterized sensitivity, not an arbitrary delay derate.
  • Electromigration wears wires by current density and temperature; the tech LEF limits current per micron of width and per via.