Code overview#
The Qibolab framework implements a common system to deal with heterogeneous platforms and custom experimental drivers.
Including a new platform#
New platforms can be implemented by inheriting the
qibolab.abstract.AbstractPlatform
and implementing its abstract
methods. In particular the developer should:
Perform an
AbstractPlatform
inheritance.Create a yaml in
src/qibolab/runcards/
containing all the instruments and the calibration parametersLoad your platform with:
from qibolab import Platform
platform = Platform("<platform_name>", "<path_to_runcard>")
where <platform_name>
is the name of the in the yaml file and
<path_to_runcard>
is the path to the yaml file.
Here you have an example for the structure of the yaml file:
name: icarusq
nqubits: 1
description: Controls the Tektronix AWG5204, AlazarTech ATS9371, ...
settings:
delay_before_readout: 0
delay_between_pulses: 0
resonator_spectroscopy_max_ro_voltage: 5726.62338856
rabi_oscillations_pi_pulse_min_voltage: 5291.34802850
experiment_start_instrument: awg
instruments:
awg:
init_settings:
name: awg
address: TCPIP0::192.168.0.2::inst0::INSTR
type: TektronixAWG5204
settings:
offset: [-0.001, 0, -0.002, 0.016]
amplitude: [0.75, 0.75, 0.75, 0.75]
resolution: 14
sampling_rate: 2500000000
mode: 1
sequence_delay: 0.00006
pulse_buffer: 0.000001
adc_delay: 0.000000282
qb_delay: 0.000000292
ro_delay: 0.000000266
ip: 192.168.0.2
channel_phase_deg: [-6.2, 0.2, 10.6, -2.2]
channel_phase: [-0.10821, 0.00349066, 0.1850049, -0.0383972]
qb_lo:
type: QuicSyn
lo: true
init_settings:
name: qb_lo
address: ASRL6::INSTR
settings:
frequency: 3866000000
ro_lo:
type: QuicSyn
lo: true
init_settings:
name: ro_lo
address: ASRL3::INSTR
settings:
frequency: 5083250000
qb_att:
type: MCAttenuator
init_settings:
name: qb_att
address: 192.168.0.9:90
settings:
attenuation: 20
ro_att:
type: MCAttenuator
init_settings:
name: ro_att
address: 192.168.0.10:100
settings:
attenuation: 15
alazar_adc:
type: AlazarADC
adc: true
init_settings:
name: alazar_adc
address: Alazar1
settings:
samples: 4992
When including a new platform, you should include its:
name: The name of the new platform.
nqubits: Maximum number of qubits supported by the platform.
description: A brief description of the platform.
settings: Platform settings.
instruments: Dictionary with the instruments used by the platform with their setup parameters.