Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
0550c96
feat: CR gate draft (tested on emulator)
andrea-pasquale Mar 21, 2025
7cbf5cf
refactor: Rename cross-resonance protocol
andrea-pasquale Mar 24, 2025
88f2f7f
feat: Add two-qubit platforms with fixed frequency
andrea-pasquale Apr 4, 2025
d7d995d
feat: Add cross-resonance amplitude protocol
andrea-pasquale Apr 4, 2025
dcbef09
feat: Adding cosinusoid fit to CR amp and duration
andrea-pasquale Apr 7, 2025
20fc157
fix: Remove None two-qubit natives from compiler
andrea-pasquale Apr 7, 2025
26be412
refactor: Define CR pulse without CNOT native
andrea-pasquale Apr 7, 2025
69219c6
refactor: Remove sequence code duplication
andrea-pasquale Apr 8, 2025
079f5e1
refactor: Start using drive_extra
andrea-pasquale Apr 8, 2025
32f7504
Merge branch 'drive_extra' into cr_gate
andrea-pasquale Apr 8, 2025
cd50fa6
chore: Update qutrits platform
andrea-pasquale Apr 8, 2025
9aaef05
feat: Compute effective coupling Jeff
andrea-pasquale Apr 14, 2025
92fc0ac
feat: Adding echoCR and use parameters from IBM chip
andrea-pasquale Apr 18, 2025
6f16331
chore: Minor corrections
andrea-pasquale Apr 18, 2025
a9493fd
fix: Adjust delays
andrea-pasquale Apr 22, 2025
7073530
feat: Adding hamiltonian_tomography_cr (no fitting)
andrea-pasquale Apr 22, 2025
09f2306
refactor: Adding tomographies protocols
andrea-pasquale Apr 22, 2025
a89f85e
feat: Adding preliminary fit to tomographies
andrea-pasquale Apr 22, 2025
a52874f
refactor: Reduce code duplication for CR tomographies
andrea-pasquale Apr 23, 2025
ec56ce2
refactor: Reduce code duplication for CR protocols
andrea-pasquale Apr 23, 2025
131fa89
feat: Proper fit for <Z>
andrea-pasquale Apr 23, 2025
f422cc4
feat: Implementing correct fitting procedure
andrea-pasquale Apr 24, 2025
965f3f6
feat: Minor fixes and adding calculation of Hamiltonian coefficients
andrea-pasquale Apr 24, 2025
054cd0d
feat: Adding phase and compensation pulse as parameters
andrea-pasquale Apr 24, 2025
2f28205
feat: Initial calibration for CNOT
andrea-pasquale Apr 29, 2025
5e176d5
refactor: Document and simplify tomographies
andrea-pasquale Apr 29, 2025
3caefec
refactor: Document code and add tests
andrea-pasquale Apr 29, 2025
280910e
build: Update pyproject
andrea-pasquale Apr 29, 2025
25aeb60
test: Improve coverage
andrea-pasquale Apr 30, 2025
a44d97f
doc: Documentation for CR experiments
andrea-pasquale Apr 30, 2025
59a0ea6
doc: Documentation on Hamiltonian Tomography CR protocols
andrea-pasquale Apr 30, 2025
e74fd2e
Merge branch 'main' into cr_gate
andrea-pasquale Jun 3, 2025
eec92fd
fix: Skip fitting plot if fit fails
andrea-pasquale Jun 13, 2025
6eb5588
fix: Add missing image in doc
andrea-pasquale Jun 24, 2025
0a136f0
fix: Fix issue with pair order
andrea-pasquale Jun 25, 2025
122641f
fix: Remove amplitude sweep on target
andrea-pasquale Jun 26, 2025
7e1de0c
Merge branch 'main' into cr_gate
andrea-pasquale Jun 26, 2025
74f7542
remove VirtualZ in basis changes
Luca-Ben-Herrmann Jul 2, 2025
695ee29
new version for emulators parameters.json
lballerio Jan 8, 2026
6b196fe
docs: Add exploratory notebooks for cr gate
alecandido Feb 3, 2026
97c68e3
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Feb 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
471 changes: 471 additions & 0 deletions doc/exploratory/cross-resonance.ipynb

