Skip to main content

Device noise → ISF harmonics mapping

β: This English translation is in beta — the Traditional-Chinese original is the authoritative version.

Prerequisites: white_noise_to_phase_noise (white → 1/f²), flicker_noise_upconversion (flicker → 1/f³), fourier_series_of_isf (c0c_0, cnc_n) | Next: symmetry, tank_swing, serdes_clocking_connection

This page collects the scattered design intuition from earlier pages into a single map: how does the noise (white and flicker) of one transistor end up as the oscillator's phase noise? The key is two things — which frequency band of device noise is picked up by which ISF harmonic, and the device does not leak noise throughout the entire period (cyclostationary), so what actually matters is the effective ISF Γeff=Γα\Gamma_{eff}=\Gamma\cdot\alpha.

Physical intuition (conclusion first): think of the ISF as a multi-channel radio. Its Fourier coefficients cnc_n are the antenna gains of each channel: c0c_0 picks up device flicker "near DC" (upconverted to 1/f³); c1c_1 picks up device white noise "near ω0\omega_0", c2c_2 "near 2ω02\omega_0", and so on (downconverted to 1/f²). But the device only actually conducts — only actually leaks noise — during certain phases of the waveform. This "when does it leak" switching function α(ω0t)\alpha(\omega_0 t) must be multiplied into Γ\Gamma first, becoming the effective ISF, before it is the radio's true antenna.

Step 1: two "bands" of device noise

The drain current noise of a MOS device (referred to the injection node) splits roughly into two bands ([P1] Eqs.(19),(22), p.185):

Si(f)=in2Δfwhite (flat)  +  in2Δfω1/f2πfflicker (1/f)S_i(f)=\underbrace{\frac{\overline{i_n^2}}{\Delta f}}_{\text{white (flat)}}\;+\;\underbrace{\frac{\overline{i_n^2}}{\Delta f}\cdot\frac{\omega_{1/f}}{2\pi f}}_{\text{flicker (1/f)}}
  • White noise: thermal (4kTγgm4kT\gamma g_m-type) + shot, flat with frequency, energy spread over all frequencies, including near ω0,2ω0,\omega_0,2\omega_0,\dots.
  • Flicker (1/f) noise: slow trap/release processes in the channel, energy concentrated at low frequency (Δωω0\Delta\omega\ll\omega_0), significant below the device's 1/f corner ω1/f\omega_{1/f}.
  • Units: both bands are A²/Hz.

Step 2: ISF harmonics are "receive channels" — who picks up what

Substitute the ISF Fourier expansion ([P1] Eq.(12)) into the phase response ([P1] Eq.(13)): each cnc_n term is a mixer that shifts "noise near nω0n\omega_0" down to baseband phase:

ISF harmonicDevice-noise band receivedShifted toResulting phase-noise region
c0c_0 (DC term, value c0/2c_0/2)Low-frequency flicker (near DC)Pure integration, no shiftclose-in 1/f³ ([P1] Eq.(23))
c1c_1White at ω0±Δω\omega_0\pm\Delta\omegaDownconverted to Δω\Delta\omegaMain 1/f² contribution
c2,c3,c_2,c_3,\dotsWhite at nω0±Δωn\omega_0\pm\Delta\omegaDownconverted to Δω\Delta\omegaAlso feeds 1/f² (via cn2\sum c_n^2)
  • White noise → 1/f²: all cnc_n (the white part, n0n\ge0) contribute together, and via Parseval collapse to n=0cn2=2Γrms2\sum_{n=0}^{\infty}c_n^2=2\Gamma_{rms}^2 ([P1] Eq.(20), p.185), giving LΓrms2/qmax2\mathcal{L}\propto\Gamma_{rms}^2/q_{max}^2 ([P1] Eq.(21)). So 1/f² is set by Γrms\Gamma_{rms}.
  • Flicker → 1/f³: only the DC channel c0c_0 receives it, giving Lc02/qmax2\mathcal{L}\propto c_0^2/q_{max}^2 ([P1] Eq.(23)). So 1/f³ is set by c0c_0.
  • One-line summary: Γrms\Gamma_{rms} governs white (1/f²); c0c_0 governs flicker (1/f³). This is the skeleton of the whole map.

