A pdverse.net mentor guide

Rush Current and the Daisy Chain

What it really costs to turn a power-gated domain back on, and the wire that makes it survivable.

41 min read16 figures Updated 2026-09-25

The same material, print-ready

A 48-page A4 PDF with every figure at full size. Free.

Enter your email and the download starts right away. No spam.


Part one

The mechanism

What a gated domain actually contains, what it costs to refill it, and who pays when you do it all at once.

01The question nobody asks #

You know how to turn a block off. Isolation on the outputs, save the registers you care about, drop the switch enable, and the domain stops leaking. Every low-power course teaches that, and every interview asks it.

Here is the question that follows, and it is the one almost nobody has an answer ready for. What does it cost to turn it back on?

Not in area. Not in leakage. In amperes.

   VDD                        1.0 V
   switch on-resistance       200 Ohm each, 5,000 in parallel  ->  40 mOhm
   grid resistance            20 mOhm

   I = 1.0 / 0.060  =  16.7 A

Sixteen amperes, out of a supply grid that was sized for a few hundred milliamps, for a few nanoseconds, every single time that block wakes up. The numbers are illustrative, but the order of magnitude is not.

That current has a name. It is called rush current, or in-rush current, and the mechanism that stops it from wrecking your chip is a wire that walks the enable signal through the switch fabric one cell at a time: the daisy chain.

This guide is about those two things, and about the third thing nobody mentions until it is too late, which is that the fix has a price measured in nanoseconds, and that price is an architecture decision, not a physical-design one.

Mentor's aside

Everything in this guide is built on one example domain, called PD_ACC, with 5,000 header switches and 20 nF of switched capacitance. Every number is worked in front of you so you can put your own numbers in its place. Where a value is a stand-in rather than a measurement, it says so.

What you should already know

You should know what a power domain is, what a header switch does, and roughly why isolation cells and retention flops exist. You do not need to have run a power-gating flow. If you have, the parts you will care about start at section 8.

02Off means discharged #

Two things are true of a gated-off domain, and the second one is the reason this guide exists.

The first is the one everyone knows: off is not zero. A domain with its header switches open still leaks - through the switches themselves, and through whatever always-on cells live inside it. The library characterises that leakage and the design has to budget for it. Powering down buys you most of the leakage back, not all of it.

The second is quieter and more expensive. Off means discharged.

Figure 1

the always-on grid, the switch row, the rail it feeds, and the cells below

The Fabric In ContextThe heavy orange strap across the top is the always-on VDD grid. Below it sits the row of switch cells, each with a stub up to VDD and a stub down to the hatched VVDD rail. Everything inside the dashed boundary - two rows of standard cells and a block of decap - is fed from VVDD and goes dark when the switches open. VSS at the bottom is always on and is shared with the rest of the die. This is the same region drawn in figures 4, 9, 13 and 14, at the same coordinates, so the pictures can be laid on top of one another.gated power domain PD_ACCVDD always onSWSWSWSWSWSWVVDDdecapon VVDDVSStrack pitch = 1 Palways-on supplyswitched railground, always oncells on VVDDdecapdomain boundary

Scroll the figure sideways to see all of it.

Read it: The heavy orange strap across the top is the always-on VDD grid. Below it sits the row of switch cells, each with a stub up to VDD and a stub down to the hatched VVDD rail. Everything inside the dashed boundary - two rows of standard cells and a block of decap - is fed from VVDD and goes dark when the switches open. VSS at the bottom is always on and is shared with the rest of the die. This is the same region drawn in figures 4, 9, 13 and 14, at the same coordinates, so the pictures can be laid on top of one another.

Figure 2

the same floorplan, with the domain off and every capacitance at 0 V

Where The Charge WentThe whole gated region is at 0 V, marked in rose. Three things had charge in them and no longer do: the gate capacitance of every cell in the two rows, the interconnect capacitance of every net between them, and the block of decoupling capacitance sitting on VVDD at the right. The always-on VDD and VSS straps, top and bottom, are unaffected - they never went anywhere.gated power domain PD_ACCVDD always onoffoffoffoffoffoffVVDDdecapon VVDDVSS123VVDD sits at 0 V, and so does everything on it1cell gate capacitance2net capacitance3decoupling capacitancealways-on supplyswitched railground, always ondischarged: sitting at 0 V

Scroll the figure sideways to see all of it.

Read it: The whole gated region is at 0 V, marked in rose. Three things had charge in them and no longer do: the gate capacitance of every cell in the two rows, the interconnect capacitance of every net between them, and the block of decoupling capacitance sitting on VVDD at the right. The always-on VDD and VSS straps, top and bottom, are unaffected - they never went anywhere.

When the switches open, the virtual rail stops being driven and everything hanging off it drains to ground. The gate capacitance of every cell in the domain. The interconnect capacitance of every net. And - the big one - every picofarad of decoupling capacitance you deliberately placed on that rail to keep it steady while the block was running.

All of it has to be put back before the block can work again. That stored charge deficit is where rush current comes from. It is not a parasitic effect or a second-order correction. It is the bill for the thing you asked for.

What being off costs you - illustrative

ItemValueWhat it means
Decap on VVDD14 nF -> 14 nCdeliberately placed, and the largest single item on the bill
Cell gate capacitance4 nF -> 4 nCevery input pin of every cell in the domain
Net capacitance2 nF -> 2 nCthe wires between them, plus the rail metal itself
Total to replace20 nF -> 20 nCthe number every calculation in this guide starts from
Where the charge sitsRoughlyWhat it is doing there
Decoupling capacitance on VVDDmost of itdeliberately placed, to hold the rail up under load
Cell gate capacitancea good shareevery input pin of every cell in the domain
Net capacitancethe restthe wires between them, plus the rail metal itself

Proportions vary enormously with the domain. What does not vary is that the decap you added for stability is also the decap you have to refill.

03The switch cell you will actually instantiate #

Before the arithmetic, the object. A power switch comes in two flavours, and the choice is usually made for you.

Figure 3

the two ways to cut a supply, as their real schematic symbols

Header And FooterOn the left, a P-channel device in series with VDD. Its gate is driven by EN; when it conducts, the rail below it - virtual VDD, or VVDD - is pulled up to VDD. On the right, an N-channel device in series with VSS, producing a virtual ground, VVSS. Both devices are drawn with their real terminals: the gate on the left, the two channel terminals top and bottom, and no path between them except through the channel.Header switchVDDVVDDENP-channel device, cuts the supplycreates virtual VDDFooter switchVVSSVSSENN-channel device, cuts the groundcreates virtual VSS

Scroll the figure sideways to see all of it.

Read it: On the left, a P-channel device in series with VDD. Its gate is driven by EN; when it conducts, the rail below it - virtual VDD, or VVDD - is pulled up to VDD. On the right, an N-channel device in series with VSS, producing a virtual ground, VVSS. Both devices are drawn with their real terminals: the gate on the left, the two channel terminals top and bottom, and no path between them except through the channel.

Headers dominate in practice. With a header, ground stays common across the whole die, which keeps isolation, retention and every substrate-related question simpler. The price is physical: a PMOS device carries roughly two and a half times less current per unit width than an NMOS, so a header fabric is substantially larger than a footer fabric of the same on-resistance. You pay in area to keep the ground clean.

The other axis is granularity.

Area overheadLeakage controlRush current
Coarse-grain: one shared switch network per blocksmallmediumlarge
Fine-grain: a switch per cell or small grouplargehighsmall

Most ASICs are coarse-grain. Which is to say: most ASICs have chosen the large-rush-current option, and then have to manage it.

Inside the cell

A switch cell is not just a transistor in a box. Open one up and there is a buffer in there too, and that buffer is the whole reason the rest of this guide works.

Figure 4

the device, and the buffer that will stagger it

One Switch CellThe enable enters at EN_IN on the left, passes through a buffer, and leaves at EN_OUT on the right. On the way it is tapped off to the gate of the P-channel device, which sits between the always-on VDD strap at the top and the switched VVDD rail at the bottom. The enable is not a broadcast net arriving at every cell at once - it arrives at this cell, and this cell passes it on.one switch cellVDDVVDDEN_INEN_OUTthe buffer is the stagger elementabout 30 ps from EN_IN to EN_OUTthe enable does not fan out:it walks through the fabric

