E6.1.1 Place the pole

EasyImplementngspice 42 + SKY130 · serverReview the topic

Build a common-source stage driven from 100 kΩ and give it the capacitance that puts its −3 dB point at 1 MHz at every corner, with the pole at the input, where it also keeps a 20 MHz interferer off the gate.

Circuit context: Lesson E3.2's common-source stage driven from a 100 kΩ source at 0.78 V, with 50 fF of load. Band-limit a sensor front end at 1 MHz and keep a 20 MHz interferer off the transistor.

A sensor with 100 kΩ of output resistance drives lesson E3.2's common-source stage (RD = 36 kΩ, M1 2/0.15) at 0.78 V. Its signal ends below 1 MHz, but a 20 MHz interferer rides on it, and the transistor would mix it down. The stage must roll off at 1 MHz, with the pole at its input so that the interferer is small at the gate.

Write the stage in the subcircuit csamp and add capacitance to it. With the grader's bench (1.8 V, the source at 0.78 V behind 100 kΩ, 50 fF of load): at tt the output sits between 0.8 and 1.0 V, the gain at 10 kHz is at least 7.0, the −3 dB frequency is 0.95 to 1.05 MHz and the gate's response at 20 MHz is at most 0.1 of the source; at ss and ff the −3 dB frequency is 0.85 to 1.15 MHz.

Lesson E6.1 measured this stage's input pole: Miller's effect is the tool.

What the grader measures

Your subcircuit csamp (ports in, out, vdd) under the grader's own bench, one run per corner (tt, ss, ff):

CheckCornerRule
Output leveltt800 mV to 1 V
Gain at 10 kHztt≥ 7
−3 dB frequencytt950 kHz to 1.05 MHz
Gate response at 20 MHztt≤ 0.1
−3 dB frequencyss850 kHz to 1.15 MHz
−3 dB frequencyff850 kHz to 1.15 MHz
Full specification
The subcircuit the grader tests (keep the name and the ports)
.subckt csamp in out vdd
* RD, M1 and your capacitance
.ends
CheckCornerRuleHow the grader measures it
Output leveltt0.8 V to 1.0 Vop: v(out)
Gain at 10 kHztt≥ 7.0ac: |v(out)| with AC 1 at the source
−3 dB frequencytt0.95 MHz to 1.05 MHzac: where |v(out)| falls to 1/√2 of the 10 kHz gain
Gate response at 20 MHztt≤ 0.1ac: |v(in)| at 20 MHz, the gate over the source
−3 dB frequencyss and ff0.85 MHz to 1.15 MHzas at tt

The grader runs its bench three times, with .lib sky130 tt, ss and ff (27 °C). The source and its 100 kΩ are in the bench, so the pole must come from capacitance inside csamp.

Examples

Example 1

The stage alone
Design
.subckt csamp in out vdd
RD vdd out 36k
XM1 out in 0 0 sky130_fd_pr__nfet_01v8 W=2 L=0.15
.ends
Measured by the grader
Output level: 911.1 mV (needs 800 mV to 1 V)
Gain at 10 kHz: 7.299 (needs ≥ 7)
−3 dB frequency: 98.54 MHz (needs 950 kHz to 1.05 MHz)
Gate response at 20 MHz: 0.9908 (needs ≤ 0.1)
−3 dB frequency at ss: 91.13 MHz (needs 850 kHz to 1.15 MHz)
−3 dB frequency at ff: 111.1 MHz (needs 850 kHz to 1.15 MHz)

Only the device's own capacitance and the 50 fF load: the −3 dB point is near 99 MHz and the gate passes 20 MHz untouched.

Example 2

1.59 pF from gate to drain
Design
.subckt csamp in out vdd
RD vdd out 36k
XM1 out in 0 0 sky130_fd_pr__nfet_01v8 W=2 L=0.15
CF in out 1.59p
.ends
Measured by the grader
Output level: 911.1 mV (needs 800 mV to 1 V)
Gain at 10 kHz: 7.272 (needs ≥ 7)
−3 dB frequency: 118.1 kHz (needs 950 kHz to 1.05 MHz)
Gate response at 20 MHz: 0.02852 (needs ≤ 0.1)
−3 dB frequency at ss: 128.6 kHz (needs 850 kHz to 1.15 MHz)
−3 dB frequency at ff: 119.1 kHz (needs 850 kHz to 1.15 MHz)

The capacitance the gate needs, placed across the stage: Miller multiplies it by 1 + 7.3, and the corner lands at 118 kHz.

Example 3

6.6 pF at the output
Design
.subckt csamp in out vdd
RD vdd out 36k
XM1 out in 0 0 sky130_fd_pr__nfet_01v8 W=2 L=0.15
CO out 0 6.6p
.ends
Measured by the grader
Output level: 911.1 mV (needs 800 mV to 1 V)
Gain at 10 kHz: 7.298 (needs ≥ 7)
−3 dB frequency: 1.033 MHz (needs 950 kHz to 1.05 MHz)
Gate response at 20 MHz: 0.9972 (needs ≤ 0.1)
−3 dB frequency at ss: 887.4 kHz (needs 850 kHz to 1.15 MHz)
−3 dB frequency at ff: 1.258 MHz (needs 850 kHz to 1.15 MHz)

An output pole also gives about 1 MHz at tt, but it follows RD ∥ r_o (1.26 MHz at ff), and the gate still sees the whole interferer.

Constraints and contract

  • The netlist defines .subckt csamp in out vdd ... .ends exactly once, with these ports in this order.
  • Inside csamp: resistors, capacitors and X instances of sky130_fd_pr__nfet_01v8 or sky130_fd_pr__pfet_01v8, with comments and .param lines. No sources.
  • The grader writes the .lib line for each corner itself; everything outside csamp is replaced by its bench.

Hints

Hint 1

A pole at the input is 1/(2π · 100 kΩ · C_in): 1 MHz needs about 1.59 pF at the gate in all.

Hint 2

A capacitor from gate to drain across an inverting gain A appears at the gate as C(1 + A) (lesson E6.1). With A = 7.3 it needs about an eighth of the capacitance a grounded capacitor would.

Hint 3

The gain is 6.6 at ss and 7.3 at ff, and a Miller capacitance follows it; check the corners before you settle.

What the grader checks: The grader places csamp under its own bench (1.8 V, 0.78 V behind 100 kΩ, 50 fF) and measures the output level, the 10 kHz gain, the −3 dB frequency and the gate's response at 20 MHz at tt, and the −3 dB frequency at ss and ff, 27 °C, on ngspice 42 (libngspice0 42+ds-3build1) with the pinned SKY130 models, measured 2026-11-03 with tools/spice-judge.mjs. It does not check noise, large signals or the interferer's distortion itself.

Run simulates your netlist as written, with your own analyses and measurements. Submit sends it to the grader, which keeps only the subcircuit csamp and makes 3 ngspice runs. The numbers come from ngspice and the SKY130 models the site pins; they prove the measured cases, not every condition a chip meets.

See all 1 steps and the final capstone
Your netlist SPICESaved locally
Ln 1, Col 1Tab indents · Ctrl/⌘ + Enter runs
Not run yet
Run your netlist to see its measurements and the ngspice log here.
ngspice 42 + SKY130 · server