The clearest way to see this "multi-channel radio" is a figure: the top half is the device's current-noise PSD Si(f)S_i(f) (a near-DC flicker bump plus a flat white plateau); three shaded bands mark the frequency ranges the ISF actually "listens to" (DC, f0f_0, 2f02f_0); the bottom half is the same ISF's Fourier coefficients cn|c_n| as a stem plot, aligned under the bands above, with arrows showing each band folding back to the carrier weighted by that harmonic's cnc_nc0c_0 upconverts near-DC flicker into close-in 1/f³, while c1,c2c_1,c_2 downconvert white noise near f0,2f0f_0,2f_0 into 1/f².

Device noise PSD (top) aligned with ISF Fourier coefficients |c_n| (bottom): three shaded bands DC/f_0/2f_0 are the channels the ISF listens to; arrows show each band folding back to the carrier weighted by c_n — c_0 picks up flicker and upconverts it to 1/f³, c_1,c_2 pick up white noise and downconvert it to 1/f².

The cn|c_n| in the figure are computed by simulations/fig_device_noise_bands.py using compute_fourier_coefficients on a toy asymmetric ISF (Γ=sinθ+0.35sin2θ+0.25\Gamma=-\sin\theta+0.35\sin2\theta+0.25), giving c0=0.50c_0=0.50, c1=1.00c_1=1.00, c2=0.35c_2=0.35. This is a pedagogical toy model (not transistor-level): it only illustrates the "harmonic = channel" mapping structure; the Si(f)S_i(f) vertical axis is in arb. units. Corresponds to [P1] Eq.(12),(13) (Fourier expansion → per-harmonic phase response) and Eq.(19),(23) (white/flicker summation).

Turning this map's "radio gain" into concrete algebra (this page has had relatively few equations so far; here we fill in the three core relations, all from [P1] and consistent with the site's formula table):

(M1) White → 1/f² phase noise ([P1] Eq.(21), p.185; numerator is Γrms\Gamma_{rms}):

L1/f2{Δω}=10log10 ⁣(Γrms2qmax2in2/Δf4Δω2)\mathcal{L}_{1/f^2}\{\Delta\omega\}=10\log_{10}\!\left(\frac{\Gamma_{rms}^2}{q_{max}^2}\cdot\frac{\overline{i_n^2}/\Delta f}{4\,\Delta\omega^2}\right)

(M2) Flicker → 1/f³ phase noise ([P1] Eq.(23), p.185; numerator is c0c_0):

L1/f3{Δω}=10log10 ⁣(c02qmax2in2/Δf8Δω2ω1/fΔω)\mathcal{L}_{1/f^3}\{\Delta\omega\}=10\log_{10}\!\left(\frac{c_0^2}{q_{max}^2}\cdot\frac{\overline{i_n^2}/\Delta f}{8\,\Delta\omega^2}\cdot\frac{\omega_{1/f}}{\Delta\omega}\right)

(M3) Relative height of the two regions (same offset, divide the linear bracket of (M2) by (M1)):

L1/f3L1/f2linear=c02/(8Δω2)Γrms2/(4Δω2)ω1/fΔω=c022Γrms2ω1/fΔω\frac{\mathcal{L}_{1/f^3}}{\mathcal{L}_{1/f^2}}\bigg|_{\text{linear}} =\frac{c_0^2/(8\,\Delta\omega^2)}{\Gamma_{rms}^2/(4\,\Delta\omega^2)}\cdot\frac{\omega_{1/f}}{\Delta\omega} =\frac{c_0^2}{2\,\Gamma_{rms}^2}\cdot\frac{\omega_{1/f}}{\Delta\omega}
  • Use of (M3): at any given offset, this ratio >1> 1 means flicker (1/f³) dominates, <1< 1 means white (1/f²) dominates; setting it =1=1 solves for the 1/f³ corner Δω1/f3=ω1/fc02/(2Γrms2)\Delta\omega_{1/f^3}=\omega_{1/f}\cdot c_0^2/(2\Gamma_{rms}^2) ([P1] Eq.(24), derivation in symmetry).
  • Dimension check: the right-hand side of (M3) is dimensionless2dimensionless2[rad/s][rad/s]\dfrac{\text{dimensionless}^2}{\text{dimensionless}^2}\cdot\dfrac{[\text{rad/s}]}{[\text{rad/s}]} = dimensionless ✓ (a pure ratio, correct).