Scroll the figure sideways to see all of it.

Read it: The enable enters at EN_IN on the left, passes through a buffer, and leaves at EN_OUT on the right. On the way it is tapped off to the gate of the P-channel device, which sits between the always-on VDD strap at the top and the switched VVDD rail at the bottom. The enable is not a broadcast net arriving at every cell at once - it arrives at this cell, and this cell passes it on.

In a real library those pins are usually called SLEEPIN and SLEEPOUT, or NSLEEPIN and NSLEEPOUT for the active-low flavour. The buffer between them has a propagation delay, and the cell datasheet will quote it. Hold on to that number: it is about to become the most important number in the design.

04Why there are thousands of switches #

Nobody puts 5,000 switch cells into a block because they enjoy the area. They do it because of a single, unavoidable piece of Ohm's law.

When the domain is running, all of its current flows through those switches. Whatever resistance they present appears as a voltage drop between the always-on grid and the rail the cells actually see. That drop comes straight out of the timing margin of every path in the domain.

Figure 5

steady-state IR drop against the number of switches in parallel

The Cost Of A Small FabricBoth axes are logarithmic and the mark is a line with points, not bars - a bar measures from zero, and a log axis has no zero. One switch gives a drop of 100 V, which is a polite way of saying the block does not run. The orange dashed line is a 50 mV droop budget. You need about 2,000 switches to meet it, and 5,000 to have any margin at all.101001,00010,000100,0001101001,00010,000switch cells in parallelIR drop across the switch fabric (mV)above 1,000 mV the model is invalid:the domain cannot draw 500 mA through thisdroop budget 50 mVone switch: 100 Vbudget met at 2,0005,000 switches: 20 mV500 mA of domain current through 200 Ohm per switch cell. Halving the drop meansdoubling the switch count, so the fabric keeps growing until the drop fits the budget -and that is the whole reason there are thousands of them.All values illustrative.

Scroll the figure sideways to see all of it.

Read it: Both axes are logarithmic and the mark is a line with points, not bars - a bar measures from zero, and a log axis has no zero. One switch gives a drop of 100 V, which is a polite way of saying the block does not run. The orange dashed line is a 50 mV droop budget. You need about 2,000 switches to meet it, and 5,000 to have any margin at all.

The arithmetic is not subtle. The drop is the domain current multiplied by the fabric resistance, and the fabric resistance is one switch's resistance divided by however many you put down in parallel:

   R_fabric  =  R_on / N
   V_drop    =  I_domain * R_on / N

   500 mA * 200 Ohm / 5,000   =   20 mV

Halving the drop means doubling the switch count. So the fabric grows until the drop fits inside the budget, and then it stops. That is the entire design rule, and it is a good one.

It is also a trap, and the next section is about why.

05The trap in that argument #

Look at that fabric resistance again. Forty milliohms. You arrived at it by insisting that the steady-state drop be small, and forty milliohms is a very good answer to that question.

Now ask a different question. What happens if you close all 5,000 of those switches at the same instant, with the rail at 0 V?

You have just connected a fully discharged capacitor to the supply grid through forty milliohms. Nothing in that circuit is limiting anything. The current is set by the resistance you worked so hard to make small.

Trap

This is the shape of the whole problem, and it is worth saying out loud before the numbers arrive. The same parameter that makes the domain work when it is on is what makes it dangerous at the moment it turns on. There is no sizing of the fabric that solves both. The fabric is not the place where this gets fixed - the sequencing is.

What the fabric buys, and what it costs - illustrative

ItemValueWhat it means
Switch fabric5,000 cellsroughly 3-5% of the domain area, spent entirely on being able to turn it off
Steady-state drop20 mVthe number the fabric was sized to hit
Fabric resistance40 mOhmthe same number, read as an impedance
Turn-on current if fired at once16.7 Athe same number, read as a liability

06Rush current, derived #

Three equations, and none of them is hard. The difficulty was never the mathematics - it is that the three are usually taught in different weeks.

One: the current

   I_peak  =  VDD / (R_switches + R_grid)
   R_switches = R_on / N  =  200 / 5,000  =  40 mOhm
   R_grid     = 20 mOhm                   (illustrative)

   I_peak  =  1.0 / 0.060  =  16.7 A

Two: the charge

   Q  =  C_rail * VDD
   C_rail = 20 nF   (decap + cell + net capacitance, illustrative)

   Q  =  20e-9 * 1.0  =  20 nC

Three: the time

   t_ramp  ~  C_rail * VDD / I_avg
   RC      =  0.060 * 20e-9  =  1.2 ns

Figure 6

current out of the always-on grid against time

The Surge, If You Fire Everything At OnceThe current axis is logarithmic because the interesting range covers four decades. The peak is 16.7 A at the instant the switches close, and the whole event decays with a 1.2 ns time constant - marked by the dashed vertical line. Within about eight nanoseconds it is over. That brevity is not good news: it is what makes the surge almost impossible to see in a static analysis, and it is why designs ship with this problem in them.0.010.1110100024681012time after the switches close (ns)current drawn from the always-on grid (A)16.7 A peakRC = 1.2 nsthe whole surge is over in a few nanosecondswhich is exactly what makes it hard to catchThe rail is a discharged 20 nF capacitor and the fabric is 40 mOhm, so nothing but thegrid limits the first nanosecond. Charge to be moved: 20 nC. Peak current: 1.0 V / 60mOhm.All values illustrative.

Scroll the figure sideways to see all of it.

Read it: The current axis is logarithmic because the interesting range covers four decades. The peak is 16.7 A at the instant the switches close, and the whole event decays with a 1.2 ns time constant - marked by the dashed vertical line. Within about eight nanoseconds it is over. That brevity is not good news: it is what makes the surge almost impossible to see in a static analysis, and it is why designs ship with this problem in them.

Read those three numbers together and the shape of the problem is plain. The energy is small: twenty nanojoules, and the charge behind it twenty nanocoulombs. The power is enormous, because it is delivered in about a nanosecond. Rush current is a dI/dt problem, and dI/dt is what a supply grid is worst at absorbing.

In practice

One assumption is buried in that peak, and it belongs here rather than two parts later. Sixteen amperes is the resistive limit: it assumes the only things between the supply and the rail are the switch fabric and the grid resistance. A real grid also has package and on-die inductance, and inductance responds to the rate of change rather than to the magnitude, so it is what actually shapes an event this fast. Section 16 returns to it when the stagger has to be derived from a droop budget.

07Who actually gets hurt #

The block being powered up is not the victim. It is at 0 V and has no opinion about anything. The damage lands on the always-on grid, and through the grid, on whatever else happens to be running.

Figure 7

two panels on the same supply: what leaves, and what fails

The Surge, And The Path That MissesPanel a: both domains hang off the same always-on VDD strap. PD_ACC is waking up and pulling 16.7 A out of it; PD_DSP, which was doing nothing wrong, sees 0.94 V instead of 1.00 V. Panel b: the same combinational path in PD_DSP drawn twice, at 1.00 V and at 0.94 V, against the same capture edge. At nominal voltage it has 40 ps of slack. At the drooped voltage it is 120 ps late.athe surge pulls the shared grid downVDD always onPD_ACC waking upPD_DSP mid-computation16.7 A out of the gridsees 0.94 V instead of 1.00 Vband the neighbour misses its setup checkat 1.00 Vcombinational pathslack +0.04 nsat 0.94 Vcombinational pathslack -0.12 ns00.250.500.751.00ns+0.16 ns of delayrequired time: the capture edgeNothing is wrong with PD_DSP. It failed because its neighbour woke up.All values illustrative.

Scroll the figure sideways to see all of it.

Read it: Panel a: both domains hang off the same always-on VDD strap. PD_ACC is waking up and pulling 16.7 A out of it; PD_DSP, which was doing nothing wrong, sees 0.94 V instead of 1.00 V. Panel b: the same combinational path in PD_DSP drawn twice, at 1.00 V and at 0.94 V, against the same capture edge. At nominal voltage it has 40 ps of slack. At the drooped voltage it is 120 ps late.

What one wake-up costs the neighbours - illustrative

