qblox#
Python dataclasses for compilation to Qblox hardware.
Module Contents#
Classes#
Specifies a certain parameter with a fixed max and min in a certain unit. |
|
Specifies the fixed hardware properties needed in the backend. |
|
Specifies the fixed hardware properties needed in the backend for QRM/QCM modules. |
|
Specifies the fixed hardware properties needed in the backend for QTM modules. |
|
Data structure describing a pulse or acquisition and containing all the information |
|
Dataclass containing all the settings for a generic LO instrument. |
|
An individual real time filter on Qblox hardware. |
|
Distortion correction settings for all Qblox modules. |
|
Settings for synchronizing a cluster on an external trigger. |
|
Shared settings between all the Qblox modules. |
|
Shared settings between all the Qblox modules. |
|
Shared settings between all QCM/QRM modules. |
|
Settings for a baseband module. |
|
Global settings for the module to be set in the InstrumentCoordinator component. |
|
Global settings for the module to be set in the InstrumentCoordinator component. |
|
Settings for reading from a trigger address. |
|
Sequencer level settings. |
|
Sequencer level settings. |
|
Sequencer level settings. |
|
Base class for a Qblox hardware description. |
|
Information needed to specify an complex input/output in the |
|
Information needed to specify a real input/output in the |
|
Information needed to specify a digital (marker) output |
|
Provide the functionality of retrieving valid channel names by inheriting this class. |
|
Information needed to specify a QRM in the |
|
Information needed to specify a QCM in the |
|
User settings for radio frequency (RF) modules. |
|
Information needed to specify a QRM-RF in the |
|
Information needed to specify a QCM-RF in the |
|
Information needed to specify a QTM in the |
|
Information needed to specify a Cluster in the |
|
Input gain settings for a complex input connected to a port-clock combination. |
|
Mixer correction settings with defaults set to None, and extra mixer correction |
|
Configuration options for a sequencer. |
|
A hardware distortion correction specific to the Qblox backend. |
|
The settings that determine when an analog voltage is counted as a pulse. |
|
Datastructure containing the hardware options for each port-clock combination. |
Attributes#
Custom type to allow correct type inference from |
|
Specifies a Cluster module and its instrument-specific settings. |
|
Specifies a piece of Qblox hardware and its instrument-specific settings. |
|
Input gain settings for a real input connected to a port-clock combination. |
|
Output attenuation setting for a port-clock combination. |
|
Input attenuation setting for a port-clock combination. |
- exception ValidationWarning[source]#
Bases:
UserWarning
Warning type for dubious arguments passed to pydantic models.
- class BoundedParameter[source]#
Specifies a certain parameter with a fixed max and min in a certain unit.
- class StaticHardwareProperties[source]#
Specifies the fixed hardware properties needed in the backend.
- _get_connected_io_indices(mode: str, channel_idx: str) tuple[int, Ellipsis] [source]#
Return the connected input/output indices associated to this channel name.
- class StaticAnalogModuleProperties[source]#
Bases:
StaticHardwareProperties
Specifies the fixed hardware properties needed in the backend for QRM/QCM modules.
- mixer_dc_offset_range: BoundedParameter[source]#
Specifies the range over which the dc offsets can be set that are used for mixer calibration.
- class StaticTimetagModuleProperties[source]#
Bases:
StaticHardwareProperties
Specifies the fixed hardware properties needed in the backend for QTM modules.
- class OpInfo[source]#
Bases:
dataclasses_json.DataClassJsonMixin
Data structure describing a pulse or acquisition and containing all the information required to play it.
- data: dict[source]#
The pulse/acquisition info taken from the
data
property of the pulse/acquisition in the schedule.
- timing: float[source]#
The start time of this pulse/acquisition. Note that this is a combination of the start time “t_abs” of the schedule operation, and the t0 of the pulse/acquisition which specifies a time relative to “t_abs”.
- property is_real_time_io_operation: bool[source]#
Returns
True
if the operation is a non-idle pulse (i.e., it has a waveform),False
otherwise.
- property is_offset_instruction: bool[source]#
Returns
True
if the operation describes a DC offset operation, corresponding to the Q1ASM instructionset_awg_offset
.
- property is_parameter_instruction: bool[source]#
Return
True
if the instruction is a parameter, like a voltage offset.From the Qblox documentation: “parameter operation instructions” are latched and only updated when the upd_param, play, acquire, acquire_weighed or acquire_ttl instructions are executed.
Please refer to https://docs.qblox.com/en/main/cluster/q1_sequence_processor.html#q1-instructions for the full list of these instructions.
- property is_parameter_update: bool[source]#
Return
True
if the operation is a parameter update, corresponding to the Q1ASM instructionupd_param
.
- class LOSettings[source]#
Bases:
dataclasses_json.DataClassJsonMixin
Dataclass containing all the settings for a generic LO instrument.
- _ModuleSettingsT[source]#
Custom type to allow correct type inference from
extract_settings_from_mapping
for child classes.
- class QbloxRealTimeFilter[source]#
Bases:
dataclasses_json.DataClassJsonMixin
An individual real time filter on Qblox hardware.
- coeffs: float | list[float] | None = None[source]#
Coefficient(s) of the filter. Can be None if there is no filter or if it is inactive.
- config: quantify_scheduler.backends.qblox.enums.QbloxFilterConfig[source]#
Configuration of the filter. One of ‘BYPASSED’, ‘ENABLED’, or ‘DELAY_COMP’.
- marker_delay: quantify_scheduler.backends.qblox.enums.QbloxFilterMarkerDelay[source]#
State of the marker delay. One of ‘BYPASSED’ or ‘ENABLED’.
- class DistortionSettings[source]#
Bases:
dataclasses_json.DataClassJsonMixin
Distortion correction settings for all Qblox modules.
- bt: QbloxRealTimeFilter[source]#
The bias tee correction filter.
- exp0: QbloxRealTimeFilter[source]#
The exponential overshoot correction 1 filter.
- exp1: QbloxRealTimeFilter[source]#
The exponential overshoot correction 2 filter.
- exp2: QbloxRealTimeFilter[source]#
The exponential overshoot correction 3 filter.
- exp3: QbloxRealTimeFilter[source]#
The exponential overshoot correction 4 filter.
- fir: QbloxRealTimeFilter[source]#
The FIR filter.
- class ExternalTriggerSyncSettings[source]#
Bases:
dataclasses_json.DataClassJsonMixin
Settings for synchronizing a cluster on an external trigger.
- channel: int[source]#
Channel that receives the incoming trigger.
Note that this is the channel number on the front panel. When using a CMM, this should be 1.
- input_threshold: float | None = None[source]#
If a QTM module is used, this setting specifies the input threshold.
If a CMM is used instead, this setting is ignored and the trigger signal must be TTL (>2.4 V).
- trigger_timestamp: float = 0[source]#
What time the cluster should be set to upon receiving the trigger.
- class ClusterSettings[source]#
Bases:
dataclasses_json.DataClassJsonMixin
Shared settings between all the Qblox modules.
- sync_on_external_trigger: ExternalTriggerSyncSettings | None = None[source]#
- classmethod extract_settings_from_mapping(mapping: quantify_scheduler.backends.qblox_backend._ClusterCompilationConfig) ClusterSettings [source]#
Factory method that takes all the settings defined in the mapping and generates an instance of this class.
- Parameters:
mapping – The mapping dict to extract the settings from
**kwargs – Additional keyword arguments passed to the constructor. Can be used to override parts of the mapping dict.
- class BaseModuleSettings[source]#
Bases:
dataclasses_json.DataClassJsonMixin
Shared settings between all the Qblox modules.
- distortion_corrections: list[DistortionSettings][source]#
distortion correction settings
- classmethod extract_settings_from_mapping(mapping: quantify_scheduler.backends.qblox_backend._ClusterModuleCompilationConfig, **kwargs) _ModuleSettingsT [source]#
Factory method that takes all the settings defined in the mapping and generates an instance of this class.
- Parameters:
mapping – The mapping dict to extract the settings from
**kwargs – Additional keyword arguments passed to the constructor. Can be used to override parts of the mapping dict.
- class AnalogModuleSettings[source]#
Bases:
BaseModuleSettings
Shared settings between all QCM/QRM modules.
- out0_lo_freq_cal_type_default: quantify_scheduler.backends.qblox.enums.LoCalEnum[source]#
Setting that controls whether the mixer of channel 0 is calibrated upon changing the LO and/or intermodulation frequency.
- out1_lo_freq_cal_type_default: quantify_scheduler.backends.qblox.enums.LoCalEnum[source]#
Setting that controls whether the mixer of channel 1 is calibrated upon changing the LO and/or intermodulation frequency.
- class BasebandModuleSettings[source]#
Bases:
AnalogModuleSettings
Settings for a baseband module.
Class exists to ensure that the cluster baseband modules don’t need special treatment in the rest of the code.
- class RFModuleSettings[source]#
Bases:
AnalogModuleSettings
Global settings for the module to be set in the InstrumentCoordinator component. This is kept separate from the settings that can be set on a per sequencer basis, which are specified in
AnalogSequencerSettings
.- lo0_freq: float | None = None[source]#
The frequency of Output 0 (O0) LO. If left None, the parameter will not be set.
- lo1_freq: float | None = None[source]#
The frequency of Output 1 (O1) LO. If left None, the parameter will not be set.
- classmethod extract_settings_from_mapping(mapping: quantify_scheduler.backends.qblox_backend._ClusterModuleCompilationConfig, **kwargs: dict | None) RFModuleSettings [source]#
Factory method that takes all the settings defined in the mapping and generates an
RFModuleSettings
object from it.- Parameters:
mapping – The compiler config to extract the settings from
**kwargs – Additional keyword arguments passed to the constructor. Can be used to override parts of the mapping dict.
- class TimetagModuleSettings[source]#
Bases:
BaseModuleSettings
Global settings for the module to be set in the InstrumentCoordinator component. This is kept separate from the settings that can be set on a per sequencer basis, which are specified in
TimetagSequencerSettings
.
- class ThresholdedAcqTriggerReadSettings[source]#
Bases:
dataclasses_json.DataClassJsonMixin
Settings for reading from a trigger address.
- class SequencerSettings[source]#
Bases:
dataclasses_json.DataClassJsonMixin
Sequencer level settings.
In the Qblox driver these settings are typically recognized by parameter names of the form
"{module}.sequencer{index}.{setting}"
(for allowed values see Cluster QCoDeS parameters). These settings are set once and will remain unchanged after, meaning that these correspond to the “slow” QCoDeS parameters and not settings that are changed dynamically by the sequencer.These settings are mostly defined in the hardware configuration under each port-clock key combination or in some cases through the device configuration (e.g. parameters related to thresholded acquisition).
- channel_name: str[source]#
Specifies the channel identifier of the hardware config (e.g. complex_output_0).
- channel_name_measure: list[str] | None[source]#
Extra channel name necessary to define a Measure operation.
- connected_output_indices: tuple[int, Ellipsis][source]#
Specifies the indices of the outputs this sequencer produces waveforms for.
- connected_input_indices: tuple[int, Ellipsis][source]#
Specifies the indices of the inputs this sequencer collects data for.
- sequence: dict[str, Any] | None = None[source]#
JSON compatible dictionary holding the waveforms and program for the sequencer.
- seq_fn: str | None = None[source]#
Filename of JSON file containing a dump of the waveforms and program.
- thresholded_acq_trigger_write_en: bool | None = None[source]#
Enables mapping of thresholded acquisition results to the trigger network.
- thresholded_acq_trigger_write_address: int | None = None[source]#
The trigger address that thresholded acquisition results are written to.
- thresholded_acq_trigger_write_invert: bool = False[source]#
If True, inverts the trigger before writing to the trigger network.
- thresholded_acq_trigger_read_settings: dict[int, ThresholdedAcqTriggerReadSettings][source]#
Settings for reading from a trigger address.
- classmethod initialize_from_compilation_config(sequencer_cfg: quantify_scheduler.backends.qblox_backend._SequencerCompilationConfig, connected_output_indices: tuple[int, Ellipsis], connected_input_indices: tuple[int, Ellipsis]) SequencerSettings [source]#
Instantiates an instance of this class, with initial parameters determined from the sequencer compilation config.
- Parameters:
sequencer_cfg – The sequencer compilation_config.
connected_output_indices – Specifies the indices of the outputs this sequencer produces waveforms for.
connected_input_indices – Specifies the indices of the inputs this sequencer collects data for.
- Returns:
: SequencerSettings A SequencerSettings instance with initial values.
- class AnalogSequencerSettings[source]#
Bases:
SequencerSettings
Sequencer level settings.
In the Qblox driver these settings are typically recognized by parameter names of the form
"{module}.sequencer{index}.{setting}"
(for allowed values see Cluster QCoDeS parameters). These settings are set once and will remain unchanged after, meaning that these correspond to the “slow” QCoDeS parameters and not settings that are changed dynamically by the sequencer.These settings are mostly defined in the hardware configuration under each port-clock key combination or in some cases through the device configuration (e.g. parameters related to thresholded acquisition).
- init_offset_awg_path_I: float = 0.0[source]#
Specifies what value the sequencer offset for AWG path_I will be reset to before the start of the experiment.
- init_offset_awg_path_Q: float = 0.0[source]#
Specifies what value the sequencer offset for AWG path_Q will be reset to before the start of the experiment.
- init_gain_awg_path_I: float = 1.0[source]#
Specifies what value the sequencer gain for AWG path_I will be reset to before the start of the experiment.
- init_gain_awg_path_Q: float = 1.0[source]#
Specifies what value the sequencer gain for AWG path_Q will be reset to before the start of the experiment.
- mixer_corr_phase_offset_degree: float | None = None[source]#
The phase shift to apply between the I and Q channels, to correct for quadrature errors.
- mixer_corr_gain_ratio: float | None = None[source]#
The gain ratio to apply in order to correct for imbalances between the I and Q paths of the mixer.
- auto_sideband_cal: quantify_scheduler.backends.qblox.enums.SidebandCalEnum[source]#
Setting that controls whether the mixer is calibrated upon changing the intermodulation frequency.
- integration_length_acq: int | None = None[source]#
Integration length for acquisitions. Must be a multiple of 4 ns.
- thresholded_acq_threshold: float | None = None[source]#
The sequencer discretization threshold for discretizing the phase rotation result.
- thresholded_acq_rotation: float | None = None[source]#
The sequencer integration result phase rotation in degrees.
- ttl_acq_input_select: int | None = None[source]#
Selects the input used to compare against the threshold value in the TTL trigger acquisition path.
- ttl_acq_threshold: float | None = None[source]#
For QRM modules only, sets the threshold value with which to compare the input ADC values of the selected input path.
- ttl_acq_auto_bin_incr_en: bool | None = None[source]#
Selects if the bin index is automatically incremented when acquiring multiple triggers.
- classmethod initialize_from_compilation_config(sequencer_cfg: quantify_scheduler.backends.qblox_backend._SequencerCompilationConfig, connected_output_indices: tuple[int, Ellipsis], connected_input_indices: tuple[int, Ellipsis]) AnalogSequencerSettings [source]#
Instantiates an instance of this class, with initial parameters determined from the sequencer compilation config.
- Parameters:
sequencer_cfg – The sequencer compilation_config.
connected_output_indices – Specifies the indices of the outputs this sequencer produces waveforms for.
connected_input_indices – Specifies the indices of the inputs this sequencer collects data for.
- Returns:
: AnalogSequencerSettings A AnalogSequencerSettings instance with initial values.
- class TimetagSequencerSettings[source]#
Bases:
SequencerSettings
Sequencer level settings.
In the Qblox driver these settings are typically recognized by parameter names of the form
"{module}.sequencer{index}.{setting}"
(for allowed values see Cluster QCoDeS parameters). These settings are set once and will remain unchanged after, meaning that these correspond to the “slow” QCoDeS parameters and not settings that are changed dynamically by the sequencer.These settings are mostly defined in the hardware configuration under each port-clock key combination or in some cases through the device configuration (e.g. parameters related to thresholded acquisition).
- in_threshold_primary: float | None = None[source]#
The settings that determine when an analog voltage is counted as a pulse.
- time_source: quantify_scheduler.enums.TimeSource | None = None[source]#
Selects the timetag data source for timetag acquisitions.
- time_ref: quantify_scheduler.enums.TimeRef | None = None[source]#
Selects the time reference that the timetag is recorded in relation to.
- time_ref_channel: int | None = None[source]#
If using TimeRef.PORT, this setting specifies the channel index (on the same module) belonging to that port.
- scope_trace_type: quantify_scheduler.backends.qblox.enums.TimetagTraceType | None = None[source]#
Set to True if the program on this sequencer contains a scope/trace acquisition.
- trace_acq_duration: int | None = None[source]#
Duration of the trace acquisition (if any) done with this sequencer.
- thresholded_acq_trigger_write_threshold_low: int | None = None[source]#
Optional threshold value used for the upd_thres Q1ASM instruction if ThresholdedTriggerCount is scheduled.
- thresholded_acq_trigger_write_threshold_high: int | None = None[source]#
Optional threshold value used for the upd_thres Q1ASM instruction if ThresholdedTriggerCount is scheduled.
- _validate_io_indices_no_channel_map() None [source]#
There is no channel map in the QTM yet, so there can be only one connected index: either input or output.
- classmethod initialize_from_compilation_config(sequencer_cfg: quantify_scheduler.backends.qblox_backend._SequencerCompilationConfig, connected_output_indices: tuple[int, Ellipsis], connected_input_indices: tuple[int, Ellipsis]) TimetagSequencerSettings [source]#
Instantiates an instance of this class, with initial parameters determined from the sequencer compilation config.
- Parameters:
sequencer_cfg – The sequencer compilation config.
connected_output_indices – Specifies the indices of the outputs this sequencer produces waveforms for.
connected_input_indices – Specifies the indices of the inputs this sequencer collects data for.
- Returns:
: SequencerSettings A SequencerSettings instance with initial values.
- class QbloxBaseDescription(/, **data: Any)[source]#
Bases:
quantify_scheduler.backends.types.common.HardwareDescription
Base class for a Qblox hardware description.
- class ComplexChannelDescription(/, **data: Any)[source]#
Bases:
quantify_scheduler.structure.model.DataStructure
Information needed to specify an complex input/output in the
QbloxHardwareCompilationConfig
.- marker_debug_mode_enable: bool = False[source]#
Setting to send 4 ns trigger pulse on the marker located next to the I/O port along with each operation. The marker will be pulled high at the same time as the module starts playing or acquiring.
- mix_lo: bool = True[source]#
Whether IQ mixing with a local oscillator is enabled for this channel. Effectively always
True
for RF modules.
- class RealChannelDescription(/, **data: Any)[source]#
Bases:
quantify_scheduler.structure.model.DataStructure
Information needed to specify a real input/output in the
QbloxHardwareCompilationConfig
.- marker_debug_mode_enable: bool = False[source]#
Setting to send 4 ns trigger pulse on the marker located next to the I/O port along with each operation. The marker will be pulled high at the same time as the module starts playing or acquiring.
- class DigitalChannelDescription(/, **data: Any)[source]#
Bases:
quantify_scheduler.structure.model.DataStructure
Information needed to specify a digital (marker) output (for
MarkerPulse
) in theQbloxHardwareCompilationConfig
.
- class DescriptionAnnotationsGettersMixin[source]#
Provide the functionality of retrieving valid channel names by inheriting this class.
- classmethod get_valid_channels() list[str] [source]#
Return all the valid channel names for this hardware description.
- classmethod get_instrument_type() str [source]#
Return the instrument type indicated in this hardware description.
- classmethod validate_channel_names(channel_names: collections.abc.Iterable[str]) None [source]#
Validate channel names specified in the Connectivity.
- class QRMDescription(/, **data: Any)[source]#
Bases:
quantify_scheduler.structure.model.DataStructure
,DescriptionAnnotationsGettersMixin
Information needed to specify a QRM in the
QbloxHardwareCompilationConfig
.- complex_output_0: ComplexChannelDescription | None = None[source]#
Description of the complex output channel on this QRM, corresponding to ports O1 and O2.
- complex_input_0: ComplexChannelDescription | None = None[source]#
Description of the complex input channel on this QRM, corresponding to ports I1 and I2.
- real_output_0: RealChannelDescription | None = None[source]#
Description of the real output channel on this QRM, corresponding to port O1.
- real_output_1: RealChannelDescription | None = None[source]#
Description of the real output channel on this QRM, corresponding to port O2.
- real_input_0: RealChannelDescription | None = None[source]#
Description of the real input channel on this QRM, corresponding to port I1.
- real_input_1: RealChannelDescription | None = None[source]#
Description of the real output channel on this QRM, corresponding to port I2.
- digital_output_0: DigitalChannelDescription | None = None[source]#
Description of the digital (marker) output channel on this QRM, corresponding to port M1.
- digital_output_1: DigitalChannelDescription | None = None[source]#
Description of the digital (marker) output channel on this QRM, corresponding to port M2.
- digital_output_2: DigitalChannelDescription | None = None[source]#
Description of the digital (marker) output channel on this QRM, corresponding to port M3.
- digital_output_3: DigitalChannelDescription | None = None[source]#
Description of the digital (marker) output channel on this QRM, corresponding to port M4.
- class QCMDescription(/, **data: Any)[source]#
Bases:
quantify_scheduler.structure.model.DataStructure
,DescriptionAnnotationsGettersMixin
Information needed to specify a QCM in the
QbloxHardwareCompilationConfig
.- complex_output_0: ComplexChannelDescription | None = None[source]#
Description of the complex output channel on this QRM, corresponding to ports O1 and O2.
- complex_output_1: ComplexChannelDescription | None = None[source]#
Description of the complex output channel on this QRM, corresponding to ports O3 and O4.
- real_output_0: RealChannelDescription | None = None[source]#
Description of the real output channel on this QRM, corresponding to port O1.
- real_output_1: RealChannelDescription | None = None[source]#
Description of the real output channel on this QRM, corresponding to port O2.
- real_output_2: RealChannelDescription | None = None[source]#
Description of the real output channel on this QRM, corresponding to port O3.
- real_output_3: RealChannelDescription | None = None[source]#
Description of the real output channel on this QRM, corresponding to port O4.
- digital_output_0: DigitalChannelDescription | None = None[source]#
Description of the digital (marker) output channel on this QRM, corresponding to port M1.
- digital_output_1: DigitalChannelDescription | None = None[source]#
Description of the digital (marker) output channel on this QRM, corresponding to port M2.
- digital_output_2: DigitalChannelDescription | None = None[source]#
Description of the digital (marker) output channel on this QRM, corresponding to port M3.
- digital_output_3: DigitalChannelDescription | None = None[source]#
Description of the digital (marker) output channel on this QRM, corresponding to port M4.
- class RFDescription(/, **data: Any)[source]#
Bases:
quantify_scheduler.structure.model.DataStructure
,DescriptionAnnotationsGettersMixin
User settings for radio frequency (RF) modules.
- rf_output_on: bool = True[source]#
Whether the RF outputs of this module are always on by default.
If set to False they can be turned on by using the
RFSwitchToggle
operation.
- class QRMRFDescription(/, **data: Any)[source]#
Bases:
RFDescription
Information needed to specify a QRM-RF in the
QbloxHardwareCompilationConfig
.- complex_output_0: ComplexChannelDescription | None = None[source]#
Description of the complex output channel on this QRM, corresponding to port O1.
- complex_input_0: ComplexChannelDescription | None = None[source]#
Description of the complex input channel on this QRM, corresponding to port I1.
- digital_output_0: DigitalChannelDescription | None = None[source]#
Description of the digital (marker) output channel on this QRM, corresponding to port M1.
- digital_output_1: DigitalChannelDescription | None = None[source]#
Description of the digital (marker) output channel on this QRM, corresponding to port M2.
- class QCMRFDescription(/, **data: Any)[source]#
Bases:
RFDescription
Information needed to specify a QCM-RF in the
QbloxHardwareCompilationConfig
.- complex_output_0: ComplexChannelDescription | None = None[source]#
Description of the complex output channel on this QRM, corresponding to port O1.
- complex_output_1: ComplexChannelDescription | None = None[source]#
Description of the complex output channel on this QRM, corresponding to port O2.
- digital_output_0: DigitalChannelDescription | None = None[source]#
Description of the digital (marker) output channel on this QRM, corresponding to port M1.
- digital_output_1: DigitalChannelDescription | None = None[source]#
Description of the digital (marker) output channel on this QRM, corresponding to port M2.
- class QTMDescription(/, **data: Any)[source]#
Bases:
quantify_scheduler.structure.model.DataStructure
,DescriptionAnnotationsGettersMixin
Information needed to specify a QTM in the
QbloxHardwareCompilationConfig
.- digital_input_0: DigitalChannelDescription | None = None[source]#
Description of the digital channel corresponding to port 1, specified as input.
- digital_input_1: DigitalChannelDescription | None = None[source]#
Description of the digital channel corresponding to port 2, specified as input.
- digital_input_2: DigitalChannelDescription | None = None[source]#
Description of the digital channel corresponding to port 3, specified as input.
- digital_input_3: DigitalChannelDescription | None = None[source]#
Description of the digital channel corresponding to port 4, specified as input.
- digital_input_4: DigitalChannelDescription | None = None[source]#
Description of the digital channel corresponding to port 5, specified as input.
- digital_input_5: DigitalChannelDescription | None = None[source]#
Description of the digital channel corresponding to port 6, specified as input.
- digital_input_6: DigitalChannelDescription | None = None[source]#
Description of the digital channel corresponding to port 7, specified as input.
- digital_input_7: DigitalChannelDescription | None = None[source]#
Description of the digital channel corresponding to port 8, specified as input.
- digital_output_0: DigitalChannelDescription | None = None[source]#
Description of the digital channel corresponding to port 1, specified as output.
- digital_output_1: DigitalChannelDescription | None = None[source]#
Description of the digital channel corresponding to port 2, specified as output.
- digital_output_2: DigitalChannelDescription | None = None[source]#
Description of the digital channel corresponding to port 3, specified as output.
- digital_output_3: DigitalChannelDescription | None = None[source]#
Description of the digital channel corresponding to port 4, specified as output.
- digital_output_4: DigitalChannelDescription | None = None[source]#
Description of the digital channel corresponding to port 5, specified as output.
- digital_output_5: DigitalChannelDescription | None = None[source]#
Description of the digital channel corresponding to port 6, specified as output.
- digital_output_6: DigitalChannelDescription | None = None[source]#
Description of the digital channel corresponding to port 7, specified as output.
- digital_output_7: DigitalChannelDescription | None = None[source]#
Description of the digital channel corresponding to port 8, specified as output.
- classmethod validate_channel_names(channel_names: collections.abc.Iterable[str]) None [source]#
Validate channel names specified in the Connectivity.
- ClusterModuleDescription[source]#
Specifies a Cluster module and its instrument-specific settings.
The supported instrument types are:
QRMDescription
,QCMDescription
,QRMRFDescription
,QCMRFDescription
,QTMDescription
,
- class ClusterDescription(/, **data: Any)[source]#
Bases:
QbloxBaseDescription
Information needed to specify a Cluster in the
CompilationConfig
.- instrument_type: Literal['Cluster'][source]#
The instrument type, used to select this datastructure when parsing a
CompilationConfig
.
- modules: dict[int, ClusterModuleDescription][source]#
Description of the modules of this Cluster, using slot index as key.
- ip: str | None = None[source]#
Unique identifier (typically the ip address) used to connect to the cluster
- sync_on_external_trigger: ExternalTriggerSyncSettings | None = None[source]#
Settings for synchronizing the cluster on an external trigger.
- QbloxHardwareDescription[source]#
Specifies a piece of Qblox hardware and its instrument-specific settings.
- RealInputGain[source]#
Input gain settings for a real input connected to a port-clock combination.
This gain value will be set on the QRM input ports that are connected to this port-clock combination.
Example
hardware_compilation_config.hardware_options.input_gain = { "q0:res-q0.ro": RealInputGain(2), }
- class ComplexInputGain(/, **data: Any)[source]#
Bases:
quantify_scheduler.structure.model.DataStructure
Input gain settings for a complex input connected to a port-clock combination.
This gain value will be set on the QRM input ports that are connected to this port-clock combination.
Example
hardware_compilation_config.hardware_options.input_gain = { "q0:res-q0.ro": ComplexInputGain( gain_I=2, gain_Q=3 ), }
- OutputAttenuation[source]#
Output attenuation setting for a port-clock combination.
This attenuation value will be set on each control-hardware output port that is connected to this port-clock combination.
Example
hardware_compilation_config.hardware_options.output_att = { "q0:res-q0.ro": OutputAttenuation(10), }
- InputAttenuation[source]#
Input attenuation setting for a port-clock combination.
This attenuation value will be set on each control-hardware output port that is connected to this port-clock combination.
Example
hardware_compilation_config.hardware_options.input_att = { "q0:res-q0.ro": InputAttenuation(10), }
- class QbloxMixerCorrections(/, **data: Any)[source]#
Bases:
quantify_scheduler.backends.types.common.MixerCorrections
Mixer correction settings with defaults set to None, and extra mixer correction settings for _automated_ mixer correction.
These settings will be set on each control-hardware output port that is connected to this port-clock combination.
Example
hardware_compilation_config.hardware_options.mixer_corrections = { "q0:res-q0.ro": { auto_lo_cal="on_lo_interm_freq_change", auto_sideband_cal="on_interm_freq_change" }, }
- dc_offset_i: float | None = None[source]#
The DC offset on the I channel used for this port-clock combination.
- dc_offset_q: float | None = None[source]#
The DC offset on the Q channel used for this port-clock combination.
- auto_lo_cal: quantify_scheduler.backends.qblox.enums.LoCalEnum[source]#
Setting that controls whether the mixer is calibrated upon changing the LO and/or intermodulation frequency.
- auto_sideband_cal: quantify_scheduler.backends.qblox.enums.SidebandCalEnum[source]#
Setting that controls whether the mixer is calibrated upon changing the intermodulation frequency.
- class SequencerOptions(/, **data: Any)[source]#
Bases:
quantify_scheduler.structure.model.DataStructure
Configuration options for a sequencer.
For allowed values, also see Cluster QCoDeS parameters.
Example
hardware_compilation_config.hardware_options.sequencer_options = { "q0:res-q0.ro": { "init_offset_awg_path_I": 0.1, "init_offset_awg_path_Q": -0.1, "init_gain_awg_path_I": 0.9, "init_gain_awg_path_Q": 1.0, "ttl_acq_threshold": 0.5 "qasm_hook_func": foo } }
- init_offset_awg_path_I: float = None[source]#
Specifies what value the sequencer offset for AWG path_I will be reset to before the start of the experiment.
- init_offset_awg_path_Q: float = None[source]#
Specifies what value the sequencer offset for AWG path_Q will be reset to before the start of the experiment.
- init_gain_awg_path_I: float = None[source]#
Specifies what value the sequencer gain for AWG path_I will be reset to before the start of the experiment.
- init_gain_awg_path_Q: float = None[source]#
Specifies what value the sequencer gain for AWG path_Q will be reset to before the start of the experiment.
- ttl_acq_threshold: float | None = None[source]#
For QRM modules only, the threshold value with which to compare the input ADC values of the selected input path.
- qasm_hook_func: collections.abc.Callable | None = None[source]#
Function to inject custom qasm instructions after the compiler inserts the footer and the stop instruction in the generated qasm program.
- class QbloxHardwareDistortionCorrection(/, **data: Any)[source]#
Bases:
quantify_scheduler.backends.types.common.HardwareDistortionCorrection
A hardware distortion correction specific to the Qblox backend.
- exp0_coeffs: list[float] | None = None[source]#
Coefficients of the exponential overshoot/undershoot correction 1.
- exp1_coeffs: list[float] | None = None[source]#
Coefficients of the exponential overshoot/undershoot correction 2.
- exp2_coeffs: list[float] | None = None[source]#
Coefficients of the exponential overshoot/undershoot correction 3.
- class DigitizationThresholds(/, **data: Any)[source]#
Bases:
quantify_scheduler.structure.model.DataStructure
The settings that determine when an analog voltage is counted as a pulse.
- class QbloxHardwareOptions(/, **data: Any)[source]#
Bases:
quantify_scheduler.backends.types.common.HardwareOptions
Datastructure containing the hardware options for each port-clock combination.
Example
Here, the HardwareOptions datastructure is created by parsing a dictionary containing the relevant information.
import pprint from quantify_scheduler.schemas.examples.utils import ( load_json_example_scheme )
from quantify_scheduler.backends.types.qblox import ( QbloxHardwareOptions ) qblox_hw_options_dict = load_json_example_scheme( "qblox_hardware_config_transmon.json")["hardware_options"] pprint.pprint(qblox_hw_options_dict)
{'distortion_corrections': {'q0:fl-cl0.baseband': {'clipping_values': [-2.5, 2.5], 'filter_func': 'scipy.signal.lfilter', 'input_var_name': 'x', 'kwargs': {'a': [1], 'b': [0, 0.25, 0.5]}}}, 'input_att': {'q0:res-q0.ro': 4, 'q5:res-q5.ro': 10}, 'input_gain': {'q4:res-q4.ro': {'gain_I': 2, 'gain_Q': 3}}, 'latency_corrections': {'q4:mw-q4.01': 8e-09, 'q5:mw-q5.01': 4e-09}, 'mixer_corrections': {'q4:mw-q4.01': {'amp_ratio': 0.9999, 'phase_error': -4.2}, 'q4:res-q4.ro': {'amp_ratio': 0.9997, 'dc_offset_i': -0.054, 'dc_offset_q': -0.034, 'phase_error': -4.0}}, 'modulation_frequencies': {'q0:mw-q0.01': {'interm_freq': 50000000.0, 'lo_freq': None}, 'q0:res-q0.ro': {'interm_freq': None, 'lo_freq': 7800000000.0}, 'q4:mw-q4.01': {'interm_freq': 200000000.0, 'lo_freq': None}, 'q4:res-q4.ro': {'interm_freq': None, 'lo_freq': 7200000000.0}, 'q5:mw-q5.01': {'interm_freq': 50000000.0, 'lo_freq': None}, 'q5:res-q5.ro': {'interm_freq': 50000000.0}, 'q6:mw-q6.01': {'lo_freq': 5000000000.0}, 'q7:mw-q7.01': {'lo_freq': 5000000000.0}}, 'output_att': {'q0:mw-q0.01': 4, 'q0:res-q0.ro': 12, 'q5:mw-q5.01': 4, 'q6:mw-q6.01': 6}, 'sequencer_options': {'qe0:optical_readout-qe0.ge0': {'ttl_acq_threshold': 0.5}}}
The dictionary can be parsed using the
model_validate
method.qblox_hw_options = QbloxHardwareOptions.model_validate(qblox_hw_options_dict) qblox_hw_options
QbloxHardwareOptions(crosstalk=None, latency_corrections={'q4:mw-q4.01': 8e-09, 'q5:mw-q5.01': 4e-09}, distortion_corrections={'q0:fl-cl0.baseband': SoftwareDistortionCorrection(filter_func='scipy.signal.lfilter', input_var_name='x', kwargs={'b': [0, 0.25, 0.5], 'a': [1]}, clipping_values=[-2.5, 2.5], sampling_rate=1000000000.0)}, modulation_frequencies={'q0:res-q0.ro': ModulationFrequencies(interm_freq=None, lo_freq=7800000000.0), 'q0:mw-q0.01': ModulationFrequencies(interm_freq=50000000.0, lo_freq=None), 'q4:mw-q4.01': ModulationFrequencies(interm_freq=200000000.0, lo_freq=None), 'q4:res-q4.ro': ModulationFrequencies(interm_freq=None, lo_freq=7200000000.0), 'q5:mw-q5.01': ModulationFrequencies(interm_freq=50000000.0, lo_freq=None), 'q5:res-q5.ro': ModulationFrequencies(interm_freq=50000000.0, lo_freq=None), 'q6:mw-q6.01': ModulationFrequencies(interm_freq=None, lo_freq=5000000000.0), 'q7:mw-q7.01': ModulationFrequencies(interm_freq=None, lo_freq=5000000000.0)}, mixer_corrections={'q4:mw-q4.01': QbloxMixerCorrections(dc_offset_i=None, dc_offset_q=None, amp_ratio=0.9999, phase_error=-4.2, auto_lo_cal=<LoCalEnum.OFF: 'off'>, auto_sideband_cal=<SidebandCalEnum.OFF: 'off'>), 'q4:res-q4.ro': QbloxMixerCorrections(dc_offset_i=-0.054, dc_offset_q=-0.034, amp_ratio=0.9997, phase_error=-4.0, auto_lo_cal=<LoCalEnum.OFF: 'off'>, auto_sideband_cal=<SidebandCalEnum.OFF: 'off'>)}, input_gain={'q4:res-q4.ro': ComplexInputGain(gain_I=2, gain_Q=3)}, output_att={'q0:mw-q0.01': 4, 'q0:res-q0.ro': 12, 'q5:mw-q5.01': 4, 'q6:mw-q6.01': 6}, input_att={'q0:res-q0.ro': 4, 'q5:res-q5.ro': 10}, sequencer_options={'qe0:optical_readout-qe0.ge0': SequencerOptions(init_offset_awg_path_I=0.0, init_offset_awg_path_Q=0.0, init_gain_awg_path_I=1.0, init_gain_awg_path_Q=1.0, ttl_acq_threshold=0.5, qasm_hook_func=None)}, digitization_thresholds=None)
- input_gain: dict[str, RealInputGain | ComplexInputGain] | None = None[source]#
Dictionary containing the input gain settings (values) that should be applied to the inputs that are connected to a certain port-clock combination (keys).
- output_att: dict[str, OutputAttenuation] | None = None[source]#
Dictionary containing the attenuation settings (values) that should be applied to the outputs that are connected to a certain port-clock combination (keys).
- input_att: dict[str, InputAttenuation] | None = None[source]#
Dictionary containing the attenuation settings (values) that should be applied to the inputs that are connected to a certain port-clock combination (keys).
- mixer_corrections: dict[str, QbloxMixerCorrections] | None = None[source]#
Dictionary containing the qblox-specific mixer corrections (values) that should be used for signals on a certain port-clock combination (keys).
- sequencer_options: dict[str, SequencerOptions] | None = None[source]#
Dictionary containing the options (values) that should be set on the sequencer that is used for a certain port-clock combination (keys).
- distortion_corrections: dict[str, quantify_scheduler.backends.types.common.SoftwareDistortionCorrection | QbloxHardwareDistortionCorrection | list[QbloxHardwareDistortionCorrection]] | None = None[source]#
Dictionary containing the distortion corrections (values) that should be applied to waveforms on a certain port-clock combination (keys).