Large diffs are not rendered by default.

91 changes: 91 additions & 0 deletions doc/exploratory/hamiltonian-tomography-fit.ipynb

Large diffs are not rendered by default.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
188 changes: 188 additions & 0 deletions doc/source/protocols/cross_resonance/cross_resonance.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
Calibration of CNOT gate using Cross-Resonance
===============================================

It is possible to generate an interaction between two superconducting qubits without requiring
flux tunability, through a mechanism known as Cross Resonance (CR). This mechanism relies only
on microwave drive pulses. Moreover, not using flux lines, results in a reduction of the number
of fridge lines and allows to ignore all problems related to flux noise.

The cross resonance effect was first proposed :cite:p:`CR_First` in and later
independently discovered in :cite:p:`CR_Righetti, CR_Second`.

The CR effect can be showed by starting with the Hamiltonian of a two-qubit system with
a drive term on the first qubit :cite:p:`Manenti:2023zzn`

.. math::

H = b_1^\dagger b_1 \omega_1 + \frac{\alpha_1}{2} b_1^\dagger b_1^\dagger b_1 b_1 +
b_2^\dagger b_2 \omega_2 + \frac{\alpha_2}{2} b_2^\dagger b_2^\dagger b_2 b_2 +
g (b_1 b_2^\dagger + b_1^\dagger b_2) + \Omega(t) (b_1 + b_1^\dagger)

If we are in a dispersive regime (i.e. :math:`|\omega_1 - \omega_2| \gg g`), through a
Schrieffer-Wolff transformation we can obtain the effective Hamiltonian:

.. math::

H_\text{eff} = - \frac{\tilde{\omega_1}}{2} \sigma_1^z - \frac{\tilde{\omega_2}}{2} \sigma_2^z
+ \frac{\zeta}{4} \sigma_1^z \sigma_2^z
+ \Omega(t) \Big[ \sigma_1^x + \nu \sigma_2^x + \mu \sigma_1^z \sigma_2^x\Big]

where :math:`\zeta` is the ZZ coupling, :math:`\nu` is quantum crosstalk factor and :math:`\mu` is the
cross-resonance factor. From the equation above we can see that by driving the first qubit
at the frequency of the second qubit .

By tuning the amplitude and the duration of this drive pulse it is possible to calibrate a
:math:`RZX` rotation to rotate exactly by :math:`- \pi/2`. This is done because starting
from a :math:`ZX_{frac{\pi}{2}}` we can obtain a CNOT gate using single qubit rotations.

.. math::

\text{CNOT} = \text{R}_\text{ZX}(-\pi/2) \text{R}_\text{IX}(\pi/2) \text{R}_\text{ZI}(\pi/2)

In Qibocal we provide protocols to calibrate CR pulses.

Sweeping the duration of the CR pulse
-------------------------------------

In a first experiment we can sweep the duration of the CR pulse and measure both the
target and control qubit. The measurement is performed while preparing the control
qubit in state :math:`\ket{0}` and :math:`\ket{1}`.

Parameters
^^^^^^^^^^

.. autoclass:: qibocal.protocols.two_qubit_interaction.cross_resonance.length.CrossResonanceLengthParameters
:noindex:

Example
^^^^^^^

A possible runcard to launch the experiment could be the following:

.. code-block:: yaml

- id: CR length
operation: cross_resonance_length
parameters:
targets: [[0,1]]
pulse_duration_start: 10
pulse_duration_end: 200
pulse_duration_step: 10
flux_pulse_amplitude: 0.1
nshots: 2000
relaxation_time: 50000


The expected output is the following:

.. image:: length.png

Post-processing
^^^^^^^^^^^^^^^

The probability of the target qubit is fitted in both cases to a dumped cosine functions.
It is possible to extract the effective coupling as

.. math::