ItemValueWhat it means
Droop on the always-on grid60 mV of 1.0 Vevery domain on that grid is slower for the duration
Neighbour path delay+160 psthe difference between +40 ps of slack and -120 ps
Straps carrying the surgeamperes, brieflyEM budget spent, judged on RMS over the wake-up rate
Retention marginwhatever the droop eatsthe deepest droop and the state you are preserving share a rail
Blocks that were doing nothing wrongall of themwhich is why this is so hard to attribute

1. IR droop on the shared grid

The surge pulls VDD down across the always-on network. Every domain sharing that grid slows down for as long as the droop lasts. Paths that closed comfortably at nominal voltage go negative. The failure appears in a block that is functioning perfectly, caused by an event in a block that is not even running yet, and it is brutally hard to debug for exactly that reason: there is nothing wrong with the thing that failed.

2. Electromigration on the fabric straps

Amperes through the straps that feed the switch fabric consume electromigration budget in those wires. A single event is nothing. A device that wakes its accelerator a thousand times a second, for years, is not a single event - it is a lifetime question, and it is answered with an RMS current over the duty cycle rather than a peak.

3. Ground bounce

The same current has to return. Ground rise on VSS has the same effect on timing as droop on VDD, and a worse effect on anything holding an analogue reference.

4. Retention corruption

This is the one that turns a power-saving feature into a respin. Retention flops hold their state on the always-on supply. If the droop is deep enough and lasts long enough, the state you powered the domain down specifically to preserve is the state you lose. The block wakes up, restores, and restores garbage.

Trap

If you take one thing from this section: a wake-up event is a functional risk to the rest of the die. Not to the block waking up. Reviewers who only simulate the domain being powered up are looking in the wrong place.

08Weak first, then strong #

The fix is not to make the fabric smaller. You already proved you cannot - the steady-state drop demands every one of those switches. The fix is to stop closing them all at the same time.

Split the fabric by strength and sequence it.

  1. Weak stage. A small number of deliberately high-resistance devices - or a separate weak leg inside each switch cell - turns on first. Their resistance is the current limit. The rail ramps over hundreds of nanoseconds instead of shorting.
  2. Strong stage. Once the rail has reached most of VDD, the strong switches close. By then the voltage across them is small, so the current is small, and they take over the steady-state load with the low resistance the design was sized for.
Mentor's aside

The weak stage is a current source you built out of a bad transistor on purpose. Everywhere else in the design, high on-resistance is a defect. Here it is the entire function of the device, and if you ever find yourself "optimising" the weak leg to be less resistive, you are removing the safety mechanism.

Figure 8

virtual rail voltage against time, same rail, same 20 nF

Three Ways To Close The Same FabricThe orange curve is all 5,000 switches at once: the rail is at voltage almost immediately, and that vertical edge is the 16.7 A event. The dashed violet curve is the weak stage alone - safe, and still climbing at 400 ns. The teal curve is weak then strong: the rail ramps under current limit until 150 ns, the strong stage closes at 0.85 V where there is little voltage left across it, and the rail is at full value by about 205 ns.00.250.500.751.000100200300400time after the sequence starts (ns)virtual rail voltage (V)all at once - the 16.7 A eventweak stage only, never releasedweak, then strongstrong stage closes at 0.85 VSame rail, same 20 nF, three ways of closing the same fabric. The teal and violet curvesare the same weak stage, so they lie on top of one another until the strong fabric closesat 150 ns and the teal steps to full value. Left to itself, the weak stage is still climbing at400 ns.All values illustrative.

Scroll the figure sideways to see all of it.

Read it: The orange curve is all 5,000 switches at once: the rail is at voltage almost immediately, and that vertical edge is the 16.7 A event. The dashed violet curve is the weak stage alone - safe, and still climbing at 400 ns. The teal curve is weak then strong: the rail ramps under current limit until 150 ns, the strong stage closes at 0.85 V where there is little voltage left across it, and the rail is at full value by about 205 ns.

Two numbers make the teal curve worth having. The peak current never exceeds a few hundred milliamps, which the grid absorbs without noticing. And the whole thing finishes in about 205 nanoseconds instead of eight, which sounds like a loss until you look at what those eight nanoseconds cost.

In library terms this arrangement is sometimes called mother-daughter: a strong "mother" switch and a weak "daughter" that fires first. The same idea also appears as several independent chains staggered against each other, which is what you reach for when one chain cannot meet both the current limit and the latency budget.

09The daisy chain #

Splitting the fabric into two strengths is half the answer. The other half happens within each stage, and it is where the name in the title comes from.

Inside a stage, the enable does not broadcast. It ripples.

Figure 9

one net, threaded through the switch row in placement order

The Enable, Walking Through The FabricThe enable arrives at PSE on the left and enters the first switch cell. Each cell passes it to the next through its own internal buffer, so the arrows along the chain are not decoration - they are the direction the signal physically travels. The first cell sees the enable at t = 0; the third at about 60 ps; the last, five thousand buffers later, at about 150 ns. The violet return path is PSE_ACK, and it is the far end of the same chain coming back.gated power domain PD_ACCVDD always onSWSWSWSWSWSWVVDDdecapon VVDDVSSPSEt = 0+60 ps+150 nsPSE_ACKthe acknowledge is the far end of the chain itself, not a signal from the controlleralways-on supplyswitched railground, always onswitch enable chainacknowledge, always on

Scroll the figure sideways to see all of it.

Read it: The enable arrives at PSE on the left and enters the first switch cell. Each cell passes it to the next through its own internal buffer, so the arrows along the chain are not decoration - they are the direction the signal physically travels. The first cell sees the enable at t = 0; the third at about 60 ps; the last, five thousand buffers later, at about 150 ns. The violet return path is PSE_ACK, and it is the far end of the same chain coming back.

Each switch cell has an enable input and an enable output, and the cells are stitched together so that switch n hands the enable to switch n+1 after its own buffer delay. The buffer inside the cell - the one you met in section 3 - is the stagger element. That is what it is for. It is not there to drive the gate; the gate is a few femtofarads. It is there to delay.

Physically, the chain is a long signal net threading the entire switch fabric in placement order. The tool builds it and orders it. Your job is to constrain it, to check that the electrical order matches the physical order, and to make sure the far end genuinely reports back.

What the chain buys, and what it costs - illustrative

ItemValueWhat it means
Chain net1 net, ~5,000 loadsa long, ordered, timing-relevant signal through the whole fabric
Routing tracks1 track for most of the fabric widthit runs in the band between the switch row and the rail
Stagger per cell~30 psthe buffer delay inside the switch cell, from its datasheet
Peak current16.7 A -> ~250 mAthe whole point: about a 60x reduction
Turn-on latency~8 ns -> ~205 nswhat you paid for it

10Mentor's aside: it is not a shift register #

On a floorplan, the switch enable chain and a scan chain look identical. Both are a single net that visits a long list of cells in placement order. Both are reordered by the tool after placement. Both produce a satisfying-looking snake when you highlight them.

They have nothing else in common, and conflating them causes real mistakes.

Scan chainSwitch enable chain
What travels along itdifferent data at every cell, one bit per clockone edge, the same edge, arriving later and later
Clocked?yes - it only advances on a clock edgeno - it is pure combinational propagation
What the delay doesnothing; it is hidden between clock edgesit is the function - the delay is why the chain exists
If you speed it upyou shift faster, which is goodyou make the surge worse, which is the opposite of good
When it runsin testevery single wake-up, in the field
Mentor's aside

The practical consequence: never let anyone "optimise" the switch chain the way they would optimise a scan path. Buffering it up to reduce its delay removes the stagger, and the stagger is the safety mechanism. If a timing script is treating that net as a slow path to be fixed, the script is wrong, not the net.

Low-Power & UPF Handbook

Read the complete low-power guide library covering power domains, level shifters, isolation clamps, state retention, and UPF signoff verification.

Low-Power VLSI & UPF Handbook — nine chaptersLow-Power & UPFDomains, isolation, retention, and multivoltage UPF. →

11The arithmetic nobody does #

Everything so far, in one place, worked end to end. Substitute your own numbers; the structure does not change.

the stagger

   5,000 switch cells  x  30 ps per cell
   = 150 ns   just to propagate the enable from end to end

