Model superconducting quantum chips from device physics to solver-ready dynamics.
quchip is an open-source Python toolkit for explicit, reusable, and differentiable chip models. This page follows one five-device model from declaration and simulation to crosstalk correction and parameter recovery. All values and results are drawn from the paper.
Declare the physics, term by term
Each device contributes its local physics, each coupling an interaction, and each drive a path from control signals into the Hamiltonian. Together, they define the chip model.
Hover over a Hamiltonian term, diagram, or code line to follow the same contribution across all three. Scheduling adds carrier and phase to each envelope; control equipment transforms the complete I/Q signals before the drives couple them into the Hamiltonian. The same model returns dressed transitions through chip.transition_frequency(...).
From a chip declaration to a solver-ready model
quchip resolves each device in the selected solver basis, transforms the complete Hamiltonian into the reference frame, and applies one explicit approximation strategy. Native solving is the default; basis="eigen" projects every attached operator into a retained local energy basis. Terms removed by RWA() remain recorded for review.
Local bases, explicit
Native solving preserves the authored local operators. Setting basis="eigen" instead projects each device into a retained local energy basis before assembly.
Approximations leave a record
Exact() retains every authored term. RWA() removes selected structural bands from the same interaction and records each one in dropped_terms.
Observables stay in frame
Observables pass through the same frame machinery as the Hamiltonian, then return in each device’s reference frame. Populations remain frame invariant.
A transverse observable is split into its two excitation bands before the solve and recombined afterward in the device’s reference frame. Populations belong to the zero-excitation band and are frame invariant.
One model, two solver backends
The engine assembles one backend-independent simulation problem. QuTiP and dynamiqs translate it into their native solver forms, while unchanged models reuse the assembled Hamiltonian. With dynamiqs, gradients flow through signal transformation, Hamiltonian assembly, time evolution, and observable extraction.
Gradients can reach the parameters that define the model: device frequencies, coupling strengths, crosstalk, carrier frequencies, and pulse envelopes.
Identify, correct, and recover crosstalk
On the paper’s five-device model, phase sweeps identify two directed leakage phasors. Inverting the fitted response matrix then suppresses effective leakage by more than 100×. Finally, the same model is reduced and differentiated to recover the four underlying crosstalk parameters from simulated tomography.
quchip’s eliminate() removes the bus and readout resonators while retaining their effective influence on the two qubits, reducing the Hilbert-space dimension from 576 to 16. Gradients through the reduced simulation then recover two crosstalk magnitudes and two phases from simulated tomography.
Both studies begin from the same chip declaration, and the plots use data recorded for the paper. Read the paper for the full methods and derivations.
Getting started
Start with one chip declaration, then analyze, reduce, sequence, simulate, sweep, or differentiate it. See PHYSICS.md for the implemented conventions and approximations.