Device Characterization: I–V, C–V & Parameter Extraction
Measuring devices and turning data into models. Learn instruments (SMUs, parameter analysers, probe stations, LCR meters, curve tracers, oscilloscopes, thermal chambers), I–V (forward, reverse, breakdown, pulsed I–V to avoid self-heating), C–V (MOS and junction), Kelvin connections and guarding, temperature sweeps, and extraction of diode I_S/n/R_s, BJT β and V_A, MOSFET V_T (max-g_m extrapolation, constant current), mobility, R_DS(on), subthreshold swing, doping from 1/C², oxide thickness, contact resistance (TLM) — with Python extracting parameters from synthetic noisy diode data, a MOSFET transfer curve and C–V data, and comparing with the true values.
Datasheets summarise measurements; models need parameters extracted from measurements; process engineers monitor fabs by measuring test structures. Device characterization links physics, manufacturing and circuit design.
Good characterization means accurate instruments, correct connections (Kelvin sensing, guarding), controlled temperature, and extraction methods whose assumptions are understood.
An analogy
Parameter extraction is like reverse-engineering a recipe from tasting the dish: you measure (taste) under controlled conditions and adjust the recipe's ingredients (model parameters) until the model tastes the same.
Instruments
Choosing equipment:
- SMU / parameter analyser — sweep voltage/current with fA–A range, compliance limits
- Curve tracer — high-power I–V, breakdown, quick go/no-go
- LCR meter / CV analyser — capacitance vs bias and frequency
- Probe station with thermal chuck — wafer-level tests, −55 to +200 °C
- Oscilloscope + double-pulse fixture — switching energy, dynamic R_DS(on)
- Thermal chamber — packaged-device temperature sweeps
Measurement pitfalls
Self-heating during DC sweeps (use pulsed I–V), cable/probe resistance (Kelvin), leakage through fixtures and insulators (guarding), oscillation of high-gain devices on probe needles (ferrite beads, short leads), compliance settings that destroy devices at breakdown, light sensitivity (dark boxes), and settling time for pA currents. Always measure a reference device and repeat measurements for repeatability.
Threshold-voltage definitions
Linear extrapolation at max-g_m, constant-current (I_D = 100 nA × W/L), second-derivative, and saturation-region √I_D extrapolation all give different V_T values for the same device. Industry uses constant-current for speed; model extraction uses methods consistent with the model's equations. Report the method and conditions (V_DS, temperature).
From data to model
Extraction proceeds from simple, decoupled regions to complex ones: DC diode parameters at low current, then series resistance; MOSFET long-channel V_T and mobility, then short-channel effects; capacitances from C–V and S-parameters; temperature coefficients from sweeps. Global optimisation refines the full parameter set, followed by validation on data not used in fitting. Temperature, statistical corners and ageing extend the model.
Formulas
- Diode fit:
ln I = ln I_S + V/(nV_T) (low current) - Series resistance:
R_s = (V_meas − nV_T ln(I/I_S))/I (high current) - Max-g_m V_T:
V_T = V_G,max − I_D/g_m,max − V_DS/2 - Doping from C–V:
N = 2/(qεA²·d(1/C²)/dV) - Early voltage:
V_A = I_C/(dI_C/dV_CE) − V_CE - TLM:
R_total = 2R_c + R_sh·L/W
Worked example: Ideality from two points
Given: 1 µA at 0.50 V, 10 µA at 0.563 V
Find: n.
- 0.063/(0.02585 × ln 10)
Answer: 1.06
Worked example: Mobility
Given: g_m 0.2 mS, L/W 1/10, C_ox 1.7 µF/cm², V_DS 50 mV
Find: µ.
- 2e−4 × 0.1/(1.7e−6 × 0.05)
Answer: ≈ 235 cm²/V·s
Worked example: TLM
Given: R(L=0) intercept 10 Ω
Find: R_c.
- 2R_c = 10 Ω
Answer: 5 Ω per contact
SMU measurement setup
SMU1 Force ──────┬── Gate SMU2 Force ─────┬── Drain
SMU1 Sense ──────┘ (Kelvin at probe) SMU2 Sense ─────┘
MOSFET on probe station (chuck = body, temperature-controlled)
Source ─── GND (Kelvin) Guarded triax cables for pA leakage; pulsed mode for power devices
Sweeps: ID–VGS (VDS 50 mV & 1 V), ID–VDS family, IG leakage, C–V via LCR meterFour-wire (Kelvin) connections remove cable and probe resistance at high current; guarding and triaxial cables suppress leakage for pA measurements; pulsed measurements prevent self-heating from distorting high-power I–V curves.
Extracting parameters from (synthetic) measurement data
import math, random
# Parameter extraction from (synthetic, noise-added) measurement data: diode Is/n/Rs, MOSFET Vt, C-V doping
random.seed(7)
VT = 0.02585
Is_true, n_true, Rs_true = 2e-14, 1.08, 0.5
data = []
for i in range(1, 30):
I = 10 ** (-9 + i * 0.25) # 1 nA .. ~30 mA
V = n_true * VT * math.log(I / Is_true + 1) + I * Rs_true
data.append((V * (1 + random.gauss(0, 0.0005)), I))
low = [(v, math.log(i)) for v, i in data if i < 1e-4] # low-current region: Rs negligible
mx = sum(v for v, _ in low) / len(low); my = sum(y for _, y in low) / len(low)
slope = sum((v - mx) * (y - my) for v, y in low) / sum((v - mx) ** 2 for v, _ in low)
n_fit = 1 / (slope * VT); Is_fit = math.exp(my - slope * mx)
v_hi, i_hi = data[-1]
Rs_fit = (v_hi - n_fit * VT * math.log(i_hi / Is_fit)) / i_hi
print(f"diode fit: n = {n_fit:.3f} (true {n_true}), Is = {Is_fit:.2e} (true {Is_true:.0e}), Rs = {Rs_fit:.2f} ohm (true {Rs_true})")
# MOSFET linear-region Vt by maximum-gm extrapolation (VDS = 50 mV)
k, Vt_true, theta, VDS = 2e-3, 0.45, 0.2, 0.05
pts = [(vg / 100, k * max(vg / 100 - Vt_true, 0) * VDS / (1 + theta * max(vg / 100 - Vt_true, 0))) for vg in range(0, 151)]
gms = [((pts[i + 1][1] - pts[i - 1][1]) / 0.02, i) for i in range(1, len(pts) - 1)]
gm_max, i_m = max(gms)
Vg_m, Id_m = pts[i_m]
Vt_ext = Vg_m - Id_m / gm_max - VDS / 2
print(f"MOSFET max-gm extrapolation: Vt = {Vt_ext:.3f} V (true {Vt_true})")
# C-V doping from the slope of 1/C^2 (one-sided junction, area 1e-3 cm^2)
q, eps, A, Nd = 1.602e-19, 1.036e-12, 1e-3, 5e15
C = lambda V: A * math.sqrt(q * eps * Nd / (2 * (0.75 + V)))
slope_c = (1 / C(5) ** 2 - 1 / C(1) ** 2) / 4
print(f"C-V: d(1/C^2)/dV = {slope_c:.3e} -> N = 2/(q*eps*A^2*slope) = {2/(q*eps*A**2*slope_c):.2e} cm^-3 (true {Nd:.0e})")
# diode fit: n = 1.079 (true 1.08), Is = 1.97e-14 (true 2e-14), Rs = 0.53 ohm (true 0.5)
# MOSFET max-gm extrapolation: Vt = 0.425 V (true 0.45)
# C-V: d(1/C^2)/dV = 2.410e+21 -> N = 2/(q*eps*A^2*slope) = 5.00e+15 cm^-3 (true 5e+15)A least-squares fit of ln I vs V in the low-current region recovers n = 1.079 and I_S = 1.97 × 10⁻¹⁴ A from noisy synthetic data; the high-current deviation gives R_s ≈ 0.53 Ω. Max-g_m extrapolation gives V_T = 0.425 V against a true 0.45 V — mobility degradation biases linear-extrapolation methods, so always state the method used. The 1/C² slope recovers the 5 × 10¹⁵ cm⁻³ doping exactly for an ideal one-sided junction.
Common mistakes
- Wrong: Measuring high-current I–V with two wires. — Right: Use Kelvin sensing.
- Wrong: DC-sweeping power devices at high current. — Right: Use pulsed I–V to avoid self-heating.
- Wrong: Reporting V_T without method and conditions. — Right: State the extraction method, V_DS and T.
Applications
- Fab process control: Scribe-line test structures.
- Model development: SPICE parameter extraction.
- Incoming inspection: Verifying purchased devices.
- Research: New device characterisation.
Key takeaways
- Right instrument, Kelvin sensing, guarding, pulsing.
- Extract in decoupled regions: n/I_S, then R_s.
- V_T depends on method — document it.
- C–V gives doping and oxide thickness.
Going further
- S-parameter extraction: RF model parameters.
- Charge pumping: Interface-trap density.
- Noise characterisation: 1/f and thermal noise models.