the surge, if fired together

   R_on per switch                200 Ohm    (illustrative)
   N                              5,000
   R_switches = 200 / 5,000       40 mOhm
   R_grid                         20 mOhm    (illustrative)
   VDD                            1.0 V
   I_peak = 1.0 / 0.060           16.7 A

the charge to be replaced

   C_rail                         20 nF      (illustrative)
   Q = C x V = 20e-9 x 1.0        20 nC

the weak stage, current-limited

   R_weak (all weak legs)         4 Ohm      (illustrative)
   I_weak at t = 0 = 1.0 / 4      250 mA
   RC = 4 x 20e-9                 80 ns
   ramp to ~0.85 V                ~150 ns

total wake-up latency

   enable propagation             ~150 ns
   rail settling                  ~55 ns
   acknowledge return             tens of ns
   reset release, restore, isolation release, clock restart
   ---------------------------------------------------------
   ~400 ns, and microseconds on a large domain
Takeaway

Every one of those values is a stand-in. Two of them are not negotiable in shape, whatever you substitute: the peak current falls as the stagger rises, and the latency rises with it. You are choosing a point on that trade, not escaping it.

12The acknowledge is the only evidence #

The controller asserts the enable. Some time later the domain is ready. How does the controller know?

There is exactly one honest answer: the far end of the chain tells it. That signal is the acknowledge - PSE_ACK in this guide, SLEEPOUT or NSLEEPOUT at the library cell. It is the enable, having walked the entire fabric, arriving back.

Three things that must be true of it

  • It must be always-on logic. It originates inside a domain that is at 0 V for most of its path. Every cell on it needs a supply that does not go away, or the acknowledge is not a signal, it is a floating node.
  • It must come from the actual far end. Not from the controller's own counter dressed up as an acknowledge. Not from the first cell. The whole value of the signal is that it proves the last switch closed.
  • The chain order must match the physical order. If the tool orders the chain by netlist name rather than placement, the "far end" electrically may be the near end physically, and the acknowledge will arrive before the fabric is actually on.
Trap

The bug class here is recurring and expensive. An acknowledge that is faked, mis-ordered or accidentally tied off produces a design that works in every simulation, works on most parts, and fails intermittently at temperature on the rest - because the domain is being clocked while its rail is still climbing. If you review one thing in a power-gating implementation, review this.

In UPF, the acknowledge belongs to the switch declaration itself, along with the delay you expect it to take.

13The full sequence, both directions #

Power-down and power-up are not mirror images, and writing them out as if they were is a reliable way to build a controller that almost works.

Figure 10

the control signals of one gated domain on a single time axis

Down, And Back UpReading left to right: the clock stops, isolation goes on, SAVE captures the retained state, RESET is applied, and the switches open strong-first so the last thing conducting is the weak leg. The shaded band is the domain off. Coming back, the weak switch closes first and VVDD - drawn as the analogue ramp it is, not as a logic signal - climbs under current limit; the strong switch follows; PSE_ACK returns from the far end of the chain; only then does RESET release, RESTORE fire, ISO come off, and CLK start. The first wait is counted by the controller; the second is guaranteed by the acknowledge. The two switch rows show the switch state, high when the device conducts; the UPF control port in section 14 is active-low, so PSE is their inverse.power downoffpower upCLKISOSAVERESETstrong switchweak switchVVDD1.0 V0 VPSE_ACKRESTORErail ramp: counted in cycleschain reports back: PSE_ACKThe two switch rows show the switch state: high means the device is conducting.

Scroll the figure sideways to see all of it.

Read it: Reading left to right: the clock stops, isolation goes on, SAVE captures the retained state, RESET is applied, and the switches open strong-first so the last thing conducting is the weak leg. The shaded band is the domain off. Coming back, the weak switch closes first and VVDD - drawn as the analogue ramp it is, not as a logic signal - climbs under current limit; the strong switch follows; PSE_ACK returns from the far end of the chain; only then does RESET release, RESTORE fire, ISO come off, and CLK start. The first wait is counted by the controller; the second is guaranteed by the acknowledge. The two switch rows show the switch state, high when the device conducts; the UPF control port in section 14 is active-low, so PSE is their inverse.

Down

  1. flush any outstanding bus or external transactions
  2. stop the clock
  3. assert isolation on the domain outputs
  4. assert SAVE, capturing state into the retention latches
  5. assert reset
  6. drop the switch enable

Up

  1. assert the weak switch enable, and let the rail ramp
  2. assert the strong switch enable
  3. wait for PSE_ACK from the far end of the chain
  4. release reset
  5. assert RESTORE, reloading the retained state
  6. de-assert isolation
  7. restart the clock, glitch-free

One naming point before the list, because it trips people up. The figure above draws the switch state: high means the device is conducting. The UPF control port you will meet in section 14 is active-low, so the signal called PSE in the intent file is the inverse of those two traces. Keep the two straight and the sequence reads the same either way; mix them up and you will build a controller that powers the domain down when it means to wake it.

In practice

Notice which waits are which. The rail ramp is counted - the controller holds for a programmed number of cycles, because nothing reports "the rail reached 0.85 V". The chain completing is acknowledged - a real signal comes back. Conflating the two, in either direction, is one of the most common design errors in this area. A counter where you needed an acknowledge is a race; an acknowledge where a count would do is a signal you now have to route and time for no benefit.


Part two

The implementation

Writing the intent down, and then building it out of metal, vias and placement constraints.

14Expressing it as power intent #

None of this is real until it is written down somewhere both the implementation tool and the verification tool will read. That place is the power intent file.

the switch, and the acknowledge

create_power_switch PD_ACC_SW \
  -domain             PD_ACC \
  -input_supply_port  {vin  VDD} \
  -output_supply_port {vout VDD_ACC_SW} \
  -control_port       {sleep U_PC/PSE} \
  -ack_port           {ack   U_PC/PSE_ACK} \
  -ack_delay          150 \
  -on_state           {on  vin {!sleep}} \
  -off_state          {off {sleep}}

The acknowledge belongs to the switch declaration, and so does the delay you expect it to take - which is the chain length you calculated, not a guess. -ack_delay is in the design's UPF time unit; here that is nanoseconds, so 150 is the 150 ns from section 11.

Two things in that fragment are worth dwelling on. -ack_port names the signal that comes back from the far end of the chain, and -ack_delay is where the 150 ns you derived in section 11 actually lands in the database. If those two disagree with the silicon, every downstream check inherits the disagreement.

weak and strong, as two declarations

create_power_switch PD_ACC_SW_WEAK \
  -domain             PD_ACC \
  -input_supply_port  {vin  VDD} \
  -output_supply_port {vout VDD_ACC_SW} \
  -control_port       {sleep U_PC/PSE_W} \
  -on_state           {on vin {!sleep}}

map_power_switch PD_ACC_SW_WEAK -domain PD_ACC \
  -lib_cells {HDRSW_WEAK_X1}
map_power_switch PD_ACC_SW      -domain PD_ACC \
  -lib_cells {HDRSW_X8}

The power intent says which control drives which switch. It is the library cell chosen by map_power_switch that makes one of them weak and the other strong - the strength is a property of the device, not of the declaration.

In practice

If you are looking for an option that says "stagger this fabric by 30 ps per cell", there is not one, and you should be suspicious of anyone who tells you otherwise. The chain is built by the implementation tool from the switch cells' own enable-in and enable-out pins, in placement order. The power intent declares the switch, its control and its acknowledge; the physical flow decides what walks where.

One more thing about the pair above: both declarations drive the same output supply port, which is deliberate - it is one fabric described in two strengths. Some tools expect a distinct output supply port per switch declaration, so check yours before you assume this elaborates cleanly.

isolation on the way out

set_isolation PD_ACC_ISO -domain PD_ACC \
  -isolation_power_net  VDD \
  -isolation_ground_net VSS \
  -clamp_value 0 -applies_to outputs

set_isolation_control PD_ACC_ISO -domain PD_ACC \
  -isolation_signal U_PC/ISE -isolation_sense high

A clamp value of 0 is implemented with an AND gate, a clamp value of 1 with an OR. Note which supplies the isolation cell itself runs from: VDD and VSS, the always-on pair. An isolation cell powered by the rail it is isolating is not an isolation cell.

retention, and the controls that drive it

set_retention PD_ACC_RET -domain PD_ACC \
  -retention_power_net  VDD \
  -retention_ground_net VSS \
  -elements {u_acc/u_ctrl}