Step 3: cyclostationary — the device does not leak noise all the time

The Γ\Gamma above is the "bare ISF" — it assumes the noise is equally large at every instant. But a real device's noise strength is periodically varying (cyclostationary): e.g. a tail current source conducts only during part of the cycle, and a switching pair's gmg_m peaks only during transitions. Hajimiri–Lee describe "when the device is leaking noise" with a noise-modulating function (NMF) α(ω0t)\alpha(\omega_0 t) (0α10\le\alpha\le1, periodic), folded into the ISF ([P1] Sec. II-D, Eq.(25)–(27), p.186; in(t)=in0(t)α(ω0t)i_n(t)=i_{n0}(t)\cdot\alpha(\omega_0 t) is Eq.(25), Γeff=Γα\Gamma_{eff}=\Gamma\cdot\alpha is Eq.(27)):

 Γeff(ω0τ)=Γ(ω0τ)α(ω0τ) \boxed{\ \Gamma_{eff}(\omega_0\tau)=\Gamma(\omega_0\tau)\cdot\alpha(\omega_0\tau)\ }
  • Meaning: what actually enters the phase-noise formulas is not Γ\Gamma but Γeff\Gamma_{eff}. All of cnc_n, c0c_0, Γrms\Gamma_{rms} must be recomputed using Γeff\Gamma_{eff}.
  • A design-critical consequence: even if waveform symmetry makes the bare Γ\Gamma's c0=0c_0=0, if the device leaks noise only during half the cycle (α\alpha asymmetric), Γeff=Γα\Gamma_{eff}=\Gamma\cdot\alpha can regrow a nonzero c0c_0 → flicker gets upconverted again. Conversely, aligning the device's "conduction window α\alpha" with the low-value phase of the bare Γ\Gamma can simultaneously lower c0c_0 and Γrms\Gamma_{rms}.
  • A more rigorous mathematical foundation (PPV / adjoint / Floquet) is not in the five downloaded PDFs and is supplemented from standard literature (Demir–Mehrotra–Roychowdhury 2000, etc.); see effective_isf.

A toy calculation using the built-in functions (pedagogical toy model, not transistor-level):

import numpy as np
from simulations.common.isf_utils import (
gamma_lc_ideal, effective_isf, compute_fourier_coefficients, gamma_rms)

theta = np.linspace(0, 2*np.pi, 2048, endpoint=False)
gamma = gamma_lc_ideal(theta) # bare ISF = -sin(theta), c0 = 0
# Asymmetric NMF: device conducts only in the first half-cycle (alpha=1 for theta<pi, else 0)
alpha = np.where(theta < np.pi, 1.0, 0.0)
gamma_eff = effective_isf(gamma, alpha) # multiply by NMF (positional: gamma_values, alpha_values)
a0, a, b, c, ph = compute_fourier_coefficients(theta, gamma_eff, n_harmonics=8)
print("c0 =", a0, " Gamma_rms =", gamma_rms(theta, gamma_eff))
# -> c0 ≈ -0.637 (bare Γ had c0=0; regrown by the asymmetric α), Gamma_rms ≈ 0.500

(Full API in simulations/common/isf_utils.py; effective_isf and gamma_rms are real functions.)

Step 4: two independent levers — which knobs move Γrms\Gamma_{rms}, which move qmaxq_{max}

The core phase-noise ratios are Γrms2qmax2\dfrac{\Gamma_{rms}^2}{q_{max}^2} (white, [P1] Eq.(21)) and c02qmax2\dfrac{c_0^2}{q_{max}^2} (flicker, [P1] Eq.(23)). The numerator (ISF shape) and denominator (charge swing) are two mutually independent knobs. Classifying every design knob by "which quantity it moves":

