Skip to main content

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

Design Chapter Exercises (with Full Solutions)

Prerequisites: tank_swing, symmetry, lc_vs_ring, pll_noise_budget, serdes_clocking_connection (every problem on this page uses the ISF formulas from these pages) | Other exercise sets: 02 Foundations chapter exercises, 03 ISF core-theory chapter exercises

This page is the complete exercise set for Chapter 06, Design Insights. The focus is on design back-calculation problems (given a target spec, solve for the knob) and comparison/trade-off problems (ring vs LC, loop-BW trade-off, tail-noise countermeasures), all answered with the ISF formulas.

Format: every solution = step-by-step substitution (with units) → result → dimension check → one-line Python verification. Python imports from simulations/common/ (including pll_utils, serdes_utils, isf_utils, noise_utils).

Authoritative formulas involved (verified verbatim from the spec, with citations):

  • The signature white-noise 1/f² result: L{Δω}=10log10 ⁣(Γrms2qmax2in2/Δf4Δω2)\mathcal{L}\{\Delta\omega\}=10\log_{10}\!\left(\dfrac{\Gamma_{rms}^2}{q_{max}^2}\cdot\dfrac{\overline{i_n^2}/\Delta f}{4\,\Delta\omega^2}\right) ([P1] Eq.(21), p.185)
  • 1/f³ corner: Δω1/f3=ω1/fc022Γrms2\Delta\omega_{1/f^3}=\omega_{1/f}\cdot\dfrac{c_0^2}{2\,\Gamma_{rms}^2} ([P1] Eq.(24), p.185)
  • 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, ΓrmsN3/2\Gamma_{rms}\propto N^{-3/2}; triple-checked against the body text's 4/N^1.5@η=0.75 and App. B Eq.(55). v3 had misread this as N3/4N^{-3/4}); ring frequency f0=12NτDf_0=\dfrac{1}{2N\tau_D} ([P2] Eq.(15), p.794)
  • PLL output: Sout=SrefHlp2+SvcoHhp2S_{out}=S_{ref}\lvert H_{lp}\rvert^2+S_{vco}\lvert H_{hp}\rvert^2, see spec Section 10.2 for Hlp2,Hhp2\lvert H_{lp}\rvert^2,\lvert H_{hp}\rvert^2
  • SerDes BER (RJ): BER(t)=12[Q(UI/2tσt)+Q(UI/2+tσt)]\text{BER}(t)=\tfrac12\big[Q(\tfrac{UI/2-t}{\sigma_t})+Q(\tfrac{UI/2+t}{\sigma_t})\big], Q(x)=12erfc(x/2)Q(x)=\tfrac12\,\mathrm{erfc}(x/\sqrt2) (spec Section 10.2)
  • rms jitter: σt=12πf0Sϕdf\sigma_t=\dfrac{1}{2\pi f_0}\sqrt{\int S_\phi df} (spec formula 19)

Problems

Exercise 1 (design back-calculation) — qmaxq_{max}, Γrms\Gamma_{rms} target combinations

A 5 GHz LC oscillator currently has L(1MHz)=140\mathcal{L}(1\,\text{MHz})=-140 dBc/Hz (using Eq.(21), with Γrms=0.7\Gamma_{rms}=0.7, qmax=1q_{max}=1 pC, Si=3.2×1024 A2/HzS_i=3.2\times10^{-24}\ \text{A}^2/\text{Hz}, which self-consistently gives 140-140 when substituted into Eq.(21)). The target is to push it down another 9 dB, to 149-149 dBc/Hz. List two ways to hit the target: (a) change only qmaxq_{max}; (b) change only Γrms\Gamma_{rms}. How much change is needed in each case?

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

Exercise 2 (design back-calculation) — using symmetry to suppress the 1/f31/f^3 corner

