CPW parametric amplifiers: layout and circuit models#
Required extras
Needs models and the external
VACASK simulator:
uv sync --extra models (or pip install "qpdk[models]"). Install VACASK,
put vacask on PATH or set VACASK; it compiles Verilog-A with the bundled
openvaf-r, and Linux also needs binutils. See the
extras reference.
A flux-pumped JPA uses a SQUID to modulate the resonance of a distributed resonator at twice its frequency [YIW+08]. To simulate that in a circuit solver, represent the linear part as a subcircuit and solve the pumped nonlinear part with harmonic balance [KSV86, Maa03].
This notebook checks the models with released VACASK. It compares two line models against SAX. It then uses them to measure resonance against flux, the single-mode threshold, gain against pump amplitude, and the higher-mode conversion that breaks the simple signal-idler balance. The TWPA notebook covers traveling-wave amplification. The lumped companion runs lumped Kerr and SQUID examples.
The analyses differ in what they assume. AC linearizes the circuit around its DC operating point. ACSP returns S-parameters with the pump off. HB finds the nonlinear periodic pump. HBAC finds infinitesimal signal and idler waves around that pump. The Choose a VACASK analysis in the lumped companion compares them in detail.
Finding VACASK#
Vacask.find() checks the
VACASK/QPDK_VACASK environment variables and PATH. The notebook stops
if the binary is missing.
try:
vacask = Vacask.find()
except VacaskError as error:
print(error)
raise SystemExit(
"VACASK is not installed; skipping the rest of this notebook."
) from None
print(f"Using VACASK at {vacask.binary}")
Using VACASK at <runtime>
Every netlist uses tolscale=1e-6 reltol=1e-6. The default tolerances shift
the gain by more than the differences resolved here. Port conventions:
A port is a Norton source \(I_\text{s}\) in parallel with \(R=50\,\Omega\). So \(V_\text{inc}=I_\text{s}R/2\) and \(\Gamma=2V/(I_\text{s}R)-1\) [MP12].
VACASK reports a
sinesource of amplitude \(A\) as \(-\text{j}A\), so the incident HB phasor is \(-\text{j}I_\text{s}R/2\).hbacwrites the response at \(f_\text{s}+k f_\text{p}\) asnode;k.
SQUID-terminated quarter-wave resonator#
Following Yamamoto et al. [YIW+08], a 4680 µm CPW
(\(\lambda/4\) at 6.5 GHz) is shorted through the SQUID. It is coupled to the
port by \(C_\text{c}=20\) fF, using the PDK cpw cross-section. The pump
modulates the SQUID flux at \(f_\text{p}\approx2f_0\). A signal at
\(f_\text{s}\) is amplified with an idler at \(f_\text{p}-f_\text{s}\). This is
three-wave mixing.
The symmetric SQUID is one junction with \(I_\text{c,tot}\cos(\pi\Phi/\Phi_0)\). This neglects loop inductance, valid for \(\beta_L=2L_\text{loop}I_\text{c}/\Phi_0\ll1\) [TC77]. Its flux terminal is driven in units of \(\Phi_0\).
Use the same geometry for layout and models#
Make a QPDK meander with the cpw cross-section. Read its realized centreline length after grid snapping. Use that length and cross-section for both the SAX line model and VACASK’s line impedance and delay. Here the realized length is 4680 µm, the strip width is 10 µm and the gap is 6 µm.
The two end ports connect to the ideal coupling capacitor and SQUID in the circuit. Those end devices are not drawn here. The line model uses a uniform cross-section approximation [GN84, Sim01]. It does not include coupling between meanders, bend corrections or end-pad parasitics. For those effects, export this geometry to a field solver as in the CPW field simulation notebook.
The plot below comes from the layout polygons. Changing the cross-section or length changes both the geometry and the model inputs.
2026-10-21 10:06:40.902 | INFO | __main__:<module>:14 - Layout length 4680.0 µm, Z0 49.3128 Ω, delay 38.4457 ps
findfont: Failed to find font weight bold, now using 400.
A distributed line and a rational fit#
Route A: an ideal
tline_idealwith \(Z_0\) and delay fromcpw_tline_params(). This is exact for a lossless TEM line.Route B: a rational fit of any linear SAX model by
vector_fit()(vector fitting with passivity enforcement [GS99]), emitted byvector_fit_subckt().
Both are compared with SAX after renormalizing to 50 Ω through ABCD matrices [MP12]. The loss tangent is zero, so all three describe the same lossless line.
The line comparison and the fit check answer different questions. The CPW dispersion comes from the SAX coplanar-waveguide model [GFB+08]. The rational fit tests only how well Route B reproduces that model.
<runtime> RuntimeWarning: divide by zero encountered in matmul
prod_neg = np.matmul(np.matmul(B, inv_neg), C)
<runtime> RuntimeWarning: overflow encountered in matmul
prod_neg = np.matmul(np.matmul(B, inv_neg), C)
<runtime> RuntimeWarning: invalid value encountered in matmul
prod_neg = np.matmul(np.matmul(B, inv_neg), C)
<runtime> RuntimeWarning: divide by zero encountered in matmul
prod_pos = np.matmul(np.matmul(B, inv_pos), C)
<runtime> RuntimeWarning: overflow encountered in matmul
prod_pos = np.matmul(np.matmul(B, inv_pos), C)
<runtime> RuntimeWarning: invalid value encountered in matmul
prod_pos = np.matmul(np.matmul(B, inv_pos), C)
<runtime> RuntimeWarning: divide by zero encountered in matmul
P = np.matmul(A - prod_neg, A - prod_pos)
<runtime> RuntimeWarning: overflow encountered in matmul
P = np.matmul(A - prod_neg, A - prod_pos)
<runtime> RuntimeWarning: invalid value encountered in matmul
P = np.matmul(A - prod_neg, A - prod_pos)
<runtime> UserWarning: The fitted network is passive, but the vector fit is not passive. Consider running `passivity_enforce()` to enforce passivity before using this model.
vf.vector_fit(n_poles_real=n_poles_real, n_poles_cmplx=n_poles_cmplx)
<runtime> UserWarning: Passivity enforcement: The dc point in the model is not passive. Cannot preserve the dc point during passivity enforcement.
vf.passivity_enforce(n_samples=n_samples, f_max=float(f.max()))
2026-10-21 10:06:41.699 | INFO | qpdk.simulation.vacask.network:vector_fit:169 - Vector fit: 11 poles, RMS error 2.37e-03
rational fit: 11 poles, max |ΔS| = 2.3e-03, 0.6 s
Route A is a hand-written subcircuit. Route B is generated. Both have
terminals p1 (port side) and p2 (far end of the line).
The check uses ACSP. It gives the cold multiport S-parameters at the fixed DC bias with small port excitations. No pump is solved.
ROUTE_A = f"""
subckt ccline (p1 p2)
cc (p1 1) capacitor c={C_COUPLING}
t1 (1 0 p2 0) tline_ideal z0={z0_line} td={td_line}
ends
"""
ROUTE_B = vector_fit_subckt(fit, "ccline")
print("\n".join(ROUTE_B.splitlines()[:12]), "\n...")
// Rational model of ports o1, o2, 11 poles
subckt ccline (p1 p2)
model vccs vccs
r1 (p1 0) resistor r=50
g2 (0 p1 b0 0) vccs gain=0.04
r3 (a0 0) resistor r=1
g4 (0 a0 p1 0) vccs gain=1
g5 (0 a0 b0 0) vccs gain=-1
r6 (b0 0) resistor r=1
r7 (p2 0) resistor r=50
g8 (0 p2 b1 0) vccs gain=0.04
r9 (a1 0) resistor r=1
...
s(1,1): Route A max|ΔS| = 8.0e-16, Route B max|ΔS| = 1.1e-03
s(2,1): Route A max|ΔS| = 6.1e-16, Route B max|ΔS| = 1.2e-03
s(2,2): Route A max|ΔS| = 3.8e-15, Route B max|ΔS| = 1.1e-03
Route A matches SAX to rounding error. Route B differs by about \(10^{-3}\). That is acceptable for linear S-parameters, but not for a high-Q resonator.
Resonance versus flux#
The SQUID has \(I_\text{c,tot}=4\) µA. The resonance is the peak of the
reflection group delay, \(\tau=-\text{d}\arg\Gamma/\text{d}\omega\)
[MP12]. For a lossless, overcoupled
one-port resonator \(\tau_\text{peak}=4/\kappa\), so the width
\(4/(2\pi\tau_\text{peak})\) is the linewidth only in that case
[GFB+08]. The SAX reference terminates
the coupled-line ABCD matrix with the admittance of
squid_junction() [TC77].
AC linearizes the circuit around its DC operating point. With zero pump, it gives the unpumped resonance.
Φ = 0.00 Φ0: VACASK 6.08328 GHz, SAX 6.08328 GHz
Φ = 0.10 Φ0: VACASK 6.07064 GHz, SAX 6.07064 GHz
Φ = 0.20 Φ0: VACASK 6.02580 GHz, SAX 6.02580 GHz
Φ = 0.25 Φ0: VACASK 5.98322 GHz, SAX 5.98322 GHz
Φ = 0.30 Φ0: VACASK 5.91600 GHz, SAX 5.91600 GHz
Φ = 0.35 Φ0: VACASK 5.80267 GHz, SAX 5.80267 GHz
Φ = 0.40 Φ0: VACASK 5.58455 GHz, SAX 5.58455 GHz
Operating point and the single-mode threshold#
For \(\omega_0(t)=\omega_0+\delta\omega\cos(2\omega_0t)\), single-mode theory [RD16] gives the threshold \(\delta\omega=\kappa\) and the center gain
We measure \(f_0\), \(\kappa\) and \(\text{d}f_0/\text{d}\Phi\) at \(\Phi=0.3\,\Phi_0\) from AC sweeps. These runs have no pump, so the delay gives the unpumped linewidth.
FLUX_BIAS = 0.3
operating_fluxes = [FLUX_BIAS - 1e-3, FLUX_BIAS, FLUX_BIAS + 1e-3]
ac = vacask.run(
cpw_jpa_netlist(f"""
sweep flux instance="vfl" parameter="sinedc" values={format_value(operating_fluxes)}
analysis ac1 ac from=5.85e9 to=6.0e9 mode="lin" points=150001
""")
)["ac1"]
operating = [
resonance(jnp.asarray(g["frequency"].real), reflection(g["in"], I_SIG))
for g in ac.split("flux")
]
(f_lo, _), (F0, KAPPA), (f_hi, _) = (tuple(map(float, x)) for x in operating)
DF_DPHI = (f_hi - f_lo) / 2e-3
PUMP_THRESHOLD = KAPPA / abs(DF_DPHI)
print(f"f0 = {F0 / 1e9:.6f} GHz, κ/2π = {KAPPA / 1e6:.3f} MHz, Q = {F0 / KAPPA:.0f}")
print(f"df0/dΦ = {DF_DPHI / 1e9:.4f} GHz/Φ0")
print(f"single-mode threshold Φp = {PUMP_THRESHOLD:.5f} Φ0")
f0 = 5.916001 GHz, κ/2π = 10.242 MHz, Q = 578
df0/dΦ = -1.7005 GHz/Φ0
single-mode threshold Φp = 0.00602 Φ0
Gain versus pump amplitude#
Pump at \(f_\text{p}=2f_0\) below threshold and compare with Eq. (1).
hbac first solves the pump state, then finds the infinitesimal signal and
idler around it. By default it also solves the pump HB, so no separate HB run
is needed. See the Choose a VACASK analysis.
At \(f_\text{s}=f_\text{p}/2\) the signal and idler share one frequency and the gain depends on the signal phase. The sweep skips that point, so each curve is the phase-preserving gain of a slightly detuned signal.
r = 0.3: peak gain 1.26 dB (single-mode 1.57 dB), |S_ss|² - |S_is|² = 0.932
r = 0.5: peak gain 3.42 dB (single-mode 4.44 dB), |S_ss|² - |S_is|² = 0.786
r = 0.7: peak gain 6.53 dB (single-mode 9.31 dB), |S_ss|² - |S_is|² = 0.492
r = 0.8: peak gain 8.46 dB (single-mode 13.17 dB), |S_ss|² - |S_is|² = 0.241
r = 0.9: peak gain 10.70 dB (single-mode 19.58 dB), |S_ss|² - |S_is|² = -0.136
The CPW JPA gives less gain than Eq. (1), and the two-mode balance \(|S_\text{ss}|^2-|S_\text{is}|^2\) falls below 1. Photons leave through other sidebands. A quarter-wave line has modes near \((2n+1)f_0\), spaced by \(2f_0=f_\text{p}\). Every sideband \(|f_\text{s}+k f_\text{p}|\) then lands near a mode. For \(k=+1\) and \(k=-2\) that is the \(3\lambda/4\) mode, and for \(k=+2\) and \(k=-3\) the \(5\lambda/4\) mode. The pump couples the signal to these modes by frequency conversion (\(k>0\)) and by further amplification (\(k<0\)). The SQUID’s lumped inductance shifts the higher modes slightly away from the odd harmonics, which limits this conversion without removing it. A single-mode model cannot capture this. Wustmann and Shumeiko [WS17] analyse such intermode processes.
A lossless pumped circuit conserves photons. That is the Manley-Rowe relation [MR56]:
Negative-frequency sidebands enter with a minus sign because they are
amplified, not converted [CDG+10]. The next
cell locates the \(3\lambda/4\) mode and evaluates the sum over every sideband
that hbac retains.
modes between 12 and 22 GHz: 17.787 GHz
f_s + f_p at f_s = f_0: 17.748 GHz
r = 0.5: -3: -0.0003, -2: -0.0630, -1: -1.4071, +0: +2.1934, +1: +0.2758, +2: +0.0012; sum = 0.999998
r = 0.9: -3: -0.0250, -2: -1.7248, -1: -11.8197, +0: +11.6938, +1: +2.8344, +2: +0.0412, +3: +0.0001; sum = 0.999997
r = 0.9, nharm 5 -> 9: |ΔS_ss| = 1.3e-10
Eq. (2) holds to \(3\times10^{-6}\) at both drives.
At \(r=0.9\) the signal and idler alone would give \(-0.13\). The \(3\lambda/4\)
sidebands \(k=+1\) and \(k=-2\) carry most of the difference, and the
\(5\lambda/4\) sidebands contribute \(+0.041\) (\(k=+2\)) and \(-0.025\) (\(k=-3\)). So the gain lost
relative to Eq. (1) is fully accounted for by intermode
conversion. Raising nharm from 5 to 9 changes the signal reflection by
less than \(10^{-9}\), so the harmonic basis is converged.
Warning
hbac linearizes around the pumped state whether or not it is stable. Above
threshold that state is unstable and the reported gain is not physical.
Route B with the SQUID attached#
The rational subcircuit contains only linear elements, so it works in harmonic balance. Its residual fit error appears as loss at the high-Q resonance.
fig, ax = plt.subplots()
for route in "AB":
ac = vacask.run(
cpw_jpa_netlist(
'analysis ac1 ac from=5.85e9 to=6.0e9 mode="lin" points=150001',
route=route,
)
)["ac1"]
f = jnp.asarray(ac["frequency"].real)
gamma = reflection(ac["in"], I_SIG)
f0, delay_width = resonance(f, gamma)
metric = "κ/2π" if route == "A" else "4/(2π τ_peak)"
print(
f"Route {route}: f0 = {f0 / 1e9:.5f} GHz, {metric} = {delay_width / 1e6:.2f} MHz, "
f"min |Γ| = {jnp.abs(gamma).min():.3f}"
)
ax.plot(f / 1e9, jnp.abs(gamma), label=f"Route {route}")
ax.set_xlabel("Frequency (GHz)")
ax.set_ylabel(r"$|\Gamma|$")
ax.legend()
show_plot()
Route A: f0 = 5.91600 GHz, κ/2π = 10.24 MHz, min |Γ| = 1.000
Route B: f0 = 5.91566 GHz, 4/(2π τ_peak) = 9.08 MHz, min |Γ| = 0.463
Route B gives min \(|\Gamma|=0.463\) at resonance. Its \(10^{-3}\) S-parameter error introduces appreciable loss in a \(Q\approx580\) resonator. Its \(4/(2\pi\tau_\text{peak})=9.08\) MHz is an effective group-delay quantity, not a loaded linewidth. The lossless identity used for Route A no longer applies. Use Route A, or tighten the fit near resonance, when the line sets amplifier \(Q\).
Limitations#
Classical. HB gives classical gain and conversion. It does not give added noise or squeezing (Clerk et al. [CDG+10]; Roy and Devoret [RD16]). The junction shunt conductance is noiseless.
Threshold and stability. The single-mode threshold comes from AC scans. It assumes a purely phase-modulated resonance.
hbaclinearizes around the pumped state whether or not it is stable. Above threshold the reported gain is not physical.Route B fit loss. A \(10^{-3}\) rational fit adds appreciable loss in this \(Q\approx580\) resonator. Its group delay cannot be read as a lossless linewidth. The fit covers 10 MHz to 70 GHz.
Multimode gain. Eq. (1) ignores the higher line modes, so it overestimates the gain of this resonator. Its threshold is also only an estimate. A design that needs single-mode behaviour should detune the \(3\lambda/4\) mode from \(3f_0\), for example with a larger SQUID participation or a stepped-impedance line.
Junction and SQUID models. RCSJ keeps only the first Josephson harmonic [McC68, Tin15]; real junctions show higher ones [WRW+24]. The SQUID model neglects loop inductance and asymmetry.
References#
A. A. Clerk, M. H. Devoret, S. M. Girvin, Florian Marquardt, and R. J. Schoelkopf. Introduction to quantum noise, measurement, and amplification. Reviews of Modern Physics, 82(2):1155–1208, April 2010. arXiv:0810.4729, doi:10.1103/RevModPhys.82.1155.
G. Ghione and C. Naldi. Analytical formulas for coplanar lines in hybrid and monolithic MICs. Electronics Letters, 20(4):179–181, February 1984. doi:10.1049/el:19840120.
B. Gustavsen and A. Semlyen. Rational approximation of frequency domain responses by vector fitting. IEEE Transactions on Power Delivery, 14(3):1052–1061, July 1999. doi:10.1109/61.772353.
M. Göppl, A. Fragner, M. Baur, R. Bianchetti, S. Filipp, J. M. Fink, P. J. Leek, G. Puebla, L. Steffen, and A. Wallraff. Coplanar waveguide resonators for circuit quantum electrodynamics. Journal of Applied Physics, 104(11):113904, December 2008. doi:10.1063/1.3010859.
K.S. Kundert and A. Sangiovanni-Vincentelli. Simulation of nonlinear circuits in the frequency domain. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 5(4):521–535, October 1986. doi:10.1109/TCAD.1986.1270223.
David M. Pozar. Microwave Engineering. John Wiley & Sons, Inc., 4 edition, 2012. ISBN 978-0-470-63155-3.
Stephen A. Maas. Nonlinear Microwave and RF Circuits. Artech House, Boston, MA, 2 edition, 2003. ISBN 978-1-58053-484-0.
J. M. Manley and H. E. Rowe. Some general properties of nonlinear elements-part i. general energy relations. Proceedings of the IRE, 44(7):904–913, July 1956. doi:10.1109/JRPROC.1956.275145.
D. E. McCumber. Effect of ac impedance on dc voltage-current characteristics of superconductor weak-link junctions. Journal of Applied Physics, 39(7):3113–3118, June 1968. doi:10.1063/1.1656743.
Ananda Roy and Michel Devoret. Introduction to parametric amplification of quantum signals with Josephson circuits. Comptes Rendus Physique, 17(7):740–755, August 2016. arXiv:1605.00539, doi:10.1016/j.crhy.2016.07.012.
Rainee Simons. Coplanar Waveguide Circuits, Components, and Systems. Number v. 165 in Wiley Series in Microwave and Optical Engineering. Wiley Interscience, New York, 2001. ISBN 978-0-471-46393-1. doi:10.1002/0471224758.
Claudia D. Tesche and John Clarke. Dc squid: noise and optimization. Journal of Low Temperature Physics, 29(3-4):301–331, November 1977. doi:10.1007/BF00655097.
Michael Tinkham. Introduction to Superconductivity. Dover Books on Physics. Dover Publ, Mineola, NY, 2 ed edition, 2015. ISBN 978-0-486-43503-9.
Dennis Willsch, Dennis Rieger, Patrick Winkel, Madita Willsch, Christian Dickel, Jonas Krause, Yoichi Ando, Raphaël Lescanne, Zaki Leghtas, Nicholas T. Bronn, Pratiti Deb, Olivia Lanes, Zlatko K. Minev, Benedikt Dennig, Simon Geisert, Simon Günzler, Sören Ihssen, Patrick Paluch, Thomas Reisinger, Roudy Hanna, Jin Hee Bae, Peter Schüffelgen, Detlev Grützmacher, Luiza Buimaga-Iarinca, Cristian Morari, Wolfgang Wernsdorfer, David P. DiVincenzo, Kristel Michielsen, Gianluigi Catelani, and Ioan M. Pop. Observation of josephson harmonics in tunnel junctions. Nature Physics, 20(5):815–821, May 2024. doi:10.1038/s41567-024-02400-8.
Waltraut Wustmann and Vitaly Shumeiko. Nondegenerate parametric resonance in a tunable superconducting cavity. Physical Review Applied, 8(2):024018, August 2017. arXiv:1704.05083, doi:10.1103/PhysRevApplied.8.024018.
T. Yamamoto, K. Inomata, M. Watanabe, K. Matsuba, T. Miyazaki, W. D. Oliver, Y. Nakamura, and J. S. Tsai. Flux-driven Josephson parametric amplifier. Applied Physics Letters, 93(4):042510, July 2008. arXiv:0808.1386, doi:10.1063/1.2964182.