4.2.12VLSI Design

Power grid and IR drop analysis

1,849 words8 min readdifficulty · medium

WHY do we even care?

  • WHY it matters: A CMOS gate's delay grows roughly as td1(VddVth)αt_d \propto \dfrac{1}{(V_{dd}-V_{th})^{\alpha}} (alpha-power law, α ⁣ ⁣1.3\alpha\!\approx\!1.3). Lower the local VddV_{dd} → slower gate → possible setup timing violation. On the ground side, a raised local ground ("ground bounce") shrinks noise margins.
  • WHAT the grid is: A hierarchy — package bumps → top thick metal rings/straps → lower metal stripes → local rails feeding standard cells. Coarse-to-fine so resistance stays low.

Two kinds of IR drop

ΔVdynamic=IR+Ldidt\Delta V_{dynamic} = I R + L\frac{di}{dt}

WHY the Ldi/dtL\,di/dt term appears: when a large block switches, current ramps up fast. A changing current through the package inductance LL creates a voltage vL=Ldi/dtv_L = L\,di/dt that momentarily starves the supply — this is why decoupling capacitors (decaps) are placed near hot blocks: they act as local charge reservoirs that supply the fast transient so the current doesn't have to rush through LL.


HOW to derive the grid equations (from first principles)

We model the grid as a set of nodes (metal junctions) connected by conductances gij=1/Rijg_{ij}=1/R_{ij}. At each node, apply Kirchhoff's Current Law (KCL): current in = current out.

For node ii with voltage ViV_i, connected to neighbors jj, drawing a current-source load IiI_i (to ground):

jgij(ViVj)=Ii\sum_{j} g_{ij}\,(V_i - V_j) = -I_i

Why this step? Each resistor branch carries current (ViVj)/Rij=gij(ViVj)(V_i-V_j)/R_{ij}=g_{ij}(V_i-V_j) out of node ii. KCL says all branch currents plus the sink current balance to zero.

Stack this for all NN nodes → a linear system:

  GV=I  \boxed{\;G\,\mathbf{V} = \mathbf{I}\;}

where GG is the N×NN\times N conductance (Laplacian) matrix:

  • Gii=jgijG_{ii} = \sum_j g_{ij} (sum of conductances at node ii),
  • Gij=gijG_{ij} = -g_{ij} (off-diagonal),
  • I\mathbf{I} = injected currents (supply pins are known-voltage sources, loads are current sinks).

Why this is beautiful: GG is exactly the same graph Laplacian used everywhere in networks. Solving GV=IG\mathbf V=\mathbf I gives every node voltage; IR drop at node ii is VddViV_{dd}-V_i.

For dynamic analysis we add capacitance/inductance and integrate over time: GV(t)+CV˙(t)=I(t)G\mathbf{V}(t) + C\,\dot{\mathbf V}(t) = \mathbf I(t)

Figure — Power grid and IR drop analysis

Worked Example 1 — single wire segment

A power rail carries I=20 mAI = 20\text{ mA} through a wire of resistance R=2 ΩR = 2\ \Omega.

ΔV=IR=0.020×2=0.04 V=40 mV\Delta V = IR = 0.020 \times 2 = 0.04\text{ V} = 40\text{ mV}

Why this step? Direct Ohm's law — one branch, one current. If Vdd=1.0V_{dd}=1.0 V, the gate sees 0.960.96 V. If the drop budget is 5%5\% (5050 mV), we pass (40 < 50).


Worked Example 2 — distributed rail (why widening the wire helps)

A rail of total resistance RR feeds nn equal cells, each drawing II, at points 1,2,,n1,2,\dots,n along the wire. Segment kk (nearest the pin is segment 1) carries the current of all cells beyond it.

Current in segment kk = (nk+1)I(n-k+1)I. With per-segment resistance r=R/nr=R/n:

ΔVend=k=1nr(nk+1)I=rIm=1nm=RnIn(n+1)2=IR(n+1)2\Delta V_{end} = \sum_{k=1}^{n} r\,(n-k+1)I = rI\sum_{m=1}^{n} m = \frac{R}{n}\,I\,\frac{n(n+1)}{2}=\frac{IR(n+1)}{2}

Why this step? The cell farthest from the pin suffers the accumulated drop of every segment its current traversed. For large nn, ΔVend12IRn=12(total I)(R)\Delta V_{end}\approx \tfrac12 I R n = \tfrac12 (\text{total }I)(R) — half of "all current through all resistance", a classic distributed result.

HOW to fix it: Halving RR (wider/thicker metal, more straps) halves the drop. Feeding from both ends roughly quarters it (two parallel halves, each shorter).


Worked Example 3 — decap sizing intuition (dynamic)

A block needs a transient charge QQ during a fast switch of duration Δt\Delta t, and we allow a droop ΔV\Delta V. Charge from a decap: Q=CΔVQ = C\,\Delta V.

If the block draws I=50I=50 mA for Δt=100\Delta t=100 ps and we allow ΔV=30\Delta V=30 mV to come from the cap: C=IΔtΔV=0.05×100×10120.03167 pFC = \frac{I\,\Delta t}{\Delta V} = \frac{0.05 \times 100\times10^{-12}}{0.03} \approx 167\text{ pF}