A ring oscillator has Γrms=0.9\Gamma_{rms}=0.9, c0=0.3c_0=0.3, device f1/f=2f_{1/f}=2 MHz. (a) Use [P1] Eq.(24) (the exact form Δω1/f3=ω1/fc02/(2Γrms2)\Delta\omega_{1/f^3}=\omega_{1/f}c_0^2/(2\Gamma_{rms}^2)) to find the 1/f31/f^3 corner Δf1/f3\Delta f_{1/f^3}. (b) If rise/fall symmetrization pushes c0c_0 down to 0.050.05, what does the corner become? To achieve corner < 1 kHz, what is the maximum allowed c0c_0?

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

Exercise 3 (comparison) — Γrms\Gamma_{rms} scaling for ring vs LC

(a) Using the [P2] Eq.(16) scaling ΓrmsN3/2\Gamma_{rms}\propto N^{-3/2}, if the ring stage count is increased from N=5N=5 to N=15N=15, by what factor does Γrms\Gamma_{rms} drop? How much does phase noise (Γrms2\propto\Gamma_{rms}^2) improve, in dB? (b) In one sentence, explain why LC is usually still cleaner than ring (in terms of the two knobs Γrms\Gamma_{rms} and qmaxq_{max}).

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

Exercise 4 (design) — PLL optimal loop BW (intuition + numerical)

A ring VCO has poor intrinsic 1/f21/f^2 phase noise (Svco=Kv/f2S_{vco}=K_v/f^2, Kv=102 rad2HzK_v=10^{2}\ \text{rad}^2\text{Hz}), while the reference is very clean and white (Sref=Kr=1014 rad2/HzS_{ref}=K_r=10^{-14}\ \text{rad}^2/\text{Hz}, divide ratio N=1N=1). Using the type-II 2nd-order transfer functions from spec Section 10.2, sweep the loop natural frequency fnf_n to find the fnf_n that minimizes the integrated output jitter (Soutdf\int S_{out}df, integrated from 1 kHz to 100 MHz). Where would you intuitively expect fnf_n to land?

Exercise 5 (numerical) — σt\sigma_t\to BER bathtub

A 25 Gb/s SerDes has UI =1/25G=40=1/25\text{G}=40 ps, and the sampling clock has RJ σt=1.2\sigma_t=1.2 ps (Gaussian). Find (a) the BER when sampling at the eye center (t=0t=0); (b) the timing margin (how far the sampling point may deviate from center) to achieve BER=1012\text{BER}=10^{-12}.

Exercise 6 (design back-calculation) — back-calculating the allowed σt\sigma_t from a BER budget

Same SerDes as above (UI =40=40 ps); the spec requires BER1015\text{BER}\le10^{-15} when sampling at center. Find the maximum allowed RJ σt\sigma_t (ps). (Hint: BERQ(UI/2σt)\text{BER}\approx Q(\tfrac{UI/2}{\sigma_t}), and Q1(1015)7.94Q^{-1}(10^{-15})\approx7.94.)

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

Exercise 7 (countermeasures) — tail-noise countermeasures (cross-coupled LC VCO)

In a cross-coupled LC VCO, tail current-source noise is upconverted by 2×2\times (landing near 2ω02\omega_0), then folded back close-in via the ISF's c2c_2 component and its DC component c0c_0. Using the viewpoint that "the effective ISF's c0,c2c_0,c_2 are what make tail noise a problem," list three design measures for reducing the tail-noise contribution, and for each, explain why it works using one ISF quantity (c0c_0, c2c_2, Γeff,rms\Gamma_{eff,rms}, qmaxq_{max}). This problem is explicitly marked as illustrative.

Exercise 8 (design back-calculation) — allocating a jitter budget across PLL bands

A clock has a total rms jitter budget of σt,tot=300\sigma_{t,\text{tot}}=300 fs (f0=10f_0=10 GHz). The near-carrier (ref/in-band) contribution is known to be σt,ref=180\sigma_{t,\text{ref}}=180 fs. RJ sources are uncorrelated (variances add). What is the maximum jitter budget σt,vco\sigma_{t,\text{vco}} (fs) left for the VCO (out-of-band)? What is the corresponding phase variance σϕ,vco2\sigma_{\phi,\text{vco}}^2 (rad²)?

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