set_retention_control PD_ACC_RET -domain PD_ACC \
  -save_signal    {U_PC/SRE high} \
  -restore_signal {U_PC/SRE low}

SAVE and RESTORE originate in the always-on controller, and must never be mis-asserted together. The retention power net is the always-on supply - that is the whole mechanism: a second latch on a rail that does not go away.

And the state that is not a state

The domain has two declared operating states. It spends real time in neither of them.

Power stateVDDVDD_ACC_SWThe domain is
RUN1.0 V1.0 Vrunning
ramping1.0 V0 -> 1.0 Vnot in the table
SHUT1.0 Voffoff
on at full voltageramping - not a declared stateoffnot in the table, therefore illegal

For the two or three hundred nanoseconds the rail spends climbing, the domain is in a condition that appears nowhere in the power state table. That is not an oversight in the table. A power state table describes operating points - conditions in which the design is expected to function correctly - and a rail at 0.6 V is not one of those. The whole purpose of the control sequence is to guarantee that nothing observes the domain while it is in that condition: isolation is still on, reset is still applied, and the clock has not started.

If you ever find yourself wanting to add a "ramping" row to the table so that some check stops complaining, stop. The check is telling you that something is looking at the domain too early.

Trap

The related mistake is to declare the ramping condition as a legal state with a nominal voltage somewhere in the middle. Do that and the tool will cheerfully insert level shifters, characterise timing and close paths for an operating point that exists for two hundred nanoseconds and is never supposed to be used.

15Building it in metal #

Everything up to here has been electrical. Now it has to occupy area, consume tracks and connect through vias, and each of those has a bill.

Ring or grid

Figure 11

ring and grid, identical domain, identical scale

Two Ways To Arrange The Same FabricPanel a puts the switch cells around the perimeter of the domain. Nothing is displaced inside, but every milliamp destined for the centre travels the full half-width of the block through the rail metal, so the worst droop is in the middle. Panel b weaves four columns of the same switch cells through the domain. The drop is even everywhere, and the cost is drawn rather than asserted: the same area now holds 20 standard cells instead of 28.aswitches in a ringall the drop happens in the middlebswitches in a gridfour columns in, eight cells outswitch cellsstandard cellsdomain boundarySame domain and the same scale in both panels.Panel a holds 28 standard cells; panel b holds 20.

Scroll the figure sideways to see all of it.

Read it: Panel a puts the switch cells around the perimeter of the domain. Nothing is displaced inside, but every milliamp destined for the centre travels the full half-width of the block through the rail metal, so the worst droop is in the middle. Panel b weaves four columns of the same switch cells through the domain. The drop is even everywhere, and the cost is drawn rather than asserted: the same area now holds 20 standard cells instead of 28.

Ring against grid - illustrative

ItemValueWhat it means
Ring: cells displaced0the switches sit outside the placement area
Ring: worst-case rail dropcentre of the blockthe current has the furthest to travel where it is densest
Grid: placement area lost8 of 28 cellsfour columns of switches woven through the rows, and the legalisation churn that follows
Grid: worst-case rail dropeven across the blockevery cell is close to a switch
Either waythe same 5,000 cellsthe arrangement changes where the drop lands, not how much fabric you need

The virtual rail is real metal

It is easy to talk about virtual VDD as though it were a concept. It is not. It is a supply network with its own trunks, its own straps, its own via stacks and its own IR budget - and that budget is spent on top of whatever the always-on grid has already spent.

Figure 12

trunks, drops, straps and the vias that join them

The Switched Rail, In MetalThe always-on VDD trunk runs horizontally on M4 at the top. M5 drops take it down to the switch cells, and more M5 carries the switched output to the VVDD trunk, also on M4. From there M3 straps run down to the M2 rail that actually feeds the cell rows. Every junction is a via with its cut drawn inside visibly larger enclosing metal on both layers, because it is the enclosure, not the cut, that consumes routing resource. The track grid is drawn underneath and the pitch is dimensioned once.t3t6t9t12t15M4 VDDSWSWSWM4 VVDDM2 cell railfour track pitches = 4 Ppreferred direction: M2 and M4 horizontal, M3 and M5 verticalalways-on trunkswitched trunkM5 dropsM3 strapscell railcut plus enclosure

Scroll the figure sideways to see all of it.

Read it: The always-on VDD trunk runs horizontally on M4 at the top. M5 drops take it down to the switch cells, and more M5 carries the switched output to the VVDD trunk, also on M4. From there M3 straps run down to the M2 rail that actually feeds the cell rows. Every junction is a via with its cut drawn inside visibly larger enclosing metal on both layers, because it is the enclosure, not the cut, that consumes routing resource. The track grid is drawn underneath and the pitch is dimensioned once.

What the switched rail costs - illustrative

ItemValueWhat it means
M4 tracks consumed2 trunks instead of 1the switched rail needs its own trunk alongside the always-on one
M5 drops3 per switch group, doubledone set above the switch, one below
Via stacks2 per dropeach with enclosure on both layers
Free M4 tracks after11 of 15illustrative, and the number reviewers should ask for
IR budgetsplit in twogrid drop plus switch drop plus rail drop, all before the cell

Secondary PG, and the cells that need it

Figure 13

a retention flop, and what it demands of the floorplan

Two Supplies Into One CellThe flop takes its primary supply from VVDD, like every other cell in the domain, and a second supply - the secondary PG pin - from the always-on VDD. SAVE and RESTORE arrive from the always-on controller. On the floorplan at the right, that means a second strap has to be present wherever such a cell can be placed, which turns a library property into a placement constraint.retention flopDCLKQQNVVDD primaryVDD secondary PGSAVERESTOREboth always-on, like the supplythat holds the stateon the floorplanVVDDVDDRETthe second strap has to reachevery retention flop

Scroll the figure sideways to see all of it.

Read it: The flop takes its primary supply from VVDD, like every other cell in the domain, and a second supply - the secondary PG pin - from the always-on VDD. SAVE and RESTORE arrive from the always-on controller. On the floorplan at the right, that means a second strap has to be present wherever such a cell can be placed, which turns a library property into a placement constraint.

This is where a power-gating flow stops being about switches and starts being about placement. Dual-rail cells can only go where both rails exist. The tool expresses that with secondary PG placement constraints, either declared with create_secondary_pg_placement_constraints and committed, or derived from the design with derive_secondary_pg_placement_constraints. Either route needs the advanced legalizer enabled.

What retention costs - illustrative

ItemValueWhat it means
Extra strap1 per rowan always-on strap on every row that hosts dual-rail cells, taking routing resource from the layers the signals want
Placement freedomrestricted to constrained regionsretention flops cannot go wherever the timing would prefer
Cell areaa retention flop is larger than a plain flopand leakier, because the save latch never turns off
Wake-up benefitno reload, no reset-and-refillwhich is the reason anyone accepts the three costs above

Signals that have to survive the dark

Figure 14

a buffer that stays alive inside a domain that does not

An Always-On CrossingA signal enters the gated domain on the left, passes through a buffer sitting physically inside it, and leaves on the right. The buffer is drawn with a heavy orange outline because its supply comes down from the always-on VDD strap, not from the VVDD rail its neighbours use. Everything around it can be at 0 V while this cell keeps working.gated power domain PD_ACCVDD always onSWSWSWSWSWSWVVDDVSSAO bufferno via hereits supply comes down on M5, not from VVDDinoutthis buffer stays alive while everything around it is at 0 Valways-on supplyswitched railground, always onAO supply dropalways-on cell

Scroll the figure sideways to see all of it.

Read it: A signal enters the gated domain on the left, passes through a buffer sitting physically inside it, and leaves on the right. The buffer is drawn with a heavy orange outline because its supply comes down from the always-on VDD strap, not from the VVDD rail its neighbours use. Everything around it can be at 0 V while this cell keeps working.

Every control signal in this guide is one of these. The switch enable walking through the fabric, the acknowledge coming back, the isolation enable, SAVE and RESTORE - all of them run through logic that is physically inside a domain that spends most of its life at zero volts. The tool sets is_always_on_logic on buffers and inverters whose supply differs from the domain primary, and check_mv_design is what catches the ones it missed.

