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 grid | met4 straps (VDD) | Worst drop | Average drop | met4 routing capacity |
|---|---|---|---|---|
| Platform grid, 27.14 µm pitch | 9 | 1.48 mV (0.082 % of VDD) | 0.152 mV | 9268 (reference) |
| met4 pitch doubled, 54.28 µm pitch | 4 | 3.32 mV (0.184 % of VDD) | 0.471 mV | 9924 (+7.1 %) |
| met4 pitch halved, 13.57 µm pitch | 18 | 0.69 mV (0.038 % of VDD) | 0.0566 mV | 7880 (-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.
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.
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.
- PDNSim, each cell
- model: line + j·r·x(D−x)/2
Read the plot as a table
| Position along the rail | PDNSim, each cell | model: line + j·r·x(D−x)/2 |
|---|---|---|
| 120 µm | 278.9 µV | 243.9 µV |
| 130 µm | 424.5 µV | 360.1 µV |
| 140 µm | 536.5 µV | 434.8 µV |
| 150 µm | 517.4 µV | 469.6 µV |
| 160 µm | 470.2 µV | 464.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
- 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
- Floorplan
- Cell area
- 26,639.3 µm²
- Utilization
- 42.2 %
- Worst max slack
- 0.2794 ns
- Total negative max slack
- 0.0000 ns
- Worst min slack
- 0.4243 ns
- Stage
- Global placement
- Cell area
- 26,639.3 µm²
- Utilization
- 42.2 %
- Wirelength (HPWL)
- 43,389 µm
- Worst max slack
- −2.0099 ns
- Total negative max slack
- −22.2917 ns
- Worst min slack
- 0.4472 ns
- Overflow
- 0.0999
- 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
- Placed
4170 instances on 9 VDD and 9 VSS met4 straps.
- 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.
| Stage | Cell area | Utilization | Wirelength (HPWL) | Worst max slack | Total negative max slack | Worst min slack | Overflow | Power | Worst IR drop | Cells placed |
|---|---|---|---|---|---|---|---|---|---|---|
| Floorplan | 26,639.3 µm² | 42.2 % | — | 0.2794 ns | 0.0000 ns | 0.4243 ns | — | — | — | 846 tap cells; I/O pins not placed yet |
| Global placement | 26,639.3 µm² | 42.2 % | 43,389 µm | −2.0099 ns | −22.2917 ns | 0.4472 ns | 0.0999 | — | — | 846 tap cells, 61 buffers and inverters, 3115 logic, 148 flip-flops |
| Detailed placement | 26,639.3 µm² | 42.2 % | 49,386 µm | −2.1106 ns | −24.7089 ns | 0.4628 ns | — | 43.034 mW | 1.480 mV | 846 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:
- Platform grid
- met4 pitch doubled
- met4 pitch halved
Read the plot as a table
| Position across the core | Platform grid | met4 pitch doubled | met4 pitch halved |
|---|---|---|---|
| 50 µm | 26 µV | 73.92 µV | 12.54 µV |
| 100 µm | 68.53 µV | 168.2 µV | 24.18 µV |
| 150 µm | 158.4 µV | 517.4 µV | 57.41 µV |
| 200 µm | 697.3 µV | 1.479 mV | 414.2 µV |
| 250 µm | 96.39 µV | 656.5 µV | 31 µ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.
ff1 → ff2setup check, latest arrival3 cells
- Clock latency
- Cell delay
- Setup time
- Arrival
Clock-to-Q and two gates: the data arrives at 0.3423 ns. Every one of those delays assumes 1.8 V.
- 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).
| Cell | Arc | Through | Edge | Delay (ns) | Time (ns) | Slew (ns) |
|---|---|---|---|---|---|---|
| 1 | ff1/CLK → ff1/Q | dfxtp_1 | fall | 0.2716 | 0.2716 | 0.0250 |
ff1/Q → u1/A | wire q1 | fall | 0.0000 | 0.2716 | 0.0250 | |
| 2 | u1/A → u1/Y | inv_1 | rise | 0.0377 | 0.3092 | 0.0299 |
u1/Y → u2/A | wire n1 | rise | 0.0000 | 0.3092 | 0.0299 | |
| 3 | u2/A → u2/Y | nand2_1 | fall | 0.0331 | 0.3423 | 0.0233 |
u2/Y → ff2/D | wire n2 | fall | 0.0000 | 0.3423 | 0.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.
| Grid | Largest met1 rail current | Largest met4 strap current |
|---|---|---|
| Platform grid | 0.267 mA → 0.557 mA/µm (19.9 %) | 0.548 mA → 0.343 mA/µm (5.0 %) |
| met4 pitch doubled | 0.481 mA → 1.001 mA/µm (35.8 %) | 0.947 mA → 0.592 mA/µm (8.7 %) |
| met4 pitch halved | 0.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
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.
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.
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.
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.
Run to draw the timing paths here.
WNS 0.1291 nsRead 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
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.