Why this step? The cap dumps Q=IΔtQ=I\Delta t locally so current needn't rush through LL; C=Q/ΔVC=Q/\Delta V from Q=CVQ=CV.



Recall Feynman: explain to a 12-year-old

Imagine a long garden hose feeding lots of sprinklers. The water pressure at the far sprinkler is weaker because the hose "eats" some pressure along the way. In a chip, "pressure" is voltage, "water" is electric current, and the "hose" is the metal wires. If a wire is thin (a skinny hose), the far-away gates get weak voltage and get slow and lazy. Engineers fix it by using fatter pipes (thicker/wider metal), adding more pipes (mesh), feeding from both ends, and putting little water tanks (capacitors) right next to thirsty parts so they don't have to gulp from the far tap all at once.


Active Recall

What is IR drop?
The supply-voltage reduction ΔV=IR\Delta V = IR caused by current flowing through the resistance of power/ground metal wires.
Why does IR drop hurt timing?
Lower local VddV_{dd} increases CMOS gate delay (td1/(VddVth)αt_d \propto 1/(V_{dd}-V_{th})^{\alpha}), potentially causing setup violations.
Static vs dynamic IR drop?
Static uses average current on a pure resistive network (IRIR); dynamic uses instantaneous switching current on an RLC network and adds the Ldi/dtL\,di/dt inductive term.
What matrix equation governs the power grid?
GV=IG\mathbf V = \mathbf I, where GG is the conductance (graph Laplacian) matrix from KCL at every node.
How is the conductance matrix built?
Gii=jgijG_{ii}=\sum_j g_{ij}, Gij=gijG_{ij}=-g_{ij}, with gij=1/Rijg_{ij}=1/R_{ij} for each resistor branch.
Where does the Ldi/dtL\,di/dt term come from?
Fast current ramp through package/bond-wire inductance LL produces vL=Ldi/dtv_L=L\,di/dt, momentarily starving the supply.
What do decoupling capacitors do?
Act as local charge reservoirs supplying fast transient current so it needn't rush through LL, reducing dynamic droop; sized by C=IΔt/ΔVC=I\Delta t/\Delta V.
End-of-rail drop feeding n equal cells?
ΔVend=IR(n+1)212ItotalR\Delta V_{end}=\dfrac{IR(n+1)}{2}\approx \tfrac12 I_{total}R for large nn.
Two design fixes for IR drop?
Lower resistance (wider/thicker metal, denser mesh, dual-end feed) and add decaps for dynamic droop.
Typical IR-drop budget?
Around 5% of VddV_{dd} (static + dynamic combined) as a sign-off rule of thumb.

Connections

Concept Map

is a

wire R plus current

lowers

alpha-power law

causes

split into

split into

adds

mitigated by

apply KCL per node

stacks into

G is

solve to get

Vdd minus Vi

Power delivery network

Mesh of resistors

IR drop dV = I R

Local Vdd

Gate delay increases

Setup timing violation

Static drop, resistive

Dynamic drop, RLC

L di/dt inductive term

Decoupling caps

Kirchhoff current law

Linear system G V = I

Graph Laplacian matrix

Node voltages Vi

Hinglish (regional understanding)

Intuition Hinglish mein samjho

Dekho, chip ke andar power grid ek bade resistor ke jaal jaisa hota hai jo package ke pins se lekar crore transistors tak current pahunchata hai. Problem yeh hai ki har metal wire ki thodi si resistance hoti hai, aur jab current us resistance se guzarta hai to Ohm ke law se voltage gir jaata hai — yahi hai IR drop (ΔV=IR\Delta V = IR). Matlab jo gate pin se door hai, use ideal VddV_{dd} se kam voltage milta hai.

Iska seedha asar timing par padta hai. Kam voltage matlab gate slow, aur slow gate matlab setup violation — chip fail. Isiliye IR drop koi alag "wire ka problem" nahi, yeh actually timing ka hi problem hai. Do type hote hain: static (average current, sirf resistive network, IRIR) aur dynamic (instantaneous switching current, RLC network, jismein Ldi/dtL\,di/dt ka extra term aata hai). Jab bada block ek saath switch karta hai to current tezi se badhta hai, aur package inductance LL se Ldi/dtL\,di/dt voltage droop banta hai — yeh static se 2-3 guna bada ho sakta hai.

Solve kaise karte hain? Har node par KCL lagao, saare nodes ka system banao: GV=IG\mathbf V = \mathbf I, jahan GG conductance (Laplacian) matrix hai. Isse har node ka voltage nikal aata hai, aur IR drop =VddVi= V_{dd} - V_i. Fix karne ke liye: metal ko chauda/mota karo (resistance kam), mesh dense karo, dono taraf se feed karo, aur hot blocks ke paas decoupling capacitors lagao jo local charge tank ki tarah kaam karke fast transient supply karte hain — taaki current ko door se LL ke through daudna na pade. Rule of thumb: total budget lagbhag 5% of VddV_{dd}.

Test yourself — VLSI Design

Connections