Move Γrms\Gamma_{rms} / c0c_0 (ISF shape)Move qmaxq_{max} (charge swing)
Waveform symmetry (matched rise/fall) → lowers c0c_0Increase voltage swing VmaxV_{max}
Fast transitions (steep edges) → lowers Γrms\Gamma_{rms}Raise tank QQ/RpR_p (larger swing at the same current)
Ring stage count NN\uparrowΓrmsN3/2\Gamma_{rms}\propto N^{-3/2} (below)Increase node capacitance CC (ties to f0f_0; use with care)
Symmetric load, differential → lowers even harmonics, lowers c0c_0Differential → 2× effective swing
Align device conduction window α\alpha with low-Γ\Gamma phase (cyclostationary) → lowers effective Γrms\Gamma_{rms}, c0c_0Push bias to the headroom limit (current/voltage limited)
Lower device ω1/f\omega_{1/f} (larger area, PMOS) → lowers 1/f³ height (does not change c0c_0)

The ring's ΓrmsN3/2\Gamma_{rms}\propto N^{-3/2} comes from [P2] Eq.(16), p.794 (re-verified in v7: the square root covers only the constant, ΓrmsN3/2\Gamma_{rms} \propto N^{-3/2}; triple-checked against the main text's 4/N^1.5@η=0.75 and Appendix B Eq.(55). v3 had misread this as N^-0.75): Γrms=2π23η31N1.5\Gamma_{rms}=\sqrt{\dfrac{2\pi^2}{3\eta^3}}\cdot\dfrac{1}{N^{1.5}} (η1\eta\approx1 is the stage-delay proportionality constant), and at fixed f0f_0 and fixed power ring phase noise is roughly independent of NN (the device count growing with NN offsets the drop in Γrms\Gamma_{rms}) — see lc_vs_ring.

Numerical example (building intuition)

Map a single device's two noise bands onto the two phase-noise regions.

Take canonical values: f0=5f_0=5 GHz, qmax=1q_{max}=1 pC, Γrms=0.5\Gamma_{rms}=0.5, Si=1024S_i=10^{-24} A²/Hz, asymmetric c0=0.4c_0=0.4, device f1/f=1f_{1/f}=1 MHz.

  • White → 1/f² (@ Δf=1\Delta f=1 MHz, [P1] Eq.(21)): as in Example B, L=148.0\mathcal{L}=-148.0 dBc/Hz.
  • Flicker → 1/f³ (@ Δf=1\Delta f=1 MHz, [P1] Eq.(23)): relative to 1/f² there is an extra factor c022Γrms2ω1/fΔω\dfrac{c_0^2}{2\Gamma_{rms}^2}\cdot\dfrac{\omega_{1/f}}{\Delta\omega}. At Δf=1\Delta f=1 MHz =f1/f=f_{1/f} the two regions cross (ω1/f/Δω=1\omega_{1/f}/\Delta\omega=1); 1/f³ is 10log10(c02/(2Γrms2))=10log10(0.32)=4.910\log_{10}(c_0^2/(2\Gamma_{rms}^2))=10\log_{10}(0.32)=-4.9 dB relative to 1/f² — i.e. at this offset the flicker contribution is still slightly below white; the crossover point (1/f³ corner) falls at f1/f3=f1/fc02/(2Γrms2)=320f_{1/f^3}=f_{1/f}\cdot c_0^2/(2\Gamma_{rms}^2)=320 kHz (see symmetry). Only below 320 kHz does flicker dominate.
  • Intuition: at 1 MHz offset flicker is barely visible (masked by white); to see 1/f³ you need to look below 100 kHz. If a SerDes loop bandwidth filters out the close-in region, the 1/f³ impact shrinks (see serdes_clocking_connection).

The full map (mermaid)

Validity and breakdown conditions

ConditionHolds whenBreaks down when
Small perturbation, linear LTVPer-band cnc_n mapping holdsStrong nonlinearity, large injection — the ISF itself changes
Noise separable into white + 1/fTwo regions cleanly separatedRTS/burst/correlated noise needs separate treatment
Cyclostationary via Γeff=Γα\Gamma_{eff}=\Gamma\cdot\alphaFirst-order correction is sufficientWhen rigorous PPV/adjoint treatment is needed (external literature)