Solutions in full

Exercise 1 solution (qmaxq_{max}, Γrms\Gamma_{rms} target combinations)

Design back-calculation strategy. Inside Eq.(21), LlinΓrms2/qmax2\mathcal{L}_{\text{lin}}\propto\Gamma_{rms}^2/q_{max}^2. To drop 9 dB, the linear value must drop by 100.9=7.94×10^{0.9}=7.94\times.

(a) Change only qmaxq_{max} (Llin1/qmax2\mathcal{L}_{\text{lin}}\propto1/q_{max}^2):

qmax,newqmax,old=109/20=100.45=2.818qmax,new2.82 pC.\frac{q_{max,\text{new}}}{q_{max,\text{old}}}=10^{9/20}=10^{0.45}=2.818\quad\Longrightarrow\quad q_{max,\text{new}}\approx2.82\ \text{pC}.

(b) Change only Γrms\Gamma_{rms} (LlinΓrms2\mathcal{L}_{\text{lin}}\propto\Gamma_{rms}^2):

Γrms,newΓrms,old=109/20=100.45=0.3548Γrms,new0.7×0.3548=0.248.\frac{\Gamma_{rms,\text{new}}}{\Gamma_{rms,\text{old}}}=10^{-9/20}=10^{-0.45}=0.3548\quad\Longrightarrow\quad\Gamma_{rms,\text{new}}\approx0.7\times0.3548=0.248.

Result: (a) qmaxq_{max} scaled up 2.82×\approx2.82\times to 2.82\approx2.82 pC; (b) Γrms\Gamma_{rms} pushed down to 0.248\approx0.248 (about 1/2.82 of the original). Both give the same effect (each 9-9 dB), but the cost differs: increasing qmaxq_{max} requires larger swing/power, while pushing down Γrms\Gamma_{rms} requires improving waveform symmetry and noise-injection timing (see waveform_slope).

Consistency check: LΓrms2/qmax2\mathcal{L}\propto\Gamma_{rms}^2/q_{max}^2, 9 dB =10log10(7.94)=10\log_{10}(7.94), 7.94=2.818\sqrt{7.94}=2.818 ✓.

Dimension check: both ratios are dimensionless (same physical quantity divided by itself); qmaxq_{max} remains in C, Γrms\Gamma_{rms} remains dimensionless ✓.

import numpy as np
g = 10**(9/10) # linear factor for 9 dB
print("qmax x", round(np.sqrt(g),3), "; Gamma_rms x", round(1/np.sqrt(g),3))
# -> qmax x 2.818 ; Gamma_rms x 0.355
print("new qmax", round(1.0*np.sqrt(g),2), "pC ; new Grms", round(0.7/np.sqrt(g),3))
# -> 2.82 pC ; 0.248
Exercise 2 solution (using symmetry to suppress the 1/f31/f^3 corner)

(a) Exact formula. [P1] Eq.(24): Δω1/f3=ω1/fc022Γrms2\Delta\omega_{1/f^3}=\omega_{1/f}\dfrac{c_0^2}{2\Gamma_{rms}^2}. Converting to Δf\Delta f (the 2π2\pi cancels since ω1/f=2πf1/f\omega_{1/f}=2\pi f_{1/f}): Δf1/f3=f1/fc022Γrms2\Delta f_{1/f^3}=f_{1/f}\dfrac{c_0^2}{2\Gamma_{rms}^2}.

Δf1/f3=2×106×0.322×0.92=2×106×0.091.62=2×106×0.05556=1.111×105 Hz111 kHz.\Delta f_{1/f^3}=2\times10^6\times\frac{0.3^2}{2\times0.9^2}=2\times10^6\times\frac{0.09}{1.62}=2\times10^6\times0.05556=1.111\times10^{5}\ \text{Hz}\approx111\ \text{kHz}.

