Skip to main content

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

Clock-chain noise accounting: ×N, ÷N, PLL, buffer — a one-page lookup table

Prerequisites: psd_phase_noise_jitter (SϕS_\phi, L\mathcal{L}, phase↔time conversion), pll_noise_budget (Hlp2,Hhp2\lvert H_{lp}\rvert^2,\lvert H_{hp}\rvert^2 and the five-source budget — this page reuses them directly, no re-derivation), white_noise_to_phase_noise (where the VCO's 148-148 dBc/Hz comes from) | Next: serdes_clocking_connection, exercises

In a real system there is no such thing as "one oscillator, used directly": the reference crystal is multiplied up by a PLL, divided back down by dividers, and passes through several buffer stages before reaching the sampler. The system engineer's daily question is: given the source L(f)\mathcal{L}(f), what is L(f)\mathcal{L}(f) at every node of the clock tree? What is the integrated jitter of the final clock? The good news: bookkeeping for the entire chain needs only four rules. This page derives each of the four rules step by step (no skipped steps, with units, with failure conditions), then strings them together in one complete worked chain, computed all the way to the end.

Physical intuition (conclusion first): only two kinds of things ever happen to phase along a clock chain — (1) Deterministic phase scaling: ×N multiplies phase by NN (+20log10N+20\log_{10}N dB), ÷N divides phase by NN (20log10N-20\log_{10}N dB), a PLL applies ×N to the reference in-band and low-passes it, and high-passes the VCO. Scaling acts on the entire curve; the offset axis does not move. (2) Additive independent noise: the buffer's and divider's own noise floor, uncorrelated with the input phase, adds in power (never in dB). There is also one beautiful conserved quantity: under ideal ×N/÷N, the time jitter σt\sigma_t in seconds is exactly unchanged — what changes is only "what angular fraction of one period the same error in seconds occupies".

Step 0: the one-page lookup table (conclusions first, derivations below)

ComponentPhase relationL(f)\mathcal{L}(f) accountingMain failure conditions
Ideal ×N multiplierϕout=Nϕin\phi_{out}=N\,\phi_{in}L+20log10N\mathcal{L}+20\log_{10}N (entire curve shifted)small-angle approximation (σϕ×N\sigma_\phi\times N grows), offset near fref/2f_{ref}/2
Ideal ÷N dividerϕout=ϕin/N\phi_{out}=\phi_{in}/NL20log10N\mathcal{L}-20\log_{10}Nsampling foldover (offset near fout/2f_{out}/2), divider's own floor
Through a PLL (×N)in-band follows ref, out-of-band follows VCON2SrefHlp2+SvcoHhp2N^2S_{ref}\lvert H_{lp}\rvert^2+S_{vco}\lvert H_{hp}\rvert^2the pure second-order loop's ref tail (computed in Step 6 of this page)
buffer / divider floorϕout=ϕin+ϕadd\phi_{out}=\phi_{in}+\phi_{add}10log10(10Lin/10+10Lbuf/10)10\log_{10}\big(10^{\mathcal{L}_{in}/10}+10^{\mathcal{L}_{buf}/10}\big)correlated noise (shared supply/bias) cannot simply be power-added

Convention statement (factor-of-2 discipline, consistent throughout this page): every L\mathcal{L} on this page is SSB (single-sideband) dBc/Hz, converted from SϕS_\phi via the small-angle approximation L=12Sϕ\mathcal{L}=\tfrac12 S_\phi (canonical formula 16; noise_utils uses the same convention). The worked chain's VCO anchor of 148-148 dBc/Hz @ 1 MHz is the site's canonical example B, using the "/4" SSB accounting of [P1] Eq.(21), p.185; the clean time-domain derivation's "/2" version gives 145-145 (the famous 3 dB convention dispute, see white_noise_to_phase_noise). The four rules on this page (±20log10N\pm20\log_{10}N, power addition) are themselves ratio operations: as long as input and output use the same convention, /2 or /4 cancels, and the rules' numbers are convention-independent — which is why the accounting rules can safely be used as a lookup table.

Rule 1: ideal ×N multiplication — why it is +20log10N+20\log_{10}N

Step 1 (write the signal as a function of phase). Using the decomposition of [P1] Eq.(1), p.181, take a sinusoidal waveform:

Vin(t)=cos(Φin(t)),Φin(t)=ωreft+ϕin(t)V_{in}(t)=\cos\big(\Phi_{in}(t)\big),\qquad \Phi_{in}(t)=\omega_{ref}\,t+\phi_{in}(t)

Φin\Phi_{in} is the total phase (rad), ϕin\phi_{in} is the excess phase (rad), ωref=2πfref\omega_{ref}=2\pi f_{ref} (rad/s).

Step 2 (ideal multiplier = memoryless nonlinearity + bandpass). Any memoryless nonlinearity g()g(\cdot) acting on cosΦ\cos\Phi: because g(cosΦ)g(\cos\Phi) is a 2π2\pi-periodic function of Φ\Phi, it can be expanded as a Fourier series in Φ\Phi:

g(cosΦ(t))=k=0akcos(kΦ(t)+θk)g\big(\cos\Phi(t)\big)=\sum_{k=0}^{\infty}a_k\cos\big(k\,\Phi(t)+\theta_k\big)

The key is the argument: every term is "an integer multiple of the instantaneous total phase, kΦ(t)k\Phi(t)" — a memoryless element has no notion of time, it can only act on "the phase right now", so the excess phase is carried along completely intact.

Step 3 (bandpass selects the NN-th harmonic). A bandpass filter centered at NfrefN f_{ref} picks the k=Nk=N term:

Vout(t)cos(NΦin(t))=cos(Nωreft+Nϕin(t)) ϕout(t)=Nϕin(t) V_{out}(t)\propto\cos\big(N\Phi_{in}(t)\big)=\cos\big(N\omega_{ref}\,t+N\phi_{in}(t)\big) \quad\Longrightarrow\quad \boxed{\ \phi_{out}(t)=N\,\phi_{in}(t)\ }

This identity holds instant by instant — every frequency component of ϕin\phi_{in} is multiplied by NN, with no frequency selectivity whatsoever.

Step 4 (convert to PSD and dB). Phase multiplied by NN (amplitude), power spectral density multiplied by N2N^2:

Sϕ,out(f)=N2Sϕ,in(f)  [rad2/Hz],Lout(f)=Lin(f)+20log10N  [dBc/Hz]S_{\phi,out}(f)=N^2\,S_{\phi,in}(f)\ \ [\text{rad}^2/\text{Hz}],\qquad \mathcal{L}_{out}(f)=\mathcal{L}_{in}(f)+20\log_{10}N\ \ [\text{dBc/Hz}]

The second equation used L=12Sϕ\mathcal{L}=\tfrac12 S_\phi — input and output use the same convention, the 12\tfrac12 cancels, so +20log10N+20\log_{10}N is independent of the /2-vs-/4 convention. For N=50N=50, +20log1050=+33.98+20\log_{10}50=+33.98 dB +34\approx+34 dB.

  • Physical meaning: multiplication creates no noise. It magnifies "the same absolute time jitter" into an NN-times larger angle — one output period is only 1/N1/N as long as the input's, so the same error in seconds occupies NN times the fraction of an output period.
  • The offset axis does not move (common mistake): what gets multiplied by NN is the phase amplitude, not the rhythm of the phase fluctuations. The entire L\mathcal{L} curve shifts vertically up by 20log10N20\log_{10}N; the horizontal axis (offset ff) is completely unchanged.
  • Dimension check: NN dimensionless, ϕ\phi in rad, SϕS_\phi in rad²/Hz, 20log10N20\log_{10}N in dB ✓.
  • Time-jitter conservation: Δtout=ϕout2πNfref=Nϕin2πNfref=ϕin2πfref=Δtin\Delta t_{out}=\dfrac{\phi_{out}}{2\pi N f_{ref}}=\dfrac{N\phi_{in}}{2\pi N f_{ref}} =\dfrac{\phi_{in}}{2\pi f_{ref}}=\Delta t_{in} — the edge error in seconds is unchanged (verified numerically in Step 5 below).

Failure conditions: (1) small-angle approximationσϕ,out=Nσϕ,in\sigma_{\phi,out}=N\sigma_{\phi,in}; for large NN (e.g. N=1000N=1000, +60+60 dB) it can approach 1 rad, L12Sϕ\mathcal{L}\approx\tfrac12 S_\phi collapses, and the carrier energy redistributes into a Lorentzian (the linewidth diffusion constant DD is magnified by N2N^2, see lorentzian_linewidth); (2) sideband overlap — for offsets near fref/2f_{ref}/2 the skirts of the N±1N\pm1 harmonics mix into the bandpass; (3) real multipliers have their own additive floor (Rule 4).

ILCM addendum: this rule assumes a "memoryless nonlinearity + bandpass" — that kind of multiplier creates no noise; it just scales the input's excess phase by NN, unchanged. A real injection-locked clock multiplier (ILCM) is not that machine: it is a locked oscillator, so the carrier path is still deterministically ϕoutNϕin\phi_{out}\approx N\phi_{in} (in-band reference noise still eats N2SrefN^2S_{ref}, +20log10N+20\log_{10}N, consistent with this rule) — but its own free-running phase noise is high-pass shaped by a first-order discrete-time loop (corner βfref/2π\approx\beta f_{ref}/2\pi, where β\beta is the realignment factor per reference pulse), replacing this rule's "clean constant shift" assumption. Past the corner, the output noise is set by the ILCM's own oscillator quality — no longer something +20log10N+20\log_{10}N describes. Full derivation: subharmonic_injection.

Rule 2: ideal ÷N division — the rigorous origin of 20log10N-20\log_{10}N

The quadrature_and_coupled_oscillators page, in the ÷2-generates-I/Q section, directly cites Lout=Lin20log10N\mathcal{L}_{out}=\mathcal{L}_{in}-20\log_{10}N; this is the rigorous derivation's home for that equation, and the two pages' numbers agree (÷2 is 6.02-6.02 dB).

Step 1 (timing of the input edges). The kk-th input rising zero crossing tkt_k is defined by the total phase: Φin(tk)=2πk\Phi_{in}(t_k)=2\pi k. Substituting Φin=ωreft+ϕin(t)\Phi_{in}=\omega_{ref}t+\phi_{in}(t) and solving:

tk=kTrefϕin(tk)ωrefδtk=ϕin(kTref)ωreft_k=k\,T_{ref}-\frac{\phi_{in}(t_k)}{\omega_{ref}} \qquad\Longrightarrow\qquad \delta t_k=-\frac{\phi_{in}(kT_{ref})}{\omega_{ref}}

The second equation used "ϕ\phi slowly varying" (offset fref\ll f_{ref}) to replace ϕin(tk)\phi_{in}(t_k) with ϕin(kTref)\phi_{in}(kT_{ref}). Dimension check: [rad]/[rad/s]=[s][\text{rad}]/[\text{rad/s}]=[\text{s}] ✓.

Step 2 (a divider only drops edges, never moves them). An ideal ÷N is an edge-picking machine: for every NN input edges it outputs one, and the output edge's time is exactly the time of the selected input edge. So the absolute time error δt\delta t passes to the output completely intact:

δtm(out)=δtmN\delta t^{(out)}_m=\delta t_{mN}

Step 3 (fold the time error back into the output carrier's phase). The output carrier is ωout=ωref/N\omega_{out}=\omega_{ref}/N. The output excess phase follows from the same phase definition in reverse (Φout(tm)=2πm\Phi_{out}(t'_m)=2\pi m, tm=mTout+δtmt'_m=mT_{out}+\delta t_m):

ϕout=ωoutδt(out)=ωoutωrefϕin ϕout=ϕinN \phi_{out}=-\,\omega_{out}\,\delta t^{(out)} =\frac{\omega_{out}}{\omega_{ref}}\,\phi_{in} \qquad\Longrightarrow\qquad \boxed{\ \phi_{out}=\frac{\phi_{in}}{N}\ }

Step 4 (PSD and dB).

Sϕ,out(f)=Sϕ,in(f)N2,Lout(f)=Lin(f)20log10NS_{\phi,out}(f)=\frac{S_{\phi,in}(f)}{N^2},\qquad \mathcal{L}_{out}(f)=\mathcal{L}_{in}(f)-20\log_{10}N

÷2 is 20log102=6.02-20\log_{10}2=-6.02 dB. Physical meaning: the same jitter in seconds, spread over a period NN times longer, is an angle NN times smaller. Perfectly symmetric with Rule 1: ×N then ÷N brings L\mathcal{L} back to where it started, and σt\sigma_t (seconds) is unchanged throughout.

Quick check (work it out yourself, then check)
dB
Graded correct within ±1% relative error; scientific notation is accepted.

Failure conditions (both matter):

  1. Sampling foldover (aliasing): ϕout\phi_{out} is defined only at the output edge instants — this is a system sampled at fout\sim f_{out}. Components of the input phase noise at offsets above fout/2\sim f_{out}/2 fold back into the output band; for a flat wideband noise floor, division does not earn the full 20log10N20\log_{10}N (foldover stacks the power back). The clean 20log10N-20\log_{10}N holds only for close-in noise at offsets fout\ll f_{out}. (External literature, not among the five source PDFs; for the standard divider noise model see Egan at the end of this page.)
  2. The divider's own floor: real dividers (CML latch, TSPC) have their own additive floor (Rule 4), often higher than "the cleanly divided-down signal" — after division the output can never be better than the divider's own floor.

Relation to [P4]: an injection-locked frequency divider (ILFD) uses the ISF's 2nd harmonic to lock 2f02f_0 to f0f_0, implementing ÷2 ([P4], frequency division in Part II, see paper_004). The ÷N phase accounting (ϕ/N\phi/N) holds equally for the ILFD's carrier path; but an ILFD near the edge of its lock range has its own noise behavior, outside this page's ideal accounting.

Rule 3: through a PLL — the reference goes "×N + lowpass", the VCO goes "highpass"

A PLL is the closed-loop implementation of Rule 1: the divider brings the output back to freff_{ref} for phase comparison, which forces "output phase =N×=N\times reference phase" — so reference noise first takes +20log10N+20\log_{10}N (Rule 1), and is then shaped by the closed-loop lowpass Hlp2\lvert H_{lp}\rvert^2; the VCO's own noise is shaped by the highpass Hhp2\lvert H_{hp}\rvert^2:

Sout(f)=N2Sref(f)Hlp(f)2+Svco(f)Hhp(f)2[rad2/Hz]S_{out}(f)=N^2\,S_{ref}(f)\,\lvert H_{lp}(f)\rvert^2+S_{vco}(f)\,\lvert H_{hp}(f)\rvert^2 \qquad[\text{rad}^2/\text{Hz}]

The two transfer functions (type-II second order, ωn,ζ\omega_n,\zeta) and the full five-source budget were derived step by step and verified in pll_noise_budget; this page reuses them directly without re-deriving (that page also includes the charge-pump floor ScpHlp2S_{cp}\lvert H_{lp}\rvert^2; to keep this page's worked chain focused on the four rules, the CP floor is folded conceptually into the "in-band floor" and omitted numerically, marked illustrative). The brick-wall accounting used for the lookup table is its asymptotic version:

  • in-band (ffnf\ll f_n): Hlp21\lvert H_{lp}\rvert^2\to1, Hhp20\lvert H_{hp}\rvert^2\to0LoutLref+20log10N\mathcal{L}_{out}\approx\mathcal{L}_{ref}+20\log_{10}N.
  • out-of-band (ffnf\gg f_n): Hlp20\lvert H_{lp}\rvert^2\to0, Hhp21\lvert H_{hp}\rvert^2\to1LoutLvco\mathcal{L}_{out}\approx\mathcal{L}_{vco} (the free-running VCO skirt).
  • Take the crossover at the loop bandwidth fnf_n.

Dimension check: all SS in rad²/Hz, N2N^2 and H2\lvert H\rvert^2 dimensionless ✓. The brick-wall version is convenient but has one famous trap — the pure second-order loop's reference tail, laid out numerically in Step 6.

Rule 4: the buffer/divider additive floor — power addition, never dB addition

Step 1 (why a buffer is "additive"). A buffer regenerates edges: at the instant the input waveform crosses the switching threshold, the noise voltage vnv_n (V) of the buffer's internal devices sits on top of the threshold and displaces the output edge by

Δtadd=vn(tk)SR[VV/s=s] \Delta t_{add}=\frac{v_n(t_k)}{SR}\qquad \Big[\frac{\text{V}}{\text{V/s}}=\text{s}\Big]\ \checkmark

(SRSR = slew rate at the threshold crossing, V/s. This is the same physics as waveform_slope's "most sensitive where the slope is small".) vnv_n comes from the buffer's own devices and is uncorrelated with the input clock's phase.

Step 2 (uncorrelated ⇒ PSDs add). In phase this is pure addition:

ϕout=ϕin+ϕaddSϕ,out(f)=Sϕ,in(f)+Sbuf(f)\phi_{out}=\phi_{in}+\phi_{add} \qquad\Longrightarrow\qquad S_{\phi,out}(f)=S_{\phi,in}(f)+S_{buf}(f)

(The cross term ϕinϕadd=0\langle\phi_{in}\phi_{add}\rangle=0.) Converting to dBc/Hz gives the lookup-table formula — note you must convert to linear first, add, then convert back to dB:

 Lout(f)=10log10(10Lin(f)/10+10Lbuf(f)/10) \boxed{\ \mathcal{L}_{out}(f)=10\log_{10}\Big(10^{\mathcal{L}_{in}(f)/10}+10^{\mathcal{L}_{buf}(f)/10}\Big)\ }

Both L\mathcal{L} are SSB on the same carrier with the same convention; the 12\tfrac12 of L=12Sϕ\mathcal{L}=\tfrac12 S_\phi cancels on both sides — so accounting directly in L\mathcal{L} is legitimate, independent of the /2-vs-/4 convention.

Step 3 (multiplicative vs additive — the most important classification on this page). Rules 1–3 are multiplicative: they scale/shape the incoming phase curve as a whole; a clean source gives a clean output. Rule 4 is additive: the buffer injects new, independent noise, and the output can never be better than the buffer's own floor — however clean the source, one noisy buffer stage ruins it. That is what "floor dominates" means.

Step 4 (when the floor takes over — the dB-addition table). Let the signal sit Δ\Delta dB above the floor; the penalty is 10log10(1+10Δ/10)10\log_{10}(1+10^{-\Delta/10}):

Δ=LinLbuf\Delta=\mathcal{L}_{in}-\mathcal{L}_{buf}Output above Lin\mathcal{L}_{in} byWho dominates
+20+20 dB (signal much higher)+0.04+0.04 dBfloor completely invisible
+10+10 dB+0.41+0.41 dBfloor starting to show
+6+6 dB+0.97+0.97 dB
+3+3 dB+1.76+1.76 dB
00 dB (equal)+3.01+3.01 dBhalf and half
10-10 dB (signal below floor)output Lbuf+0.41\approx\mathcal{L}_{buf}+0.41floor dominates, output is clamped

Step 5 (flat floor ⇒ white phase noise ⇒ one easy-to-remember jitter formula). A flat Lbuf\mathcal{L}_{buf} is white phase noise; its own rms jitter contribution over an integration bandwidth BB (Hz):

σt,add=12πf0210Lbuf/10B\sigma_{t,add}=\frac{1}{2\pi f_0}\sqrt{2\cdot10^{\mathcal{L}_{buf}/10}\cdot B}

(The 2×2\times is the small-angle LSϕ\mathcal{L}\to S_\phi conversion, canonical formula 16; then integrate with canonical formula 19.) Numbers: Lbuf=155\mathcal{L}_{buf}=-155 dBc/Hz, B100B\approx100 MHz, f0=2.5f_0=2.5 GHz: σt,add=2×3.16×1016×108/(2π×2.5×109)=2.51×104/1.571×1010=16.0\sigma_{t,add}=\sqrt{2\times3.16\times10^{-16}\times10^8}\,/(2\pi\times2.5\times10^9) =2.51\times10^{-4}/1.571\times10^{10}=16.0 fs. Dimension check: [rad2/Hz][Hz]=[rad]\sqrt{[\text{rad}^2/\text{Hz}]\cdot[\text{Hz}]}=[\text{rad}], [rad]/[rad/s]=[s][\text{rad}]/[\text{rad/s}]=[\text{s}] ✓. (This 16.0 fs will reappear, unchanged, in the worked chain's breakdown below.)

Quick check (work it out yourself, then check)
fs
Graded correct within ±2% relative error; scientific notation is accepted.

The four rules' constants are first pinned down with a checkable Python block (the values after # -> are actual run output):

import numpy as np
print(round(20*np.log10(50), 2)) # -> 33.98
print(round(20*np.log10(2), 2)) # -> 6.02
print(round(10*np.log10(1 + 10**(-20/10)), 2)) # -> 0.04
print(round(10*np.log10(1 + 10**(-10/10)), 2)) # -> 0.41
print(round(10*np.log10(1 + 10**(-6/10)), 2)) # -> 0.97
print(round(10*np.log10(1 + 10**(-3/10)), 2)) # -> 1.76
print(round(10*np.log10(1 + 10**(0/10)), 2)) # -> 3.01

Step 5: the conserved quantity — under ideal ×N/÷N, σt\sigma_t (seconds) is unchanged

Put the conclusions of Rules 1 and 2 side by side: ×N gives ϕ×N\phi\times N while the carrier gets f0×Nf_0\times N; ÷N gives ϕ/N\phi/N while f0/Nf_0/N. Substituting into Δt=ϕ/(2πf0)\Delta t=\phi/(2\pi f_0) (canonical formula 17), the two NN's cancel:

σt,out=σϕ,out2πf0,out=N±1σϕ,in2πN±1f0,in=σt,in\sigma_{t,out}=\frac{\sigma_{\phi,out}}{2\pi f_{0,out}} =\frac{N^{\pm1}\,\sigma_{\phi,in}}{2\pi\,N^{\pm1} f_{0,in}}=\sigma_{t,in}

Time jitter in seconds is the invariant of ideal multiplication/division. The L\mathcal{L} that got worse (or better) is only a change in the exchange rate "the same error in seconds converted to angle". This gives you an extremely useful sanity check: on any chain segment that is "pure ×N/÷N with no additive floor", the σt\sigma_t computed at both ends over the same integration band must be equal. Verify with the worked chain's numbers (the 5 GHz stage vs the 2.5 GHz after ideal ÷2, both without the buffer):

import numpy as np
from simulations.common.noise_utils import integrate_rms_jitter
f = np.logspace(4, 8, 20001)
L5G = np.where(f <= 1e6, -126.02, -148.0 - 20*np.log10(f/1e6))
st5, _ = integrate_rms_jitter(f, L5G, f0=5e9, fmin=1e4, fmax=1e8)
st25, _ = integrate_rms_jitter(f, L5G - 6.02, f0=2.5e9, fmin=1e4, fmax=1e8)
print(round(st5*1e15, 1)) # -> 22.5
print(round(st25*1e15, 1)) # -> 22.5

The two 22.5 fs values are identical — ÷2 improved L\mathcal{L} by 6 dB yet saved not a single fs. For SerDes this is actually the flip side of bad news: converted to UI, σt\sigma_t is unchanged while the UI gets longer, so after division the "fraction of a UI" does shrink — what you save is a ratio, not seconds.

Step 6: worked chain — 100 MHz → ×50 PLL → 5 GHz → ÷2 → 2.5 GHz → buffer

Now string the four rules into a realistically shaped chain. All values are representative/illustrative (not a specific silicon process) but fully consistent with the site's canonical numbers.

Parameter table:

QuantityValueUnitNotes
freff_{ref}100MHzreference frequency
Lref\mathcal{L}_{ref}160-160 (flat floor)dBc/Hzfar-out floor of a clean reference (illustrative; a real crystal's close-in tilts up, this page only looks at 10\ge10 kHz)
NN50100 MHz5 GHz100\ \text{MHz}\to5\ \text{GHz}
fn, ζf_n,\ \zeta1 MHz, 0.707Hz, —type-II second-order loop (reused from pll_noise_budget)
VCOL(1MHz)=148\mathcal{L}(1\,\text{MHz})=-148, 1/f21/f^2dBc/Hzsite canonical example B ([P1] Eq.(21), p.185, /4 SSB convention)
÷N252.55\to2.5 GHz
Lbuf\mathcal{L}_{buf}155-155 (flat floor)dBc/Hzthe output buffer's additive floor
Integration band10410^410810^8Hzfinal jitter integration

6.1 Per-stage L\mathcal{L}: 100 kHz for in-band, 10 MHz for out-of-band

Step-by-step hand calculation (brick-wall accounting):

  1. Reference: flat floor ⇒ 160.00-160.00 at both offsets.
  2. PLL output (5 GHz):
    • in-band (100 kHzfn100\ \text{kHz}\ll f_n): Rule 3 ⇒ 160+20log1050=160+33.98=126.02-160+20\log_{10}50=-160+33.98=-126.02.
    • out-of-band (10 MHzfn10\ \text{MHz}\gg f_n): free-running VCO, 1/f21/f^2 extrapolated from the 1 MHz anchor: 14820log10(10)=168.00-148-20\log_{10}(10)= -168.00.
  3. ÷2 (2.5 GHz): Rule 2, entire curve 6.02-6.02 dB ⇒ 132.04-132.04 and 174.02-174.02.
  4. Output buffer: Rule 4, power-add against the 155-155 floor:
    • 100 kHz: signal 132.04-132.04 is 22.96 dB above the floor ⇒ penalty 0.02\approx0.02 dB ⇒ 132.02-132.02 (floor invisible).
    • 10 MHz: signal 174.02-174.02 is 19 dB below the floor ⇒ floor dominates154.95-154.95 (clamped near 155-155).
NodeCarrierL\mathcal{L}(100 kHz) [dBc/Hz]L\mathcal{L}(10 MHz) [dBc/Hz]Dominant rule
Reference100 MHz160.00-160.00160.00-160.00
PLL ×50 output5 GHz126.02-126.02168.00-168.00Rule 3 (in-band ref+34; out-of-band VCO)
After ÷22.5 GHz132.04-132.04174.02-174.02Rule 2 (6.02-6.02)
+ buffer (final)2.5 GHz132.02-132.02154.95-154.95Rule 4 (floor dominates at 10 MHz)

The same table pinned down with checkable Python:

import numpy as np
L_ref = -160.0
L_in = L_ref + 20*np.log10(50) # Rule 1/3: in-band = ref + 20logN
print(round(L_in, 2)) # -> -126.02
L_vco_10M = -148.0 - 20*np.log10(10e6/1e6) # VCO 1/f²: extrapolate from the 1 MHz anchor to 10 MHz
print(round(L_vco_10M, 2)) # -> -168.0
div = -20*np.log10(2) # Rule 2
print(round(L_in + div, 2)) # -> -132.04
print(round(L_vco_10M + div, 2)) # -> -174.02
def padd(*Ls): return 10*np.log10(sum(10**(L/10) for L in Ls))
print(round(padd(L_in + div, -155.0), 2)) # -> -132.02
print(round(padd(L_vco_10M + div, -155.0), 2)) # -> -154.95

6.2 Integrated jitter of the final 2.5 GHz clock (10 kHz–100 MHz)

Brick-wall model of the final curve: in-band floor 132.04-132.04 (up to fn=1f_n=1 MHz), then the ÷2'd VCO skirt (1 MHz anchor 1486.02=154.02-148-6.02=-154.02, 1/f21/f^2), all power-added with the 155-155 buffer floor throughout. Hand-integrating with canonical formulas 18/19 (LSϕ=2×10L/10\mathcal{L}\to S_\phi=2\times10^{\mathcal{L}/10}):

in-band floor:σϕ,12=2×1013.204×(106104)=1.250×1013×9.9×105=1.238×107 rad2,VCO skirt:σϕ,22=2×1015.402(106)2 ⁣(11061108)=7.9×1010 rad2,buffer floor:σϕ,32=2×1015.5×(108104)=6.32×108 rad2,σϕ=1.238×107+7.9×1010+6.32×108=4.33×104 rad,σt=σϕ2π×2.5×109=27.6 fs.\begin{aligned} \text{in-band floor:}\quad \sigma_{\phi,1}^2&=2\times10^{-13.204}\times(10^6-10^4)=1.250\times10^{-13}\times9.9\times10^5 =1.238\times10^{-7}\ \text{rad}^2,\\[2pt] \text{VCO skirt:}\quad \sigma_{\phi,2}^2&=2\times10^{-15.402}\,(10^6)^2\!\left(\frac{1}{10^6}-\frac{1}{10^8}\right) =7.9\times10^{-10}\ \text{rad}^2,\\[2pt] \text{buffer floor:}\quad \sigma_{\phi,3}^2&=2\times10^{-15.5}\times(10^8-10^4)=6.32\times10^{-8}\ \text{rad}^2,\\[4pt] \sigma_\phi&=\sqrt{1.238\times10^{-7}+7.9\times10^{-10}+6.32\times10^{-8}} =4.33\times10^{-4}\ \text{rad},\\[2pt] \sigma_t&=\frac{\sigma_\phi}{2\pi\times2.5\times10^9}=27.6\ \text{fs}. \end{aligned}

Dimension check: [rad2/Hz]×[Hz]=[rad2][\text{rad}^2/\text{Hz}]\times[\text{Hz}]=[\text{rad}^2] ✓; [rad]/[rad/s]=[s][\text{rad}]/[\text{rad/s}]=[\text{s}] ✓. Verified with noise_utils (same convention Sϕ=2LS_\phi=2\mathcal{L}):

import numpy as np
from simulations.common.noise_utils import integrate_rms_jitter
f = np.logspace(4, 8, 20001)
L_core = np.where(f <= 1e6, -132.04, -154.02 - 20*np.log10(f/1e6))
L_tot = 10*np.log10(10**(L_core/10) + 10**(-155.0/10))
st, sp = integrate_rms_jitter(f, L_tot, f0=2.5e9, fmin=1e4, fmax=1e8)
print(round(st*1e15, 1)) # -> 27.6
print(round(sp*1e6, 1)) # -> 433.4

Who contributed these 27.6 fs? (breakdown from an actual run of simulations/fig_clock_chain.py, power ratios)

SourceStandalone σt\sigma_tShare of σϕ2\sigma_\phi^2
in-band floor (reference ×N2\times N^2)22.4 fs65.9 %
buffer floor16.0 fs33.7 %
VCO skirt1.78 fs0.42 %
RSS total27.6 fs100 %

This table is the most important design message on this page: this chain's jitter is split between "the in-band floor raised by ×N2\times N^2" and "the unremarkable buffer floor"; that beautiful 148-148 dBc/Hz VCO is nearly invisible (0.42 %). Spending effort improving the VCO further is wasted work — do the accounting first, so the effort goes where it counts. (The buffer's 16.0 fs is exactly the number from Rule 4's Step-5 formula.)

6.3 Corresponding simulation figure

Full script: simulations/fig_clock_chain.py (to run: from the project root, PYTHONPATH=. python3 simulations/fig_clock_chain.py — it prints every # -> number on this page and produces the figure).

Clock-chain accounting: left = per-stage SSB phase noise (solid black = final 2.5 GHz clock, dashed red = full type-II shaping); right = cumulative rms jitter of the final clock (brick-wall 27.6 fs vs shaped 44.0 fs)

How to read it: in the left panel, the blue line is the 5 GHz brick-wall (in-band 126-126 plateau + VCO skirt past 1 MHz), the green line is the same curve shifted down 6.02 dB (÷2), the orange dotted line is the 155-155 buffer floor, and the thick black line is the final output — 132.0-132.0 at 100 kHz, clamped by the floor at 154.9-154.9 at 10 MHz. The right panel is the cumulative jitter "integrated from 10 kHz to ff": the in-band floor accumulates 22 fs before 1 MHz, after which the buffer floor slowly pushes the total to 27.6 fs; the dashed red line (full type-II shaping) stays above the brick-wall around and beyond fnf_n — that is the trap the next step lays open.

Step 7: honest comparison — brick-wall lookup vs full type-II shaping

Brick-wall is lookup-table-grade approximation. Computing with pll_noise_budget's actual Hlp2\lvert H_{lp}\rvert^2 (pll_utils, fn=1f_n=1 MHz, ζ=0.707\zeta=0.707), the difference at the two offsets is plain:

  • in-band (100 kHz): shaped 131.9-131.9 vs brick-wall 132.0-132.0 — only 0.1 dB apart (slight peaking of Hlp2\lvert H_{lp}\rvert^2 at fn/10f_n/10). The lookup table is reliable ✓.
  • out-of-band (10 MHz): shaped 148.0-148.0 vs brick-wall 154.9-154.97 dB apart!

The reason: the type-II second-order closed loop's zero makes Hlp2\lvert H_{lp}\rvert^2 roll off at only 20-20 dB/dec for ffnf\gg f_n (Hlp2(2ζfn/f)2\lvert H_{lp}\rvert^2\approx(2\zeta f_n/f)^2), so the reference floor raised by ×N2\times N^2 leaks a 20-20 dB/dec tail into the out-of-band region; and the VCO skirt is also 20-20 dB/dec — the two lines are parallel, the gap is constant and can never be closed:

import numpy as np
from simulations.common.pll_utils import H_lowpass_mag2
S_refN2 = 2 * 10**(-126.02/10) # N²·S_ref (S_phi of the in-band floor) [rad²/Hz]
lp = H_lowpass_mag2(10e6, 1e6) # |H_lp|² @ 10 MHz, fn = 1 MHz
L_refpath = 10*np.log10(0.5 * S_refN2 * lp)
print(round(L_refpath, 1)) # -> -143.0
print(round(L_refpath - (-168.0), 1)) # -> 25.0

The reference tail at 10 MHz is 143.0-143.0 dBc/Hz (5 GHz carrier), 25 dB above the VCO's 168-168 — and because both have the same slope, these 25 dB hold at every out-of-band offset. The lookup-table cell "out-of-band = VCO" is, for a pure second-order loop, simply unreachable. The consequence for integrated jitter (actual run of fig_clock_chain.py):

ModelFinal σt\sigma_t (10 kHz–100 MHz)
brick-wall lookup27.6 fs
type-II second-order full shaping44.0 fs (+59%+59\%)
second order + 3rd pole @ 3 MHz (illustrative)38.6 fs

How to fix it: real synthesizers add a third pole to the loop filter (plus higher-order post-filters) precisely for this, turning the ref tail into 40-40 dB/dec or steeper; the third row above shows one 3 MHz pole cutting the damage by a third (the pole-placement vs loop-stability trade-off belongs to the standard PLL literature — external literature, not among the five source PDFs).

One level more honest: this chain's fn=1f_n=1 MHz was never the jitter-optimal choice to begin with — the crossover of the in-band floor (126-126) and the VCO skirt sits at 79.679.6 kHz, far below 1 MHz. Sweeping fnf_n for this chain with pll_noise_budget's U-curve method (shaped model, 3rd pole tracking at 3fn3f_n): the minimum is at fn\*53f_n^\*\approx53 kHz, σt19.6\sigma_t\approx19.6 fs. Lookup accounting (this page) tells you each stage's bill; loop optimization (that page) tells you how to change the bill — two different things, don't mix them.

Design-knobs checklist

KnobWhich rule it acts onHow to turn it
Division ratio NN (reference frequency)Rules 1/3: in-band floor N2\propto N^265.9% of this chain's jitter power comes from ref×N2\times N^2; raising freff_{ref} to lower NN is the most effective move
Buffer floor Lbuf\mathcal{L}_{buf}Rule 433.7% comes from one 155-155 floor stage; increase buffer current/slew (Δt=vn/SR\Delta t=v_n/SR) to push the floor down; the fewer stages the better
Where to place the ÷NRules 2 + 4÷N only divides the noise "upstream of it"; only when placed after the noisy source do you enjoy 20log10N-20\log_{10}N, and downstream buffer floors still add at full value
Loop BW fnf_nRule 3this chain's optimum is fn\*53f_n^\*\approx53 kHz (not 1 MHz); the 79.6 kHz crossover is the first-order intuition
Loop order (3rd pole)Rule 3the pure second-order ref tail runs parallel to the VCO (a constant +25+25 dB in this example); only higher-order poles let out-of-band truly hand over to the VCO
VCO Γrms/qmax\Gamma_{rms}/q_{max}Rule 3's SvcoS_{vco}this chain's VCO is only 0.42% — do the accounting before deciding to touch it (for ISF knobs see tank_swing, lc_vs_ring)

Connection to SerDes

The final 2.5 GHz clock's σt=27.6\sigma_t=27.6 fs feeds directly into serdes_clocking_connection's eye/BER machinery: if this clock drives a 5 Gb/s half-rate link (UI =200=200 ps), the RJ overhead at BER =1012=10^{-12} (Q17.03Q^{-1}\approx7.03, site canonical) is 2×7.03×27.6 fs=0.392\times7.03\times27.6\ \text{fs}=0.39 ps =0.19%=0.19\% UI — quite healthy; but note every extra buffer stage in the clock tree adds another Rule-4 floor (power addition) — in a high-fan-out tree the buffers alone can eat the whole budget. Accumulated jitter of the free-running segment ([P2] Eq.(8), p.792, σΔt=κΔt\sigma_{\Delta t}=\kappa\sqrt{\Delta t}) is high-pass truncated once it enters the PLL/CDR loop — in this chain, "who free-runs and who is locked" determines which noise accumulates and which does not (Step 6 of that page).

Applicability and failure conditions

ConditionWhen it holdsWhen it fails
Small-angle approximation (σϕ1\sigma_\phi\ll1 rad)L=12Sϕ\mathcal{L}=\tfrac12 S_\phi and the ±20log10N\pm20\log_{10}N lookup holdafter large-NN multiplication σϕ×N\sigma_\phi\times N grows → Lorentzian redistribution (lorentzian_linewidth)
offset fref/2\ll f_{ref}/2 (×N), fout/2\ll f_{out}/2 (÷N)clean ±20log10N\pm20\log_{10}Nsideband overlap / sampling foldover; a flat floor does not earn the full 20log10N-20\log_{10}N
Per-stage noise uncorrelatedRule-4 power additioncorrelated noise sharing supply/bias (e.g. PSIJ) needs the cross terms, may add in phase
Brick-wall PLL accountingin-band lookup error 0.1\sim0.1 dBpure second-order loop: ref tail parallel to VCO (constant 25 dB gap in this example), the out-of-band cell can be off by 7 dB, σt\sigma_t underestimated by 59%
Ideal edge-picking divider20log10N-20\log_{10}Nreal divider's own floor (Rule 4) dominates first; ILFD near the lock-range edge is a separate story ([P4])

Key takeaways

  • The four rules: ×N adds 20log10N20\log_{10}N (ϕout=Nϕin\phi_{out}=N\phi_{in}, offset axis unchanged); ÷N subtracts 20log10N20\log_{10}N (edge-picking, time error intact, angle divided by NN); PLL = reference through N2Hlp2N^2\lvert H_{lp}\rvert^2, VCO through Hhp2\lvert H_{hp}\rvert^2 (transfer functions reused from pll_noise_budget); buffer/divider floor = power addition, Lout=10log10(10Lin/10+10Lbuf/10)\mathcal{L}_{out}=10\log_{10}(10^{\mathcal{L}_{in}/10}+10^{\mathcal{L}_{buf}/10}).
  • Conserved quantity: under ideal ×N/÷N, σt\sigma_t (seconds) is unchanged (both ends 22.5 fs in this example); ÷N saves "fraction of a UI", not seconds.
  • Worked chain (100 MHz→×50→5 GHz→÷2→2.5 GHz→buffer): at 100 kHz, 160126.02132.04132.02-160\to-126.02\to-132.04\to-132.02; at 10 MHz, 160168.00174.02154.95-160\to-168.00\to-174.02\to-154.95 (floor dominates).
  • Final integrated jitter (10 kHz–100 MHz) = 27.6 fs; breakdown = ref×N2\times N^2 floor 65.9% + buffer floor 33.7% + VCO 0.42% — accounting first, don't blindly upgrade the VCO.
  • Honest comparison: the pure type-II second-order loop's ref tail runs parallel to the VCO skirt (a constant +25+25 dB here), shaped σt=44.0\sigma_t=44.0 fs (59% above the lookup); adding a 3rd pole (3 MHz) → 38.6 fs; this chain's jitter-optimal loop BW is actually fn\*53f_n^\*\approx53 kHz (σt19.6\sigma_t\approx19.6 fs).
  • Convention discipline: the rules are all ratio/addition operations, /2-vs-/4 cancels; the only convention-sensitive item is the VCO anchor (148-148 = [P1] Eq.(21)'s /4 SSB; the time-domain /2 gives 145-145).

Further reading

External literature (not among the five downloaded PDFs)

  • The ±20log10N\pm20\log_{10}N of ×N/÷N, divider sampling foldover, additive floors: standard frequency-synthesis accounting (external literature, not among the five source PDFs; found in any frequency-synthesis textbook). Standard references: W. F. Egan, Frequency Synthesis by Phase Lock, 2nd ed., Wiley, New York, 2000; B. Razavi, RF Microelectronics, 2nd ed., Prentice Hall, Upper Saddle River, NJ, 2012.
  • What the site's five PDFs provide is the physics of the chain's "sources": [P1] (the VCO's L\mathcal{L} and the ISF), [P2] (the ring's κΔt\kappa\sqrt{\Delta t} accumulation), [P3]/[P4] (injection locking and the ILFD division mechanism).