Worked examples

The following two problems map white and flicker device noise onto phase noise respectively, demonstrating the two independent knobs Γrms\Gamma_{rms} (governing white) and c0c_0 (governing flicker). Using canonical values: f0=5f_0=5 GHz, qmax=1q_{max}=1 pC, Γrms=0.5\Gamma_{rms}=0.5, Si=in2/Δf=1024S_i=\overline{i_n^2}/\Delta f=10^{-24} A²/Hz, asymmetric c0=0.4c_0=0.4, device f1/f=1f_{1/f}=1 MHz.

Example 1 (mapping white noise onto Γrms\Gamma_{rms} → 1/f² height) Use (M1) to compute the 1/f² phase noise at Δf=1\Delta f=1 MHz; then ask how much it drops (in dB) if Γrms\Gamma_{rms} is halved (0.50.250.5\to0.25).

Step-by-step substitution (with units):

Δω=2π×106=6.283×106 rad/s,Δω2=3.948×1013,bracket=(0.5)2(1012)210244×3.948×1013=0.25102410241.579×1014=1.583×1015,L1/f2=10log10(1.583×1015)=148.0 dBc/Hz.\begin{aligned} \Delta\omega&=2\pi\times10^{6}=6.283\times10^{6}\ \text{rad/s},\quad \Delta\omega^2=3.948\times10^{13}, \\[4pt] \text{bracket}&=\frac{(0.5)^2}{(10^{-12})^2}\cdot\frac{10^{-24}}{4\times3.948\times10^{13}} =\frac{0.25}{10^{-24}}\cdot\frac{10^{-24}}{1.579\times10^{14}}=1.583\times10^{-15}, \\[4pt] \mathcal{L}_{1/f^2}&=10\log_{10}(1.583\times10^{-15})=-148.0\ \text{dBc/Hz}. \end{aligned}

Halving Γrms\Gamma_{rms}Γrms2\Gamma_{rms}^2 becomes 14\tfrac14ΔL=10log10(0.252/0.52)=10log10(1/4)=6.02\Delta\mathcal{L}=10\log_{10}(0.25^2/0.5^2)=10\log_{10}(1/4)=-6.02 dB → new value 154.0-154.0 dBc/Hz.

  • Result: white noise's 1/f² height =148.0=-148.0 dBc/Hz; halving Γrms\Gamma_{rms} → 6 dB improvement. White depends only on Γrms\Gamma_{rms}, not on c0c_0 at all.
  • Dimension check: same as tank_swing Example 1 — the bracket reduces to a dimensionless per-Hz power ratio → dBc/Hz ✓.
  • One-line Python check:
import numpy as np
def L_white(grms, qmax, Si, dw): return 10*np.log10(grms**2/qmax**2 * Si/(4*dw**2))
dw = 2*np.pi*1e6
print(round(L_white(0.5,1e-12,1e-24,dw),1),
round(L_white(0.25,1e-12,1e-24,dw)-L_white(0.5,1e-12,1e-24,dw),2)) # -> -148.0 -6.02

Example 2 (mapping flicker noise onto c0c_0 → 1/f³ height, using (M3) to determine which region dominates) Use (M2) to compute the 1/f³ phase noise at Δf=100\Delta f=100 kHz, and use (M3) to determine whether that offset is dominated by flicker or white.

Step-by-step substitution (with units), first computing the (M3) ratio to determine which dominates (Δf=100\Delta f=100 kHz ω1/f/Δω=f1/f/Δf=10\Rightarrow\omega_{1/f}/\Delta\omega=f_{1/f}/\Delta f=10):

L1/f3L1/f2linear=c022Γrms2f1/fΔf=0.422×0.52106105=0.32×10=3.2  (>1).\frac{\mathcal{L}_{1/f^3}}{\mathcal{L}_{1/f^2}}\bigg|_{\text{linear}} =\frac{c_0^2}{2\Gamma_{rms}^2}\cdot\frac{f_{1/f}}{\Delta f} =\frac{0.4^2}{2\times0.5^2}\cdot\frac{10^6}{10^5} =0.32\times10=3.2\;(>1).

