Start-up: the zero-current state
Find the zero-current state of a self-biased reference with a power-up transient, then add a start-up circuit that kicks the loop on and switches itself off.
- Lesson
- E4.5
- Time
- 25 min
- Runs on
- ngspice
- Check
- 5 questions
A current reference passed every DC simulation: at 1.8 V it carried 9.166 µA. A power-up simulation, a 10 µs supply ramp from 0 to 1.8 V, found 48 pA at 40 µs: the reference was off, and every block biased from it too.
- v(vdd)
- i_ref
- Time 10 µsv(vdd) = 1.8 V · i_ref = 138.2 pA
The supply is at 1.8 V. The reference carries 138 pA, pushed through the devices' capacitances by the ramp.
- Time 40 µsv(vdd) = 1.8 V · i_ref = 48.05 pA
48 pA, more than five orders of magnitude short. Nothing is broken.
Read the plot as a table
| Time | v(vdd) | i_ref |
|---|---|---|
| 5 µs | 900 mV | 60.6 pA |
| 10 µs | 1.8 V | 138.2 pA |
| 15 µs | 1.8 V | 67.35 pA |
| 20 µs | 1.8 V | 62.28 pA |
| 25 µs | 1.8 V | 57.94 pA |
| 30 µs | 1.8 V | 54.19 pA |
| 35 µs | 1.8 V | 50.91 pA |
| 40 µs | 1.8 V | 48.05 pA |
Measured on ngspice 42 (every point of the run, from tran 0.05u 40u uic).
The DC analysis found one of the circuit's two answers; the power-up found the other.
Two answers to the same equations
The circuit is the beta multiplier of E4.4, a self-biased reference: the circuit sets its own current. A PMOS mirror (XP1, XP2) forces equal currents into XN1 and XN2. XN2 is four times wider, so it needs less gate-source voltage VGS, and the difference sits across RS: VGS1 − VGS2 = I·RS.
- The working state
Equal currents in both branches; XN2 carries its share with a smaller VGS, and the difference, 91.7 mV, sits across RS: I = 9.17 µA.
9.17 µA · 9.17 µA
- The zero state
Set every current to zero. No current in XP2 means none mirrored into XN1, so XN2 is off and XP2 carries nothing. Every equation holds: the loop can rest here.
- Power-up: x goes high
XS1, a long, weak PMOS with its gate at ground, conducts once the supply passes about 1 V. With the reference off, nothing pulls node x down, so XS1 pulls it up.
- The kick
Node x turns XS2 on. XS2 pulls node b, the PMOS gates, down; the PMOS devices push current into both NMOS devices, and the loop grows it to its working value.
kick
- The kick switches off
Node a rises and turns XS3 on. XS3 is far stronger than XS1, so x falls to a few millivolts and XS2 turns off.
a turns XS3 on
- The price
XS1 keeps conducting into XS3 for as long as the chip is on: 0.639 µA, the start-up's whole cost.
0.639 µA
Read the circuit as text
- XP1 PMOS transistor (4/1): gate →
b, source →VDD, drain →a - XP2 PMOS transistor (4/1): gate →
b, source →VDD, drain →b - XN1 NMOS transistor (2/1): gate →
a, drain →a, source →0 - XN2 NMOS transistor (8/1): gate →
a, drain →b, source →s - RS resistor (10 kΩ): pin 1 →
s, pin 2 →0 - XS1 PMOS transistor (0.5/20): gate →
0, source →VDD, drain →x - XS2 NMOS transistor (1/1): gate →
x, drain →b, source →0 - XS3 NMOS transistor (2/1): gate →
a, drain →x, source →0
a= 0.775 Vb= 0.554 Vs= 91.7 mVx= 7.76 mV
W/L in µm. Bodies tied to sources: NMOS bodies to ground, PMOS bodies to VDD. The local VDD and ground symbols are the same nets as the rails.
Step 2 is a second solution of the same equations, the zero-current state. Every self-biased loop has one.
The DC solver returns one answer: it iterates from a guess (E1.2), and from its default guess it lands on the working state. Even a dc sweep of the supply from 0 V, a slow-motion power-up, ends there.
DC sweep of the supply
dc VDD 0 1.8 0.01
let i_bare = v(s1)/10k
meas dc idc FIND i_bare AT=1.8
idc = 9.166121e-06: the working state.
Power-up transient from 0 V
tran 0.05u 40u uic
let i_bare = v(s1)/10k
meas tran ibare FIND i_bare AT=40u
ibare = 4.803593e-11: the zero state.
Both from the lab netlist. uic starts every node at 0 V (E1.3).
The test that tells the truth is a transient from a dead chip: a PWL supply ramp from 0 V and tran ... uic.
How long it stays off
In this model the zero state does not last forever. Every "off" device leaks a little. At picoamps RS drops almost nothing, so XN2 passes about four times what XN1 does, and the loop multiplies the leak on each turn. But picoamps charge the gate capacitances slowly.
- 27 °C
- −40 °C
- −40 °C, gmin 1e-15
- Time 235.7 µs27 °C = 3.277 µA · −40 °C = 1.457 pA · −40 °C, gmin 1e-15 = 885.9 fA
At 27 °C the loop comes to life after 0.24 ms.
- Time 2.611 ms27 °C = 9.161 µA · −40 °C = 837.5 nA · −40 °C, gmin 1e-15 = 545 fA
At −40 °C leakage is far smaller: 2.6 ms.
- Time 42.01 ms27 °C = 9.164 µA · −40 °C = 7.464 µA · −40 °C, gmin 1e-15 = 788 nA
With a smaller gmin, a numerical aid of the simulator, the cold start takes 42 ms: 16 times longer.
Read the plot as a table
| Time | 27 °C | −40 °C | −40 °C, gmin 1e-15 |
|---|---|---|---|
| 0 s | -105.6 pA | 5.761 pA | 5.761 pA |
| 235.7 µs | 3.277 µA | 1.457 pA | 885.9 fA |
| 2.611 ms | 9.161 µA | 837.5 nA | 545 fA |
| 10 ms | 9.161 µA | 7.497 µA | 245.5 fA |
| 20 ms | 9.162 µA | 7.485 µA | 144.6 fA |
| 30 ms | 9.163 µA | 7.476 µA | 148.1 fA |
| 40 ms | 9.164 µA | 7.47 µA | 814.7 fA |
| 42.01 ms | 9.164 µA | 7.464 µA | 788 nA |
| 50 ms | 9.164 µA | 7.464 µA | 7.444 µA |
| 60 ms | 9.168 µA | 7.465 µA | 7.451 µA |
Three transients of one netlist, resampled onto one 20 µs grid (linearize); every fifth point drawn.
A start-up time set by leakage is not a design. Leakage moves by decades with temperature and process, and a real chip has leakage paths no model lists, some of which can hold the loop off. The safe statement is the textbook one: a self-biased reference may stay off indefinitely.
A start-up circuit: kick, then step aside
A start-up circuit detects the zero state, pushes current into the loop, then gets out of the way. The schematic's XS1 is a weak pull-up, XS2 the kick and XS3 the off switch. Step through it, then watch the run.
- i_bare
- i_start
- v(x)
- v(vdd)
- Time 4.75 µsi_bare = 58.2 pA · i_start = 43.11 pA · v(x) = -206.3 mV · v(vdd) = 855 mV
At 0.86 V of supply all three start-up devices are off. Node x floats, and charge coupled through the devices pushes it to −0.21 V.
More context
Add
CX x 0 1pto the lab and the dip almost vanishes: a floating node has almost no capacitance of its own, so a little coupled charge moves it a long way. - Time 5.8 µsi_bare = 65.41 pA · i_start = 164.3 nA · v(x) = 659 mV · v(vdd) = 1.044 V
Past 1 V, XS1 conducts and x peaks at 0.69 V. XS2 pulls the PMOS gates down and the started copy takes off.
- Time 7.944 µsi_bare = 87.68 pA · i_start = 8.25 µA · v(x) = 3.959 mV · v(vdd) = 1.43 V
90 % of the final current at 7.94 µs, before the ramp ends. XS3 had pulled x back to millivolts by 6 µs: the kick lasted about half a microsecond.
- Time 40 µsi_bare = 48.04 pA · i_start = 9.166 µA · v(x) = 7.757 mV · v(vdd) = 1.8 V
Settled: 9.166 µA against 48 pA. Node x sits at 7.76 mV, so XS2 is off.
Read the plot as a table
| Time | i_bare | i_start | v(x) | v(vdd) |
|---|---|---|---|---|
| 4.75 µs | 58.2 pA | 43.11 pA | -206.3 mV | 855 mV |
| 5 µs | 60.6 pA | 68.07 pA | -192.3 mV | 900 mV |
| 5.8 µs | 65.41 pA | 164.3 nA | 659 mV | 1.044 V |
| 7.944 µs | 87.68 pA | 8.25 µA | 3.959 mV | 1.43 V |
| 10 µs | 138.2 pA | 9.198 µA | 8.517 mV | 1.8 V |
| 15 µs | 67.02 pA | 9.166 µA | 7.757 mV | 1.8 V |
| 20 µs | 62.07 pA | 9.166 µA | 7.757 mV | 1.8 V |
| 25 µs | 57.81 pA | 9.166 µA | 7.757 mV | 1.8 V |
| 30 µs | 54.11 pA | 9.166 µA | 7.757 mV | 1.8 V |
| 35 µs | 50.86 pA | 9.166 µA | 7.757 mV | 1.8 V |
| 40 µs | 48.04 pA | 9.166 µA | 7.757 mV | 1.8 V |
The lab netlist on ngspice 42.
A start-up circuit has three jobs, and each one is a measurement.
| Job | Check | Measured on the lab |
|---|---|---|
| Start the reference | Current after the power-up; time to 90 % | istart = 9.166134e-06, t90 = 7.943895e-06 |
| Switch itself off | Kick node near 0 V; reference current unchanged | vx = 7.757244e-03; 9.166134 µA against the DC solution's 9.166121 µA |
| Cost little | Current the start-up draws for ever | isu = 6.386859e-07 (0.639 µA, through XS1) |
A kick that never switches off keeps pulling on node b and changes the reference current.
XS1 is as long as the library allows, L = 20 µm, to keep that cost small.
Every corner, every ramp, every temperature
One good transient proves little. Run the lab once per corner (.lib sky130 <corner>) and temperature (.temp). In SKY130 the corner named sf has the fast NMOS and the slow PMOS (E2.7).
| Corner | Current, 27 °C | t90 at −40 °C | t90 at 27 °C | t90 at 125 °C | Start-up draws |
|---|---|---|---|---|---|
| tt | 9.166 µA | 8.10 µs | 7.94 µs | 7.88 µs | 0.639 µA |
| ss | 9.693 µA | 8.19 µs | 8.09 µs | 8.04 µs | 0.569 µA |
| ff | 8.669 µA | 7.99 µs | 7.85 µs | 7.72 µs | 0.709 µA |
| sf | 8.744 µA | 8.27 µs | 8.16 µs | 8.04 µs | 0.566 µA |
| fs | 9.595 µA | 7.86 µs | 7.78 µs | 7.72 µs | 0.717 µA |
X2 after a 10 µs ramp, 15 runs of the lab netlist; t90 is the time to 90 % of the current at 40 µs. With a 1 ms ramp, t90 lay between 0.77 and 0.83 ms.
Now the bare copy after a slow 1 ms ramp, read 50 µs after the ramp ends:
| Corner | −40 °C | 27 °C | 125 °C |
|---|---|---|---|
| tt | 2.33 pA (off) | 9.168 µA | 12.13 µA |
| ss | 1.34 pA (off) | 1.57 nA (off) | 12.80 µA |
| ff | 3.88 pA (off) | 8.668 µA | 11.49 µA |
| sf | 6.21 pA (off) | 8.740 µA | 11.68 µA |
| fs | 0.766 pA (off) | 9.826 µA | 12.58 µA |
X1 at 1.05 ms.
At 27 °C a slow ramp gives leakage time. There the bare reference looks fine in four corners; in ss it is still off. Cold, it is off in every corner. Test only warm and you ship the bug.
Asked in interviews
Why does a self-biased reference need a start-up circuit?
Its loop has two solutions, the working one and zero current in every branch, and can power up in the second. A start-up circuit injects current while the reference is off and stops once it runs.
How do you verify start-up in simulation?
With a transient from 0 V: a PWL supply ramp and tran with uic, then read the reference current after the ramp. Repeat for fast and slow ramps, every corner, the lowest supply and the coldest temperature. op and dc find the working state, so they prove nothing.
What must a start-up circuit do after start-up?
Turn off and stay off. Its injection device carries no current, and the reference current is the same with and without it. Its standing current is small: a long, weak pull-up, here 0.64 µA.
Try it
Run it and read the lines in order: the DC sweep's answer, the bare copy after the ramp, the started copy, its time to 90 %, its node voltages, the kick node and the start-up's standing current. Open Plots to see the transient.
Then break it and test it. Change XS3 x a2 0 0 to XS3 x 0 0 0, so the off switch never turns on: the kick stays on and istart rises to about 15 µA. Put the line back. Change the ramp to PWL(0 0 1m 1.8) and the transient to tran 1u 1.05m uic with every AT=40u changed to AT=1.05m. Add .temp -40 and watch ibare stay off. Finally try .lib sky130 ss.
Run the netlist to draw its plots here.
idc = 9.166121e-06 ibare = 4.803593e-11 istart = 9.166134e-06 t90 = 7.943895e-06 va = 7.749849e-01 vb = 5.544214e-01 vx = 7.757244e-03 isu = 6.386859e-07Check yourself
Remember
- A self-biased reference has two DC solutions: the working state and a zero-current state where every branch carries nothing.
opanddcreport only the working state; a power-up transient from 0 V (PWLramp,tran ... uic) is the test that finds the other one.- A start-up circuit pulls the loop out of zero (XS1 and XS2) and must switch itself off once the reference runs (XS3); check its standing current and that the reference current is unchanged.
- Verify start-up at every corner, at fast and slow ramps and at the coldest temperature, where leakage is smallest and a slow ramp no longer hides the zero state.