MOSFET Operation: Threshold, Regions, Body Effect & Subthreshold
From MOS capacitor to transistor. Learn MOSFET structure (gate stack, source, drain, body, channel), NMOS/PMOS, enhancement and depletion devices, channel formation and inversion charge Q_inv = C_ox(V_GS − V_T), gradual-channel derivation of the triode and saturation equations, pinch-off, channel-length modulation, body effect, subthreshold (weak-inversion) conduction and swing S, mobility degradation with vertical field, temperature effects on V_T and mobility (ZTC point), output/transfer characteristics, R_DS(on), g_m and r_o, leakage components, and why MOSFET 'saturation' differs from BJT saturation — with Python computing drain currents, body-effect thresholds, subthreshold swing and I_on/I_off.
Add source and drain regions to a MOS capacitor and the inversion layer becomes a conducting channel between them. The gate controls its charge; the drain voltage drives carriers along it. This simple structure, repeated billions of times, is the basis of modern electronics.
The long-channel square-law model explains the regions of operation; subthreshold conduction and body effect explain why real circuits leak and why threshold depends on source potential.
An analogy
The gate is a tap that fills a shallow channel with water (inversion charge); the drain voltage tilts the channel so water flows. Tilt it enough and the channel runs dry at the drain end (pinch-off) — the flow then depends only on how much the tap lets in, not on further tilting.
Regions of operation
For an NMOS:
- Cutoff/subthreshold: V_GS < V_T — exponential diffusion current, not zero
- Triode (linear/ohmic): V_GS > V_T, V_DS < V_GS − V_T — voltage-controlled resistor
- Saturation (active): V_DS ≥ V_GS − V_T — current set by V_GS (amplifiers, current sources)
- MOSFET 'saturation' = current saturation; BJT 'saturation' = both junctions forward, switch fully on (the MOSFET's triode region plays that role)
- PMOS: same equations with polarities reversed and µ_p ≈ µ_n/2–3
Second-order effects
Channel-length modulation: the pinch-off point moves toward the source with V_DS, shortening the effective channel (λ ∝ 1/L). Mobility degradation: strong vertical fields press carriers against the interface, reducing µ_eff (θ parameter). Velocity saturation (short channels) makes I_D grow linearly rather than quadratically with overdrive. Temperature: V_T falls ~1–3 mV/K while mobility falls ∝ T^(−1.5): at low V_GS current rises with T, at high V_GS it falls — a zero-TC bias point exists.
Subthreshold conduction
Below threshold, a weak inversion layer carries a diffusion current exponential in V_GS. The swing S = 2.3(kT/q)(1 + C_d/C_ox) cannot beat 60 mV/dec at room temperature in a conventional MOSFET (the 'Boltzmann tyranny'), which limits how far V_T and V_DD can be lowered without raising leakage — motivating FinFETs (better C_ox coupling) and steep-slope devices like TFETs.
Leakage components
Subthreshold leakage (dominant), gate tunnelling through thin oxides, junction leakage (S/D to body), gate-induced drain leakage (GIDL) under high drain–gate fields, and punch-through in short channels. Leakage grows exponentially with temperature and is a first-order constraint in low-power design.
Formulas
- Inversion charge:
Q_inv = −C_ox(V_GS − V_T − V(y)) - Triode:
I_D = µC_ox(W/L)[(V_GS − V_T)V_DS − V_DS²/2] - Saturation:
I_D = ½µC_ox(W/L)(V_GS − V_T)²(1 + λV_DS), V_DS ≥ V_GS − V_T - Body effect:
V_T = V_T0 + γ(√(2φ_F + V_SB) − √(2φ_F)); γ = √(2qε_sN_A)/C_ox - Subthreshold:
I_D ∝ e^((V_GS − V_T)/(nV_T)); S = 2.3·nV_T ≥ 60 mV/dec at 300 K - R_DS(on) (deep triode):
R_on = 1/(µC_ox(W/L)(V_GS − V_T))
Worked example: Saturation current
Given: µC_ox 200 µA/V², W/L 20, V_GS − V_T 0.3 V
Find: I_D.
- ½ × 200e−6 × 20 × 0.09
Answer: 180 µA
Worked example: Region check
Given: V_GS 1.2, V_T 0.4, V_DS 0.5
Find: Region.
- V_DS 0.5 < V_ov 0.8
Answer: Triode
Worked example: Leakage from V_T shift
Given: S 80 mV/dec, V_T lowered 160 mV
Find: Leakage factor.
- 10^(160/80)
Answer: 100×
NMOS structure and channel
Gate (poly or metal)
═══════════════════
n⁺ S ░░░ gate oxide ░░░ n⁺ D V_GS > V_T: electron inversion layer
▓▓▓▓ ━━━ channel ━━━━━ ▓▓▓▓ V_DS small: uniform channel (resistor)
p-type body (B) V_DS ≥ V_GS − V_T: channel pinches off at drain
Body diode: p-body → n⁺ drain (in discrete MOSFETs body tied to source)The source supplies electrons to the inversion layer; the drain collects them. The body (substrate) sets the depletion charge and threshold. Enhancement devices need V_GS > V_T > 0 to conduct; depletion devices have a built-in channel (V_T < 0).
Drain current, body effect, subthreshold swing and I_on/I_off
import math
# Long-channel MOSFET: drain current, body effect, subthreshold swing, on/off ratio, temperature
q, eps_si, eps_ox, VT = 1.602e-19, 11.7 * 8.854e-14, 3.9 * 8.854e-14, 0.02585
tox, Na, mu = 5e-7, 1e17, 400.0
Cox = eps_ox / tox
W, L, Vth = 10e-4, 1e-4, 0.5
k = mu * Cox * W / L
for VDS in (0.1, 0.5, 2.0):
VGS = 1.5
Vov = VGS - Vth
ID = k * (Vov * VDS - VDS**2 / 2) if VDS < Vov else 0.5 * k * Vov**2
print(f"VGS 1.5 V, VDS {VDS:.1f} V: ID = {ID*1e3:.3f} mA ({'triode' if VDS < Vov else 'saturation'})")
phiF = VT * math.log(Na / 9.65e9)
gamma = math.sqrt(2 * q * eps_si * Na) / Cox
for VSB in (0, 1, 2):
print(f"body effect: VSB = {VSB} V -> VT = {Vth + gamma*(math.sqrt(2*phiF+VSB)-math.sqrt(2*phiF)):.3f} V (gamma = {gamma:.2f} V^0.5)")
Cd = math.sqrt(q * eps_si * Na / (4 * phiF))
S = 2.303 * VT * (1 + Cd / Cox) * 1e3
print(f"subthreshold swing S = {S:.0f} mV/decade (ideal 60)")
Ion = 0.5 * k * (1.0 - Vth) ** 2
Ioff = 1e-7 * (W / L) * 10 ** (-Vth / (S / 1e3)) # I at VGS = VT ~ 0.1 uA*W/L (rule of thumb)
print(f"at VDD = 1 V: Ion = {Ion*1e3:.3f} mA, Ioff ~ {Ioff*1e12:.3f} pA, Ion/Ioff = {Ion/Ioff:.1e}")
# VGS 1.5 V, VDS 0.1 V: ID = 0.262 mA (triode)
# VGS 1.5 V, VDS 0.5 V: ID = 1.036 mA (triode)
# VGS 1.5 V, VDS 2.0 V: ID = 1.381 mA (saturation)
# body effect: VSB = 0 V -> VT = 0.500 V (gamma = 0.26 V^0.5)
# body effect: VSB = 1 V -> VT = 0.616 V (gamma = 0.26 V^0.5)
# body effect: VSB = 2 V -> VT = 0.703 V (gamma = 0.26 V^0.5)
# subthreshold swing S = 68 mV/decade (ideal 60)
# at VDD = 1 V: Ion = 0.345 mA, Ioff ~ 0.046 pA, Ion/Ioff = 7.5e+09A 10/1 µm NMOS with a 5 nm oxide delivers ~1.4 mA in saturation. Raising the source above the body by 2 V increases V_T by 0.2 V (body effect — important in stacked transistors and source followers). Depletion capacitance makes S = 68 mV/dec instead of the ideal 60; with V_T = 0.5 V the long-channel device achieves a huge I_on/I_off. Scaled devices trade V_T and leakage much less comfortably.
Common mistakes
- Wrong: Assuming zero current below V_T. — Right: Subthreshold current is exponential, not zero.
- Wrong: Ignoring body effect in stacked devices. — Right: V_SB raises V_T.
- Wrong: Using square-law for short channels. — Right: Velocity saturation changes I_D(V_ov).
Applications
- Digital CMOS: Switches with ~zero static current.
- Analog CMOS: Saturation-region amplifiers, mirrors.
- Power switches: Triode-region R_DS(on).
- Subthreshold circuits: Ultra-low-power sensors.
Key takeaways
- Q_inv = C_ox(V_GS − V_T) drives the square law.
- Triode = resistor; saturation = current source.
- Body effect and subthreshold conduction matter.
- S ≥ 60 mV/dec limits V_T and V_DD scaling.
Going further
- BSIM compact models: Industry MOSFET models.
- EKV model: Continuous weak-to-strong inversion.
- Charge-based capacitance models: Ward–Dutton partitioning.