What always-on logic costs - illustrative

ItemValueWhat it means
Always-on cells inside the domainone per crossing, plus repeaterseach needs the second strap within reach
Leakage while offthey leak the whole timea domain that is "off" is never quite off
Routingthe second supply follows every one of themwhich is why they are worth minimising, not scattering

Decap's double edge

Figure 15

what it does while the domain runs, and while the domain wakes

The Same Capacitor, Read TwicePanel a: the domain is running, the cells switch, and charge flows out of the decap into the rail to hold it up - which is exactly why it was placed. Panel b: the domain is waking, and the arrow reverses. Every picofarad that steadied the rail in panel a has to be refilled through the switch fabric in panel b. Same silicon, opposite sign.awhile the domain runsVVDDdecapholds the rail up under loadbwhile the domain wakesVVDDdecapand all of it has to be refilledOne piece of silicon, two readings. Sizing it is a trade, not a free win.charge leaving the decapcharge going into the decap

Scroll the figure sideways to see all of it.

Read it: Panel a: the domain is running, the cells switch, and charge flows out of the decap into the rail to hold it up - which is exactly why it was placed. Panel b: the domain is waking, and the arrow reverses. Every picofarad that steadied the rail in panel a has to be refilled through the switch fabric in panel b. Same silicon, opposite sign.
Mentor's aside

This is the most honest trade in the whole subject, and almost nobody states it. Adding decap to a switched rail improves dynamic IR while the block runs and makes the wake-up worse, in direct proportion. If someone asks you to "just add more decap" to fix a droop problem on a gated domain, the correct response is to ask what it does to the turn-on.

What decap costs on a switched rail - illustrative

ItemValueWhat it means
Decap on VVDD+Cbetter dynamic IR while running
Charge to replace at wake+C x VDDthe same capacitance, exactly
Ramp time at fixed weak currentrises in proportionmore decap means a longer wake-up, for free
Leakagedecap leaks tooa small cost, paid continuously

16Signing it off #

Four checks. Three of them are not the ones a normal block runs.

1. The surge is a transient, so analyse it as one

A static voltage-drop analysis will not find this. Static analysis builds a resistor network, replaces the supply with an ideal source, computes an average current per cell and distributes it. It explicitly assumes that decoupling capacitance smooths out the peaks, and it explicitly excludes localised dynamic effects. A 16.7 A event lasting a nanosecond is precisely the localised dynamic effect it was built to ignore.

analyze_rail -voltage_drop static
analyze_rail -voltage_drop dynamic
analyze_rail -electromigration

Run the dynamic analysis with the wake-up event in the stimulus, not just the running block. If your dynamic run never has the domain turning on in it, you have not analysed the thing this guide is about.

2. Electromigration over the duty cycle

A peak current does not by itself violate an electromigration rule; a sustained RMS current does. The question for the fabric straps is not "how big is the surge" but "how often does it happen, for how many years". A domain that wakes ten times a second and one that wakes ten thousand times a second have the same peak and wildly different lifetimes.

3. From droop budget to stagger

The chain length is not a taste. It falls out of the droop budget, and you can derive it in four lines.

   droop budget                    50 mV   of 1.0 V  (illustrative)
   grid impedance at the event     20 mOhm
   allowed current                 0.050 / 0.020  =  2.5 A
   unstaggered current             16.7 A
   -> the fabric must be spread by at least  16.7 / 2.5  =  6.7x
   and in practice by much more, because the grid is inductive

That last line matters. A supply grid is not a resistor; it has package and on-die inductance, and inductance responds to dI/dt, not to I. Spreading the same charge over a longer time helps twice - once through the resistive term, and again, more strongly, through the inductive one. It is also why the number you actually ship usually has a good deal of margin on top of the arithmetic above.

4. The control path is a timing path

The enable, the acknowledge, the isolation enable and the retention controls are not "power signals" exempt from static timing analysis. They are ordinary constrained paths that happen to live in an always-on domain and cross into one that switches off.

  • SAVE and RESTORE have setup and hold requirements against the clock that captures them. Getting the sense backwards restores the wrong data, and it will not show up in a functional simulation that never powers down.
  • The isolation enable has to be stable before the rail moves and must not release until after it has settled. Both of those are timing checks against the sequence, not just functional intent.
  • The chain itself is a long combinational path across the block. It is not a violation that it is slow; it is a violation if anything downstream assumes it is fast.
Trap

And the correction that gets missed in interviews more than any other in this area: the worst-case corner for power is not the worst-case corner for timing. Power is worst at fast process, maximum voltage, maximum temperature - fast devices draw more, higher voltage costs more in both the V-squared and the leakage terms, and leakage climbs near-exponentially with temperature. Setup timing, by contrast, is worst at slow process and minimum voltage. The surge you are trying to bound and the path you are trying to close are measured at opposite ends of the corner space.

So the wake-up event needs signing off at the fast corner, where the switch devices are strongest and the surge is largest, while the paths that droop breaks are closed at the slow corner. Two corners, one event. A scenario list that only contains one of them is not covering this.


Part three

The judgement

When the whole technique is worth it, when it is not, and what to remember either way.

17When power gating loses #

Every section so far has assumed power gating is worth doing and asked how to do it safely. This section asks the other question, and the answer is not always yes.

Gating a domain saves leakage while the domain is off. It costs energy to put the charge back, and it costs energy to run the controller, the isolation and the retention through the whole sequence. So:

   gating wins when
     leakage saved while off  >  energy to refill  +  energy in latency

   the latency term is dropped below: see the note

   P_leak x t_off  >  C_rail x VDD^2

   t_off  >  C_rail x VDD^2 / P_leak
          =  20e-9 x 1.0^2 / 8e-3
          =  2.5 us

The arithmetic drops the second term on the right, and it should say so. During the ramp the domain is held in reset with its clock stopped, so almost nothing in it is switching and the energy burned during the wake-up is small beside the 20 nJ needed to refill the rail. Dropping it makes the break-even slightly optimistic - the real crossover sits a little later than 2.5 us, not earlier. If your controller runs the domain at speed while the rail settles, put the term back.

Figure 16

net energy saved against off-time, against the clock-gating alternative

How Long It Has To Stay OffThe teal line is power gating: it starts 20 nJ in the hole - the cost of refilling the rail - and climbs at the leakage rate. It crosses zero at 2.5 microseconds. The dashed orange line is clock gating, which saves less per unit time but has no rail to refill, so it starts at zero and is never negative. Below the crossover, the cheaper technique is the one that does less.-300306090120100 ns1 us10 us100 us1 mstime the domain stays offnet energy saved (nJ)power gatingclock gatingbreak-even 2.5 usbelow zero, powering down costs more than it savespower gating: 8 mW of leakage saved, 20 nJ to refill the railclock gating: 1.1 mW saved, and no rail to refillBoth curves are measured against the same baseline: the domain left on and clocked.Gating wins only when the leakage saved while off exceeds the energy needed to refillthe rail. With these numbers that crossover is 2.5 us.All values illustrative.

Scroll the figure sideways to see all of it.

Read it: The teal line is power gating: it starts 20 nJ in the hole - the cost of refilling the rail - and climbs at the leakage rate. It crosses zero at 2.5 microseconds. The dashed orange line is clock gating, which saves less per unit time but has no rail to refill, so it starts at zero and is never negative. Below the crossover, the cheaper technique is the one that does less.

Below that crossover, powering the domain down costs more energy than leaving it on and clock-gating it. And the crossover is not a small number. For an accelerator that wakes for a two-microsecond burst and sleeps for three, power gating is a net loss - it is doing work, adding risk and consuming area to make the chip use more energy.

Two honest consequences follow.

  • Wake-up latency is an architecture number, not a physical-design one. A 400 ns turn-on consumes a fifth of a two-microsecond burst before any useful work happens. The team that chose the duty cycle and the team that sized the fabric need to have had the same conversation.
  • The deeper you power down, the more it costs to come back. That is not a slogan. Retention off, full reset and reload is cheapest in leakage and most expensive in wake-up. Retention on is the middle. Clock gating is the shallowest and the fastest. Which one wins is decided entirely by how long the domain is actually idle - a number that comes from software, not from silicon.
Takeaway