(b) Symmetrizing to c00.05c_0\to0.05.

Δf1/f3=2×106×0.0521.62=2×106×1.543×103=3086 Hz3.09 kHz.\Delta f_{1/f^3}=2\times10^6\times\frac{0.05^2}{1.62}=2\times10^6\times1.543\times10^{-3}=3086\ \text{Hz}\approx3.09\ \text{kHz}.

Upper bound on c0c_0 to reach corner < 1 kHz: require f1/fc022Γrms2<103f_{1/f}\dfrac{c_0^2}{2\Gamma_{rms}^2}<10^3:

c02<103×2×0.812×106=16202×106=8.1×104c0<0.0285.c_0^2<\frac{10^3\times2\times0.81}{2\times10^6}=\frac{1620}{2\times10^6}=8.1\times10^{-4}\quad\Longrightarrow\quad c_0<0.0285.

Result: (a) 111\approx111 kHz; (b) after pushing c0c_0 to 0.05, 3.09\approx3.09 kHz; to achieve corner < 1 kHz requires c0<0.0285c_0<0.0285.

Design takeaway: the 1/f31/f^3 corner c02\propto c_0^2, so waveform symmetry (suppressing c0c_0) is the most effective knob for suppressing close-in flicker upconversion (see symmetry). c0c_0 arises from rise/fall asymmetry and duty-cycle deviation.

Dimension check: (c0/Γrms)2(c_0/\Gamma_{rms})^2 is dimensionless, × f1/f\times\ f_{1/f} (Hz) == Hz ✓.

import numpy as np
def corner(c0, Grms=0.9, f1f=2e6): return f1f*c0**2/(2*Grms**2)
print(corner(0.3), "Hz ;", corner(0.05), "Hz") # -> 111111 ; 3086
c0_max = np.sqrt(1e3*2*0.9**2/2e6)
print("c0 <", round(c0_max,4)) # -> 0.0285
Exercise 3 solution (Γrms\Gamma_{rms} scaling for ring vs LC)