Ratio 3.2>13.2 > 1 → at 100 kHz flicker already dominates (consistent with the corner f1/f3=320f_{1/f^3}=320 kHz >100>100 kHz). The flicker height itself:

Δω=2π×105=6.283×105 rad/s,Δω2=3.948×1011,bracket=(0.4)2(1012)210248×3.948×10112π×1062π×105=0.16102410243.158×101210=0.16×103.158×1012=5.066×1013,L1/f3=10log10(5.066×1013)=122.95123.0 dBc/Hz.\begin{aligned} \Delta\omega&=2\pi\times10^{5}=6.283\times10^{5}\ \text{rad/s},\quad\Delta\omega^2=3.948\times10^{11}, \\[4pt] \text{bracket}&=\frac{(0.4)^2}{(10^{-12})^2}\cdot\frac{10^{-24}}{8\times3.948\times10^{11}}\cdot\frac{2\pi\times10^6}{2\pi\times10^5} \\[4pt] &=\frac{0.16}{10^{-24}}\cdot\frac{10^{-24}}{3.158\times10^{12}}\cdot 10 =\frac{0.16\times10}{3.158\times10^{12}}=5.066\times10^{-13}, \\[4pt] \mathcal{L}_{1/f^3}&=10\log_{10}(5.066\times10^{-13})=-122.95\approx-123.0\ \text{dBc/Hz}. \end{aligned}
  • Result: at 100 kHz, 1/f³ (flicker) is about 123.0-123.0 dBc/Hz and dominant (ratio 3.2). Flicker depends only on c0c_0: if symmetrizing the waveform brings c00.04c_0\to0.04 (10× smaller), this 1/f³ curve drops by 10log10(0.042/0.42)=2010\log_{10}(0.04^2/0.4^2)=-20 dB overall.
  • Dimension check: the (M3) ratio is dimensionless ✓; (M2)'s bracket has an extra dimensionless factor ω1/f/Δω\omega_{1/f}/\Delta\omega, changing the slope to 1/Δω31/\Delta\omega^3 (1/f³) ✓.
  • One-line Python check:
import numpy as np
c0, grms, qmax, Si, f1f = 0.4, 0.5, 1e-12, 1e-24, 1e6
df = 1e5; dw = 2*np.pi*df
ratio = c0**2/(2*grms**2) * (f1f/df)
L_1f3 = 10*np.log10(c0**2/qmax**2 * Si/(8*dw**2) * (f1f/df))
print(round(ratio,2), round(L_1f3,1)) # -> 3.2 -123.0 (ratio>1 => flicker dominates)

Both problems are pedagogical toys (not transistor-level): c0c_0 and Γrms\Gamma_{rms} use assumed values. A real circuit must recompute c0c_0, Γrms\Gamma_{rms} using the effective ISF Γeff=Γα\Gamma_{eff}=\Gamma\cdot\alpha (see Step 3 and effective_isf).

Key takeaways

  • Device noise has two bands: white (spread over all frequencies), flicker (concentrated at low frequency).
  • ISF harmonics are receive channels: c0c_0 receives flicker → 1/f³; c1,c2,c_1,c_2,\dots receive white → 1/f² (collapsed to Γrms\Gamma_{rms} via Parseval).
  • What actually matters is the effective ISF Γeff=Γα\Gamma_{eff}=\Gamma\cdot\alpha (cyclostationary); a symmetric bare Γ\Gamma can regrow c0c_0 because of an asymmetric α\alpha.
  • Two independent levers: move Γrms\Gamma_{rms}/c0c_0 (waveform symmetry, fast edges, differential, α\alpha alignment) vs. move qmaxq_{max} (swing, QQ, differential).
  • Ring ΓrmsN3/2\Gamma_{rms}\propto N^{-3/2} ([P2] Eq.(16), p.794, re-verified in v7: the square root covers only the constant); at fixed f0f_0/power, phase noise is roughly independent of NN.

Further reading