\text{J}_\text{eff}/ 2 \pi = \frac{f^{\pi}_\text{Rabi} - f_\text{Rabi}}{2}


where :math:`f^{\pi}_\text{Rabi}` and :math:`f_\text{Rabi}` are the frequencies of the
fitted Rabi oscillations on the target qubit.

Sweeping amplitude of the CR pulse
----------------------------------

Similarly it is possible to sweep the amplitude of the CR pulse and measure both the
target and control qubit.


Parameters
^^^^^^^^^^

.. autoclass:: qibocal.protocols.two_qubit_interaction.cross_resonance.length.CrossResonanceLengthParameters
:noindex:

Example
^^^^^^^

A possible runcard to launch the experiment could be the following:

.. code-block:: yaml

- id: CR amplitude
operation: cross_resonance_amplitude
parameters:
targets: [[0,1]]
max_amp: 0.05
min_amp: 0.01
step_amp: 0.005
pulse_duration: 100
nshots: 2000
relaxation_time: 50000


The expected output is the following:

.. image:: amplitude.png

Post-processing
^^^^^^^^^^^^^^^

The probability of the target qubit is fitted in both cases to a cosine function.

Hamiltonian Tomography measurement
----------------------------------

Although from the two previous experiments it is possible to perform an initial
calibration of the CR gate, by performing a state tomography on the target qubit it is
possible to reconstruct the effective Hamiltonian of the system :cite:p:`CRDrag`:

.. math::

H_\text{eff} = \frac{\nu_\text{ZX}}{2} \text{ZX} + \frac{\nu_\text{ZY}}{2} \text{ZY} +
\frac{\nu_\text{ZZ}}{2} \text{ZZ} + \frac{\nu_\text{IX}}{2} \text{IX} +
\frac{\nu_\text{IY}}{2} \text{IY} + \frac{\nu_\text{IZ}}{2} \text{IZ}

In particular, by sweeping the duration of the CR pulse and measuring the expectation
values of the target qubit :math:`\langle X \rangle`, :math:`\langle Y \rangle` and :math:`\langle Z \rangle`
when the control qubit is prepared in :math:`\ket{0}` and :math:`\ket{1}` we can compute all terms in
the effective Hamiltonian following the procedure in :cite:p:`CRDrag`.

Parameters
^^^^^^^^^^


.. autoclass:: qibocal.protocols.two_qubit_interaction.cross_resonance.hamiltonian_tomography.length.HamiltonianTomographyCRLengthParameters
:noindex:

Example
^^^^^^^

A possible runcard to launch the experiment could be the following:

.. code-block:: yaml

- id: Hamiltonian tomography CR
operation: cross_resonance_amplitude
parameters:
targets: [[0,1]]
nshots: 2000
pulse_amplitude: 0.1
pulse_duration_end: 400
pulse_duration_start: 10
pulse_duration_step: 20


The expected output is the following:

.. image:: tomography_length.png



Requirements
^^^^^^^^^^^^

To run these experiments single qubit gates for both target and control qubit needs
to be calibrated.
Binary file added doc/source/protocols/cross_resonance/length.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions doc/source/protocols/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ In this section we introduce the basics of all protocols supported by ``qibocal`
chevron
virtual_z
state_tomographies
cross_resonance/cross_resonance
coherence/index
chsh
twpa_calibration/twpa
Expand Down
63 changes: 63 additions & 0 deletions doc/source/refs.bib
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,69 @@ @misc{reed2013entanglementquantumerrorcorrection
url={https://arxiv.org/abs/1311.6759},
}

@article{CR_First,
title = {Microwave-induced coupling of superconducting qubits},
author = {Paraoanu, G. S.},
journal = {Phys. Rev. B},
volume = {74},
issue = {14},
pages = {140504},
numpages = {4},
year = {2006},
month = {Oct},
publisher = {American Physical Society},
doi = {10.1103/PhysRevB.74.140504},
url = {https://link.aps.org/doi/10.1103/PhysRevB.74.140504}
}

@article{CR_Righetti,
title = {Fully microwave-tunable universal gates in superconducting qubits with linear couplings and fixed transition frequencies},
author = {Rigetti, Chad and Devoret, Michel},
journal = {Phys. Rev. B},
volume = {81},
issue = {13},
pages = {134507},
numpages = {7},
year = {2010},
month = {Apr},
publisher = {American Physical Society},
doi = {10.1103/PhysRevB.81.134507},
url = {https://link.aps.org/doi/10.1103/PhysRevB.81.134507}
}

@article{CR_Second,
author = {Groot, P. and Lisenfeld, Jürgen and Schouten, R. and Ashhab, S. and Lupascu, Adrian and Harmans, Kees and Mooij, Hans},
year = {2010},
month = {08},
pages = {},
title = {Selective darkening of degenerate transitions demonstrated with two
superconducting quantum bits},
volume = {6},
journal = {Nature Physics},
doi = {10.1038/nphys1733}
}

@book{Manenti:2023zzn,
author = "Manenti, Riccardo and Motta, Mario",
title = "{Quantum Information Science}",
isbn = "978-0-19-878748-8",
publisher = "Oxford University Press",
month = "8",
year = "2023"
}

@article{CRDrag,
author = {Li, Boxi and Calarco, Tommaso and Motzoi, Felix},
year = {2024},
month = {07},
pages = {},
title = {Experimental error suppression in Cross-Resonance gates via multi-derivative pulse shaping},
volume = {10},
journal = {npj Quantum Information},
doi = {10.1038/s41534-024-00863-4}
}


@article{Klimov_2018,
title={Fluctuations of Energy-Relaxation Times in Superconducting Qubits},
volume={121},
Expand Down
2 changes: 1 addition & 1 deletion platforms/qubit/parameters.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
},
"hamiltonian":{
"transmon_levels": 2,
"single_qubit": {
"qubits": {
"0": {
"frequency": 5e9,
"anharmonicity": -200e6,
Expand Down
2 changes: 1 addition & 1 deletion platforms/qutrit/parameters.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
},
"hamiltonian":{
"transmon_levels": 3,
"single_qubit": {
"qubits": {
"0": {
"frequency": 5e9,
"anharmonicity": -200e6,
Expand Down
75 changes: 75 additions & 0 deletions platforms/qutrits/calibration.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
{
"single_qubits": {
"0": {
"resonator": {
"bare_frequency": 0.0,
"dressed_frequency": 0.0,
"depletion_time": 0,
"bare_frequency_amplitude": null
},
"qubit": {
"frequency_01": 5114000000.0,
"frequency_12": 4784000000.0,
"maximum_frequency": 5114000000.0,
"asymmetry": 0.0,
"sweetspot": 0.0,
"flux_coefficients": null
},
"readout": {
"fidelity": 0.0,
"coupling": null,
"effective_temperature": null,
"ground_state": [
0.0,
1.0
],
"excited_state": [
1.0,
0.0
],
"qudits_frequency": {}
},
"t1": null,
"t2": null,
"t2_spin_echo": null,
"rb_fidelity": null
},
"1": {
"resonator": {
"bare_frequency": 0.0,
"dressed_frequency": 0.0,
"depletion_time": 0,
"bare_frequency_amplitude": null
},
"qubit": {
"frequency_01": 4914000000.0,
"frequency_12": 4584000000.0,
"maximum_frequency": 4914000000.0,
"asymmetry": 0.0,
"sweetspot": 0.0,
"flux_coefficients": null
},
"readout": {
"fidelity": 0.0,
"coupling": null,
"effective_temperature": null,
"ground_state": [
0.0,
1.0
],
"excited_state": [
1.0,
0.0
],
"qudits_frequency": {}
},
"t1": null,
"t2": null,
"t2_spin_echo": null,
"rb_fidelity": null
}
},
"two_qubits": {},
"readout_mitigation_matrix": null,
"flux_crosstalk_matrix": null
}
Loading
Loading