(a) Scaling. [P2] Eq.(16) (re-verified in v7: the square root covers only the constant, ΓrmsN3/2\Gamma_{rms}\propto N^{-3/2}; triple-checked against the body text's 4/N^1.5@η=0.75 and App. B Eq.(55). v3 had misread this as N3/4N^{-3/4}): N:515N:5\to15 (×3\times3):

Γrms(15)Γrms(5)=(155)3/2=31.5=0.1925.\frac{\Gamma_{rms}(15)}{\Gamma_{rms}(5)}=\left(\frac{15}{5}\right)^{-3/2}=3^{-1.5}=0.1925.

Phase noise Γrms2\propto\Gamma_{rms}^2, so the improvement is:

ΔL=10log10(0.19252)=10log10(0.03704)=14.31 dB.\Delta\mathcal{L}=10\log_{10}\big(0.1925^2\big)=10\log_{10}(0.03704)=-14.31\ \text{dB}.

(b) Why LC stays cleaner. Both knobs favor LC:

  • Γrms\Gamma_{rms}: the LC waveform is a smooth sinusoid (Γ=sin\Gamma=-\sin, Γrms=0.707\Gamma_{rms}=0.707, low sensitivity spread out evenly); the ring's ISF is concentrated at the transition (steep edge), giving higher rms and concentrating energy at the most sensitive point.
  • qmaxq_{max}: the LC tank's high QQ permits a large voltage swing → large qmax=CVmaxq_{max}=C V_{max}; each ring stage has swing limited by VDDV_{DD} and small capacitance, so qmaxq_{max} is usually much smaller. Since LΓrms2/qmax2\mathcal{L}\propto\Gamma_{rms}^2/q_{max}^2, LC wins on both ends — smaller numerator, larger denominator.

Result: (a) N:515N:5\to15 drops Γrms\Gamma_{rms} by 0.19×\approx0.19\times and improves phase noise by 14.3\approx14.3 dB; (b) LC beats ring on both knobs — Γrms\Gamma_{rms} (small and spread out) and qmaxq_{max} (high Q, large swing).

Note: increasing NN simultaneously lowers frequency (f0=1/(2NτD)f_0=1/(2N\tau_D)) and raises power; ring's real appeal is area/tunability/no inductor, not low phase noise. See lc_vs_ring.

Dimension check: NN is dimensionless, Γrms\Gamma_{rms} is dimensionless; the ratio and the dB value are both dimensionless ✓.

import numpy as np
ratio = (15/5)**(-1.5)
print("Grms ratio", round(ratio,4), "; dPN", round(10*np.log10(ratio**2),2), "dB")
# -> Grms ratio 0.1925 ; dPN -14.31 dB
Exercise 4 solution (PLL optimal loop BW)

Intuition. The PLL low-pass filters the ref and high-pass filters the VCO (spec Section 10.2).

  • If loop BW fnf_n is too small → the VCO's close-in 1/f21/f^2 noise isn't suppressed by the loop, so in-band noise is dominated by the VCO → large jitter.
  • If loop BW fnf_n is too large → a large amount of ref noise (and CP noise) is let through, and the VCO high-pass corner is pushed too high, so out-of-band VCO noise is also large → large jitter.
  • The optimal fn\*f_n^\* sits near the crossover point of the "rising ref+CP curve" and the "falling VCO curve" — where the two shaped curves intersect near fnf_n, minimizing the total integrated area.

Numerical (sweeping fnf_n). Using shape_output_phase_noise and trapezoidal integration, sweep fn=104107f_n=10^4\to10^7 Hz, and find the one minimizing Soutdf\int S_{out}df (1 kHz→100 MHz):

Result: the optimal fn\*f_n^\*\approx a few hundred kHz to ~1 MHz (near the crossover of the ref white-floor curve and the VCO 1/f21/f^2 curve). For this problem's parameters, the grid sweep gives fn\*3×105f_n^\*\approx3\times10^5 Hz order of magnitude (shifts with Sref,KvS_{ref},K_v). This is the core trade-off in PLL noise budgeting: loop BW is neither best maximized nor minimized — an optimum exists.

Dimension check: SoutS_{out} is in rad²/Hz, Soutdf\int S_{out}df is in rad² (phase variance); σt=/(2πf0)\sigma_t=\sqrt{\cdot}/(2\pi f_0) is in s ✓.

import numpy as np
from simulations.common.pll_utils import shape_output_phase_noise
f = np.logspace(3, 8, 4000)
S_ref = np.full_like(f, 1e-9) # white-floor reference (tuned so the optimal BW falls within the sweep range)
S_vco = 1e2 / f**2 # VCO 1/f^2
fn_grid = np.logspace(4, 7, 60)
var = []
for fn in fn_grid:
S_out, _, _ = shape_output_phase_noise(f, S_ref, S_vco, fn_hz=fn)
var.append(np.trapezoid(S_out, f)) # rad^2
fn_opt = fn_grid[int(np.argmin(var))]
print("optimal f_n ~", f"{fn_opt:.2e}", "Hz") # -> ~1.9e5 Hz (order 10^5; slightly below 10/√S_ref≈3e5 due to non-ideal brick-wall rolloff)

(See pll_noise_budget for the full plot.)

Exercise 5 solution (σt\sigma_t\to BER bathtub)

(a) Center-sampled BER (t=0t=0). In the spec Section 10.2 RJ bathtub, at t=0t=0 the two QQ terms are equal:

BER(0)=12[Q(UI/2σt)+Q(UI/2σt)]=Q ⁣(UI/2σt)=Q ⁣(20 ps1.2 ps)=Q(16.67).\text{BER}(0)=\tfrac12\big[Q(\tfrac{UI/2}{\sigma_t})+Q(\tfrac{UI/2}{\sigma_t})\big]=Q\!\left(\frac{UI/2}{\sigma_t}\right)=Q\!\left(\frac{20\ \text{ps}}{1.2\ \text{ps}}\right)=Q(16.67).

Q(16.67)Q(16.67) is astronomically small (1062\sim10^{-62}) — a center-sampled error is essentially impossible.

(b) Margin for BER=1012\text{BER}=10^{-12}. Solve Q ⁣(UI/2tσt)=1012Q\!\left(\dfrac{UI/2-t}{\sigma_t}\right)=10^{-12} (single-sided term dominates). Q1(1012)7.03Q^{-1}(10^{-12})\approx7.03, so

UI/2tσt=7.03t=UI27.03σt=207.03×1.2=208.44=11.56 ps.\frac{UI/2-t}{\sigma_t}=7.03\quad\Longrightarrow\quad t=\frac{UI}{2}-7.03\,\sigma_t=20-7.03\times1.2=20-8.44=11.56\ \text{ps}.

I.e. the sampling point can deviate ±11.56\pm11.56 ps from center while still meeting BER1012\text{BER}\le10^{-12}; the eye opening (@101210^{-12}) 2×11.56=23.1\approx2\times11.56=23.1 ps (58% of UI).

Result: (a) BER(0)Q(16.67)1062\text{BER}(0)\approx Q(16.67)\sim10^{-62} (center is extremely safe); (b) 101210^{-12} margin ±11.56\pm11.56 ps, eye opening 23\approx23 ps.

Dimension check: the argument of QQ, psps\dfrac{\text{ps}}{\text{ps}}, is dimensionless ✓; margin units are ps ✓.

import numpy as np
from scipy.special import erfcinv
from simulations.common.serdes_utils import Q, ber_bathtub
ui, sigma_t = 40e-12, 1.2e-12
print("BER(0) =", ber_bathtub(np.array([0.0]), sigma_t, ui)[0]) # ~1e-62
qinv = np.sqrt(2)*erfcinv(2*1e-12) # Q^-1(1e-12) ~ 7.03
margin = ui/2 - qinv*sigma_t
print("margin", round(margin*1e12,2), "ps ; eye", round(2*margin*1e12,1), "ps")
# -> margin 11.56 ps ; eye 23.1 ps
Exercise 6 solution (back-calculating the allowed σt\sigma_t from a BER budget)

Design back-calculation strategy. Center-sampled BER(0)=Q ⁣(UI/2σt)\text{BER}(0)=Q\!\left(\dfrac{UI/2}{\sigma_t}\right). Requiring 1015\le10^{-15} means UI/2σtQ1(1015)7.94\dfrac{UI/2}{\sigma_t}\ge Q^{-1}(10^{-15})\approx7.94. Solving for the upper bound on σt\sigma_t:

σt,max=UI/2Q1(1015)=20 ps7.94=2.519 ps.\sigma_{t,\max}=\frac{UI/2}{Q^{-1}(10^{-15})}=\frac{20\ \text{ps}}{7.94}=2.519\ \text{ps}.

Result: the maximum allowed RJ σt2.52\sigma_t\approx2.52 ps (i.e. UI/2UI/2 must be 7.94σt\ge7.94\sigma_t, half of the common "16σ\approx16\,\sigma full opening" rule: UI15.9σtUI\ge15.9\,\sigma_t).

Design takeaway: the tighter the BER spec (101510^{-15} vs 101210^{-12}), the larger Q1Q^{-1} (7.94 vs 7.03), so the smaller the allowed jitter. At 25 Gb/s, requiring σt<2.5\sigma_t<2.5 ps directly throws the spec back onto the clock source: use Eq.(19) to back-calculate the allowed Sϕdf\int S_\phi df, then back to Γrms/qmax\Gamma_{rms}/q_{max} (connect to serdes_clocking_connection).

Dimension check: psdimensionless=ps\dfrac{\text{ps}}{\text{dimensionless}}=\text{ps} ✓.

import numpy as np
from scipy.special import erfcinv
ui = 40e-12
qinv = np.sqrt(2)*erfcinv(2*1e-15) # Q^-1(1e-15) ~ 7.94
sigma_max = (ui/2)/qinv
print(round(sigma_max*1e12,3), "ps ; UI/sigma =", round(ui/sigma_max,1))
# -> 2.519 ps ; UI/sigma = 15.9
Exercise 7 solution (tail-noise countermeasures, illustrative)

Marked illustrative: the following cross-coupled LC VCO tail mechanism is a qualitative teaching model; the constants/specific cnc_n depend on topology, and rigorous values require transient/adjoint extraction (see real_oscillator_topologies).

Mechanism review. The tail current source's low-frequency (including flicker) noise is upconverted by 2×2\times via the differential-pair switching, landing near 2ω02\omega_0; it then folds back close-in via the effective ISF's c2c_2 (second harmonic) and its DC component c0c_0, forming a 1/f31/f^3/1/f21/f^2 skirt. So "tail-noise trouble" is primarily written into the ISF's c0c_0 and c2c_2.

Three countermeasures (each paired with one ISF quantity):

CountermeasureWhy it works (ISF quantity)
Tail filter (add a 2ω02\omega_0 notch/large capacitor at the tail)Directly blocks tail noise near 2ω02\omega_0 in the frequency domain → equivalently reduces the energy folded back by c2c_2, suppressing close-in 1/f21/f^2.
Waveform symmetrization (balance upper/lower half-cycles, reduce rise/fall asymmetry)Suppresses the effective ISF's c0c_0; the 1/f31/f^3 corner c02\propto c_0^2 (Eq.(24)), so c0c_0\downarrow directly pushes the flicker-upconversion corner away from the carrier.
Increase tank swing / raise qmaxq_{max}LΓrms2/qmax2\mathcal{L}\propto\Gamma_{rms}^2/q_{max}^2; qmaxq_{max}\uparrow suppresses the contribution of every source (including the tail) together (claim C3).

(A fourth measure as a supplement: use a device with lower noise and a lower 1/f1/f corner for the tail, or use resistive degeneration to reduce tail gmg_m noise — equivalently reducing the in2\overline{i_n^2} injected into c0,c2c_0,c_2.)

Result: tail noise is best addressed with three combined measures — "tail filter to block 2ω02\omega_0," "symmetrization to suppress c0c_0," and "increase qmaxq_{max}"; the corresponding quantitative knobs are c2c_2 (folded-back energy), c0c_0 (the 1/f31/f^3 corner c02\propto c_0^2), and qmaxq_{max} (L1/qmax2\mathcal{L}\propto1/q_{max}^2).

Python verification (quantifying the effect of "symmetrization to suppress c0c_0" on the corner):

import numpy as np
# Use Eq.(24) to quantify the benefit of symmetrizing to suppress c0 (f1f=2 MHz, Grms=0.9 toy values)
def f3_corner(c0, Grms=0.9, f1f=2e6): return f1f*c0**2/(2*Grms**2)
print("c0=0.3 ->", round(f3_corner(0.3)/1e3,1), "kHz ; c0=0.05 ->",
round(f3_corner(0.05)/1e3,2), "kHz")
# -> c0=0.3 -> 111.1 kHz ; c0=0.05 -> 3.09 kHz (symmetrization suppresses the corner by ~36x)
Exercise 8 solution (allocating a jitter budget across PLL bands)

Design back-calculation strategy. RJ sources are uncorrelated → variances (not rms values) add:

σt,tot2=σt,ref2+σt,vco2σt,vco=σt,tot2σt,ref2.\sigma_{t,\text{tot}}^2=\sigma_{t,\text{ref}}^2+\sigma_{t,\text{vco}}^2\quad\Longrightarrow\quad\sigma_{t,\text{vco}}=\sqrt{\sigma_{t,\text{tot}}^2-\sigma_{t,\text{ref}}^2}.

Step-by-step substitution (with units).

σt,vco=(300 fs)2(180 fs)2=9000032400 fs=57600 fs=240 fs.\sigma_{t,\text{vco}}=\sqrt{(300\ \text{fs})^2-(180\ \text{fs})^2}=\sqrt{90000-32400}\ \text{fs}=\sqrt{57600}\ \text{fs}=240\ \text{fs}.

Corresponding phase variance (using σϕ=2πf0σt\sigma_\phi=2\pi f_0\,\sigma_t, spec formula 19 reversed):

σϕ,vco=2πf0σt,vco=2π×1010×240×1015=1.508×102 rad,\sigma_{\phi,\text{vco}}=2\pi f_0\,\sigma_{t,\text{vco}}=2\pi\times10^{10}\times240\times10^{-15}=1.508\times10^{-2}\ \text{rad},σϕ,vco2=(1.508×102)2=2.274×104 rad2.\sigma_{\phi,\text{vco}}^2=(1.508\times10^{-2})^2=2.274\times10^{-4}\ \text{rad}^2.

Result: VCO budget σt,vco=240\sigma_{t,\text{vco}}=240 fs; corresponding σϕ,vco22.27×104\sigma_{\phi,\text{vco}}^2\approx2.27\times10^{-4} rad².

Intuition: because variances add, 180 fs + 240 fs (rms) combine to 300 fs (not 420 fs) — RJ budgets must be allocated by sum of squares. This 240 fs is exactly the integrated jitter allowed for the PLL's out-of-band VCO segment, which feeds back into loop BW and VCO spec (connects to Exercise 4's optimal BW, pll_noise_budget).

