Flux crosstalk experiments#

In this section we show how to run flux crosstalk experiments.

As we saw in Flux tunable qubits the external flux affecting a qubit line \(i\) will receive contributions from other qubits

\[\Phi_i = \sum_{j} C_{ij} V_j + \Phi_i^{\text{offset}} \quad ,\]

which means that the transmon frequency can change when current is applied on other qubits.

Qubit crosstalk#

It is possible to measure qubit crosstalk by running a qubit_crosstalk experiment. Assuming that the target qubit is at the sweetspot, in order to measure crosstalk effects it is suggested to bias the qubit away.

Here is a possible runcard where we measure the crosstalk on qubit 2 caused by qubit 3 and 0.

Parameters#

class qibocal.protocols.flux_dependence.qubit_crosstalk.QubitCrosstalkParameters(freq_width: int, freq_step: int, bias_width: ~typing.Optional[float] = None, bias_step: ~typing.Optional[float] = None, drive_amplitude: ~typing.Optional[float] = None, transition: ~typing.Optional[str] = '01', drive_duration: int = 2000, bias_point: ~typing.Optional[dict[typing.Union[str, int], float]] = <factory>, flux_qubits: ~typing.Optional[list[typing.Union[str, int]]] = None)[source]

Crosstalk runcard inputs.

bias_point: Optional[dict[Union[str, int], float]]

bias_point_qubit_id}.

Type:

Dictionary with {qubit_id

flux_qubits: Optional[list[Union[str, int]]] = None

IDs of the qubits that we will sweep the flux on. If None flux will be swept on all qubits that we are running the routine on in a multiplex fashion. If given flux will be swept on the given qubits in a sequential fashion (n qubits will result to n different executions). Multiple qubits may be measured in each execution as specified by the qubits option in the runcard.

bias_step: Optional[float] = None

Bias step for sweep [a.u.].

bias_width: Optional[float] = None

Width for bias sweep [V].

drive_amplitude: Optional[float] = None

Drive amplitude (optional). If defined, same amplitude will be used in all qubits. Otherwise the default amplitude defined on the platform runcard will be used

drive_duration: int = 2000

Duration of the drive pulse.

hardware_average: bool = False

By default hardware average will be performed.

transition: Optional[str] = '01'

Flux spectroscopy transition type (“01” or “02”). Default value is 01

freq_width: int

Width for frequency sweep relative to the readout frequency [Hz].

freq_step: int

Frequency step for sweep [Hz].

nshots: int

Number of executions on hardware.

relaxation_time: float

Wait time for the qubit to decohere back to the gnd state.

Example#

- id: qubit crosstalk
  operation: qubit_crosstalk
  targets: [2]
  parameters:
    bias_point:
        2: 0.25
    bias_step: 0.001
    bias_width: 0.05
    drive_amplitude: 0.002
    drive_duration: 4000
    flux_qubits: [0, 3]
    freq_step: 200000
    freq_width: 10000000
    nshots: 1024
    relaxation_time: 20000
../../_images/qubit_crosstalk.png

The previous runcard aims at extracting the crosstalk coefficients \(C_{20}\) and \(C_{23}\).

Requirements#

Resonator crosstalk#

In a similar fashion it is possible to repeat the previous experiment by sweeping the readout frequency. Note that in this case it will be necessary to bias the qubit away from its sweetspot more to observe significant variations.

Parameters#

class qibocal.protocols.flux_dependence.resonator_crosstalk.ResCrosstalkParameters(freq_width: int, freq_step: int, bias_width: ~typing.Optional[float] = None, bias_step: ~typing.Optional[float] = None, bias_point: ~typing.Optional[dict[typing.Union[str, int], float]] = <factory>, flux_qubits: ~typing.Optional[list[typing.Union[str, int]]] = None)[source]

ResonatorFlux runcard inputs.

bias_point: Optional[dict[Union[str, int], float]]

bias_point_qubit_id}.

Type:

Dictionary with {qubit_id

flux_qubits: Optional[list[Union[str, int]]] = None

IDs of the qubits that we will sweep the flux on. If None flux will be swept on all qubits that we are running the routine on in a multiplex fashion. If given flux will be swept on the given qubits in a sequential fashion (n qubits will result to n different executions). Multiple qubits may be measured in each execution as specified by the qubits option in the runcard.

bias_step: Optional[float] = None

Bias step for sweep [a.u.].

bias_width: Optional[float] = None

Width for bias sweep [V].

hardware_average: bool = False

By default hardware average will be performed.

freq_width: int

Width for frequency sweep relative to the readout frequency [Hz].

freq_step: int

Frequency step for sweep [Hz].

nshots: int

Number of executions on hardware.

relaxation_time: float

Wait time for the qubit to decohere back to the gnd state.

Example#

- id: resonator crosstalk
  operation: resonator_crosstalk
  targets: [2]
  parameters:
    bias_point:
        2: 0.5
    bias_step: 0.01
    bias_width: 0.4
    flux_qubits: [0, 3]
    freq_step: 100000
    freq_width: 6000000
    nshots: 2000
../../_images/resonator_crosstalk.png

As we can see, even by biasing the qubit away from its sweetspot we are not able to see a dependence ( a deviation from the straight line) but only a shift.

The protocols aims at extracting the crosstalk coefficients \(C_{20}\) and \(C_{23}\).

Requirements#