If you can find out one thing before committing to a power-gating implementation, find out the expected idle duration distribution. Not the average - the distribution. A workload that idles for ten milliseconds at a time and a workload that idles for one microsecond at a time want completely different answers, and the second one may not want power gating at all.

18What to carry away #

Twelve statements. If you can say each of these from memory and defend it, you know this subject better than most people who have shipped it.

  1. Off means discharged. The charge in every gate, every net and every picofarad of decap on the switched rail has to be put back before the block can run.
  2. The fabric is sized by the steady-state IR drop, and that sizing is exactly what makes the turn-on dangerous.
  3. Rush current is limited only by the switch resistance in parallel with the grid. With 5,000 switches and 1 V, that is amperes.
  4. It is a dI/dt problem, not an energy problem. The energy is tiny; the rate is not.
  5. The damage lands on the always-on grid and on the neighbours, not on the block being woken.
  6. The worst outcome is retention corruption: losing the state you powered down to keep.
  7. The fix is weak switches first, strong switches after, with the enable rippling through the fabric rather than broadcasting.
  8. The buffer inside the switch cell is the stagger element. Its delay is the mechanism, not an overhead.
  9. 5,000 cells at 30 ps is 150 ns of propagation before the rail has even settled.
  10. Only the acknowledge from the far end of the chain proves the fabric is on. A counter is not evidence.
  11. The worst-case power corner is fast, maximum voltage, maximum temperature - the opposite of the worst-case setup corner.
  12. Below some idle duration, power gating costs more than it saves, and clock gating wins. Find out what that duration is before you build the fabric.

19Interview questions #

Fourteen questions, in the order they tend to be asked. Each answer is followed by what is really being tested, because that is usually different from what is being asked.

Beginner
Q1. What is rush current, and where does it come from?
Rush current, or in-rush current, is the surge drawn from the always-on supply at the instant a gated domain is switched back on. While the domain was off, every capacitance inside it drained to zero: cell gate capacitance, net capacitance, and the decoupling capacitance on the switched rail. Turning the switches on connects that discharged capacitance to the supply through the on-resistance of the fabric, which is deliberately tiny. The peak is supply voltage divided by switch resistance in parallel with grid resistance.
What is happening A discharged capacitor is being connected to a voltage source through a near short. Nothing in the circuit limits the current except the resistance you worked to minimise.
The trap Saying it is caused by the cells starting to switch. The cells are still in reset; the current is charge replacement, not activity.
What is being tested Whether you understand that "off" implies "discharged", rather than treating power gating as a purely logical operation.
Beginner
Q2. Header or footer - which would you choose, and why?
A header is a P-channel device in series with VDD, producing a virtual VDD. A footer is an N-channel device in series with VSS, producing a virtual ground. Headers dominate in practice because ground stays common across the die, which keeps isolation, retention and substrate questions simpler. The cost is area: a PMOS carries roughly two and a half times less current per unit width than an NMOS, so a header fabric is considerably larger for the same on-resistance.
What is happening You are trading silicon area for a clean, shared ground reference.
The trap Claiming the footer is always better because NMOS is stronger. It is stronger, and it also gives you a virtual ground that complicates everything that references ground.
What is being tested Whether you can state a trade-off in both directions rather than reciting one preference.
Beginner
Q3. Why are there thousands of switch cells in one domain?
Because all of the domain current flows through them while it runs, and their resistance appears as a voltage drop between the always-on grid and the rail the cells actually see. That drop comes out of the timing margin of every path in the domain. The drop is domain current times one switch's resistance divided by the number in parallel, so halving the drop means doubling the count. The fabric grows until the drop fits the droop budget.
What is happening An Ohm's law constraint on the running block sets the fabric size. Nothing about turning on or off is involved in that calculation.
The trap Assuming the count is driven by how fast you want the domain to turn on. It is driven by the steady-state drop, and the turn-on is the consequence.
What is being tested Whether you can connect a physical parameter to a timing consequence.
Beginner
Q4. What does a daisy chain do in a power-switch fabric?
It staggers the turn-on in time. Rather than broadcasting the enable to every switch cell at once, the cells are stitched in series: each has an enable input and an enable output, and passes the signal on through its own internal buffer. Switch n turns on, then switch n+1 a buffer delay later, and so on down the fabric. The peak current falls by roughly the ratio by which the turn-on is spread, and the controller gets an acknowledge from the last cell in the chain.
What is happening One edge is propagating through several thousand buffers in placement order. The delay is the mechanism, not an overhead.
The trap Describing it as a shift register. Nothing is clocked and no data moves; it is pure combinational propagation of a single edge.
What is being tested Whether you know the standard mitigation by name and can say what it costs.
Beginner
Q5. What is PSE_ACK, or SLEEPOUT, for?
It is the acknowledge: the enable signal having propagated through the entire switch chain and arrived back at the controller. It is the only real evidence that the last switch in the fabric has actually closed. The controller uses it to decide when it is safe to release reset, fire RESTORE, drop isolation and restart the clock. In UPF it appears on the switch declaration as -ack_port, with -ack_delay carrying the expected chain delay.
What is happening A signal originating deep inside a domain that is at zero volts for most of its path, which is why every cell on it has to be always-on logic.
The trap Replacing it with a counter in the controller and calling that an acknowledge. A counter encodes an assumption; the acknowledge encodes a fact.
What is being tested Whether you understand the difference between a wait that is counted and a wait that is proven.
Beginner
Q6. Why can the isolation cell not be powered by the domain it isolates?
Because its job is to hold a defined value on the domain's outputs while that domain has no supply. A cell powered from the switched rail loses its own supply at exactly the moment its output matters, and its output floats - which is the condition isolation exists to prevent. So isolation cells take their supply from the always-on pair, declared in UPF with -isolation_power_net and -isolation_ground_net, and their enable comes from an always-on controller.
What is happening A clamp only works if the clamp itself is still being held. Clamp value 0 is implemented with an AND gate, clamp value 1 with an OR.
The trap Assuming the tool will work it out. It will flag it, but only if the intent file actually says which supply the isolation cell uses.
What is being tested Whether you can reason about which parts of a power-gated design must survive the domain going dark.
Intermediate
Q7. A neighbouring block fails timing intermittently. How could a power-gated domain be responsible?
When the gated domain wakes, it pulls a large surge out of the shared always-on grid to refill its rail. That surge causes an IR droop across the grid, and every domain hanging off it sees a reduced supply for as long as the droop lasts. Cells run slower at lower voltage, so paths that closed comfortably at nominal go negative. The failure appears in a block that is behaving perfectly, triggered by an event in a block that is not even running yet.
What is happening Two independent domains are coupled through a shared supply impedance. Nothing connects them logically.
The trap Debugging the failing block. There is nothing wrong with it; the correlation is with the neighbour's wake-up events, which is why it looks intermittent.
What is being tested Whether you think about the power network as a shared resource with dynamic behaviour rather than as an ideal supply.
Intermediate
Q8. Explain the weak-then-strong, or mother-daughter, switch arrangement.
The fabric is split by device strength. A small set of deliberately high-resistance devices turns on first and charges the rail under current limit, so the ramp takes hundreds of nanoseconds instead of a few. Once the rail has reached most of the supply voltage, the strong switches close; by then there is little voltage across them, so little current flows, and they take over the steady-state load with the low resistance the design was sized for.
What is happening The weak stage is functioning as a current source built from a poor transistor on purpose. Its high resistance is the feature.
The trap Optimising the weak leg to be less resistive because high on-resistance looks like a defect. That removes the current limit and restores the surge.
What is being tested Whether you can explain a two-phase mechanism and say why the second phase is safe.
Intermediate
Q9. How do you work out how much stagger the design needs?
From the droop budget backwards. Take the allowed droop on the always-on grid, divide by the grid impedance at the frequencies involved, and you have the maximum current the wake-up may draw. Divide the unstaggered peak by that, and the result is the factor by which the turn-on must be spread in time. Add margin, because the grid is inductive as well as resistive, and inductance responds to the rate of change rather than the magnitude.
What is happening A voltage budget is being converted into a current limit, and then into a time.
The trap Treating the grid as purely resistive. The inductive term usually dominates for an event this fast, and it means the arithmetic gives a floor rather than an answer.
What is being tested Whether you can derive a design parameter rather than quoting a number someone gave you.
Intermediate
Q10. What does adding decoupling capacitance to a switched rail do?
Two opposite things. While the domain runs, it holds the rail up when the cells switch, improving dynamic IR - which is why it is placed. While the domain wakes, it is additional capacitance that has to be refilled through the switch fabric, so it increases both the charge to be moved and, at a fixed weak-stage current, the ramp time. The same picofarads that steady the rail in operation lengthen the wake-up in direct proportion.
What is happening One physical structure with two signs depending on which phase of operation you are in.
The trap Answering "more decap is better" out of habit. On an always-on rail it usually is. On a switched rail it is a trade.
What is being tested Whether you evaluate a standard technique in the specific context rather than applying a rule of thumb.
Intermediate
Q11. Which PVT corner would you sign the wake-up event off at?
Fast process, maximum voltage, maximum temperature. Fast devices have the lowest on-resistance, so the surge is largest; maximum voltage raises both the charge to be moved and the leakage; maximum temperature raises leakage near-exponentially. That is the worst-case power corner, and it is deliberately the opposite of the worst-case setup corner, which is slow process at minimum voltage. The timing paths that the resulting droop breaks are closed at that slow corner, so one event needs two corners.
What is happening The surge and its victims are worst under opposite conditions, so a single scenario cannot cover both.
The trap Signing off the whole thing at the slow corner because that is where timing closure lives. The surge is smallest there.
What is being tested Whether you know that power and timing have different worst cases, which is the single most commonly missed point in this area.
Advanced
Q12. The switch chain is reported as a long timing path. What do you do?
Nothing, provided it is constrained correctly - and you make sure nobody else "fixes" it. The chain is a combinational path through several thousand switch cells whose delay is the entire mitigation mechanism. Buffering it up to reduce its delay removes the stagger and restores the surge. What does need checking is that the electrical order of the chain matches the physical placement order, and that the acknowledge is timed against the sequence the controller expects, not against an arbitrary clock.
What is happening A script is applying a general optimisation goal to a net whose slowness is functional.
The trap Letting an automated ECO flow buffer the chain, or exempting it from timing entirely so that nobody notices when its delay changes.
What is being tested Whether you can distinguish a constraint that should be relaxed from a mechanism that must be preserved.
Advanced
Q13. Your domain wakes every two microseconds for a one-microsecond burst. Would you power gate it?
Probably not. Gating saves leakage while the domain is off, and costs the energy to refill the switched rail every time it comes back. The break-even off-time is that refill energy divided by the leakage power - with 20 nF, 1 V and 8 mW of leakage, about 2.5 microseconds. At a two-microsecond idle the domain never reaches break-even, so gating spends more energy than it saves, and a 400 ns wake-up also eats nearly half the burst. Clock gating wins.
What is happening The break-even is being compared against the actual idle duration distribution, not against an average or an aspiration.
The trap Assuming power gating is always the more aggressive and therefore better choice. Below the crossover it is strictly worse on every axis.
What is being tested Whether you will recommend against a technique when the numbers say so, and whether you ask for the workload before answering.
Advanced
Q14. Why should a "ramping" condition not be added to the power state table?
Because a power state table describes operating points - conditions in which the design is expected to function correctly - and a rail climbing through 0.6 V is not one. Declaring it invites the tools to characterise timing, insert level shifters and close paths for an operating point that exists for a couple of hundred nanoseconds and must never be observed. The correct answer to a check complaining about it is to fix the sequence so nothing looks at the domain that early: isolation on, reset applied, clock stopped.
What is happening A transient is being mistaken for a state. The control sequence, not the table, is what makes the transient safe.
The trap Adding the row to silence a tool message. The message is usually correct and is pointing at a sequencing bug.
What is being tested Whether you understand what a power state table is for, and can resist making a checker happy at the cost of the intent being wrong.

20Glossary #

Everything this guide uses, in one place.

-ack_delay — the UPF option carrying the expected delay between asserting the switch control and seeing the acknowledge.

-ack_port — the UPF option naming the acknowledge signal on a power switch declaration.

Acknowledge (ACK) — the switch enable having propagated through the whole chain and returned; the only evidence the fabric is fully on.

Always-on cell — a cell inside a gated domain supplied from a rail that never switches off, used for control paths crossing the domain.

Break-even off-time — the idle duration at which leakage saved equals the energy needed to refill the switched rail.

Coarse-grain gating — one shared switch network for a whole block. Small area overhead, large rush current. The common choice.

create_power_switch — the UPF command declaring a switch: its input and output supply ports, control port, on and off states, and acknowledge.

Daisy chain — switch cells wired enable-out to enable-in so the turn-on ripples through the fabric instead of broadcasting.

Decoupling capacitance (decap) — capacitance placed between supply and ground to hold the rail up under load. On a switched rail it must be refilled at wake.

dI/dt — rate of change of current. What an inductive supply network responds to, and the real reason a fast surge is damaging.

Droop budget — the maximum supply sag the design permits, from which the allowed wake-up current and hence the stagger are derived.

Duty cycle — the proportion of time a domain is active. Decides whether power gating pays for itself at all.

Electromigration (EM) — metal degradation under sustained current density. Judged on RMS current over the duty cycle, not on a single peak.

Fine-grain gating — a switch per cell or small group. Large area overhead, small rush current, high control flexibility.

Footer switch — an N-channel device in series with VSS, producing a virtual ground.

Grid fabric — switch cells arranged in columns through the domain. Even drop, at the cost of displaced placement area.

Ground bounce — the rise of the ground net under return current; the mirror-image of IR droop and just as damaging to timing.

Header switch — a P-channel device in series with VDD, producing a virtual VDD. The usual choice.

In-rush current — see rush current.

IR droop — supply voltage lost to resistance between the source and the cell. Cells run slower at lower voltage.

Isolation cell — a clamp on a gated domain's outputs, supplied from the always-on rails, holding a defined value while the domain is dark.

map_power_switch — the UPF command binding a declared switch to real library cells, which is where weak or strong is decided.

Mother-daughter switch — a strong ("mother") and weak ("daughter") switch pair, the weak one firing first to limit the surge.

NSLEEPIN / NSLEEPOUT — the active-low enable input and output pins of a switch cell, chained to form the daisy chain.

On-resistance (R_on) — the resistance of a closed switch. Low enough for the steady state is low enough to be dangerous at turn-on.

Power state table (PST) — the table of supply combinations a design is allowed to be in. A rail mid-ramp is not one of them.

PSE / PSE_ACK — power-switch enable and its acknowledge, as named on the controller in this guide.

Ramping — the condition of a switched rail climbing between off and on. Real, transient, and deliberately not a declared state.

RESTORE — the always-on control that reloads retained state after the rail is back and reset has released.

Retention flop — a register with a second latch on an always-on rail, so its state survives the primary supply going away.

Ring fabric — switch cells arranged around the domain perimeter. No cells displaced; the worst drop is in the middle.

Rush current — the surge drawn from the always-on supply when a discharged switched rail is reconnected to it.

SAVE — the always-on control that captures state into the retention latches before the supply is removed.

Secondary PG pin — a second power pin on a dual-rail cell, fed from the always-on supply. Constrains where such cells may be placed.

SLEEPIN / SLEEPOUT — the enable input and output pins of a switch cell; the chain is built by connecting one to the next.

Stagger — the deliberate spread of turn-on times across the fabric. Usually the buffer delay inside each switch cell, times the chain length.

State retention power gating (SRPG) — power gating with retention cells, so the block resumes without a full reset and reload.

Switched capacitance — the total capacitance hanging off the virtual rail. The number that sets both the charge and the ramp time.

Virtual rail (VVDD / VVSS) — the switched supply net between the switch cells and the domain. Real metal, with its own straps, vias and IR budget.

Wake-up latency — the time from asserting the switch enable to the domain being usable. An architecture number, not a physical-design one.

Worst-case power corner — fast process, maximum voltage, maximum temperature - the opposite of the worst-case setup corner.

The same material, print-ready

A 48-page A4 PDF with every figure at full size. Free.

Enter your email and the download starts right away. No spam.

Premium libraries

Go deeper with the pdVerse libraries

Complete pdVerse LibraryAll eight collections: every library above plus the Low Power Tool Guide, in one purchase.₹1,237