Dimension check: fs2fs2=fs\sqrt{\text{fs}^2-\text{fs}^2}=\text{fs} ✓; 2πf0σt2\pi f_0\,\sigma_t is rad/ss=rad\text{rad/s}\cdot\text{s}=\text{rad} ✓.

import numpy as np
sigma_tot, sigma_ref, f0 = 300e-15, 180e-15, 10e9
sigma_vco = np.sqrt(sigma_tot**2 - sigma_ref**2)
sigma_phi = 2*np.pi*f0*sigma_vco
print(sigma_vco*1e15, "fs ;", sigma_phi**2, "rad^2") # -> 240.0 fs ; 2.27e-4 rad^2

Key takeaways

  • qmaxq_{max}/Γrms\Gamma_{rms} back-calculation: LΓrms2/qmax2\mathcal{L}\propto\Gamma_{rms}^2/q_{max}^2; every 6 dB reduction needs qmax×2q_{max}\times2 or Γrms÷2\Gamma_{rms}\div2 (Exercise 1).
  • Symmetry: the 1/f31/f^3 corner c02\propto c_0^2; suppressing c0c_0 is the most effective lever (Exercises 2, 7).
  • Ring vs LC: ΓrmsN3/2\Gamma_{rms}\propto N^{-3/2}; LC wins on both Γrms\Gamma_{rms} (small/spread out) and qmaxq_{max} (high Q, large swing) (Exercise 3).
  • PLL optimal BW: low-pass the ref, high-pass the VCO; fn\*f_n^\* sits at the curve crossover, and a minimum integrated jitter exists (Exercise 4).
  • σt\sigma_t\toBER: bathtub QQ function; 101210^{-12} requires UI/27.03σtUI/2\ge7.03\sigma_t, 101510^{-15} requires 7.94σt\ge7.94\sigma_t (Exercises 5, 6).
  • Tail noise: tail filter (block 2ω02\omega_0) / symmetrization (suppress c0c_0) / increase qmaxq_{max}, all three together (Exercise 7).
  • Jitter budget: RJ sources' variances add, σt,vco=σtot2σref2\sigma_{t,\text{vco}}=\sqrt{\sigma_{tot}^2-\sigma_{ref}^2} (Exercise 8).
  • All Python verifications import from simulations/common/ (pll_utils, serdes_utils, isf_utils).

Further reading

Other exercise sets

The same ISF machinery applied at different levels — foundational conversions, core ISF→PN derivations, complementing this page's design back-calculations: