instrument_compilers#
Compiler classes for Qblox backend.
Module Contents#
Classes#
Implementation of an |
|
QCM specific implementation of the qblox compiler. |
|
QRM specific implementation of the qblox compiler. |
|
QCM-RF specific implementation of the qblox compiler. |
|
QRM-RF specific implementation of the qblox compiler. |
|
QTM specific implementation of the qblox compiler. |
|
Compiler class for a Qblox cluster. |
- class LocalOscillatorCompiler(name: str, total_play_time: float, instrument_cfg: quantify_scheduler.backends.qblox_backend._LocalOscillatorCompilationConfig)[source]#
Bases:
quantify_scheduler.backends.qblox.compiler_abc.InstrumentCompiler
Implementation of an
InstrumentCompiler
that compiles for a generic LO. The main difference between this class and the other compiler classes is that it doesn’t take pulses and acquisitions.- Parameters:
name – QCoDeS name of the device it compiles for.
total_play_time – Total time execution of the schedule should go on for. This parameter is used to ensure that the different devices, potentially with different clock rates, can work in a synchronized way when performing multiple executions of the schedule.
instrument_cfg – The compiler config referring to this instrument.
- compile(debug_mode: bool, repetitions: int = 1) dict[str, Any] | None [source]#
Compiles the program for the LO InstrumentCoordinator component.
- Parameters:
debug_mode – Debug mode can modify the compilation process, so that debugging of the compilation process is easier.
repetitions – Number of times execution the schedule is repeated.
- Returns:
Dictionary containing all the information the InstrumentCoordinator component needs to set the parameters appropriately.
- class QCMCompiler(name: str, total_play_time: float, instrument_cfg: quantify_scheduler.backends.qblox_backend._ClusterModuleCompilationConfig)[source]#
Bases:
quantify_scheduler.backends.qblox.analog.BasebandModuleCompiler
QCM specific implementation of the qblox compiler.
- max_number_of_instructions[source]#
The maximum number of Q1ASM instructions supported by this module type.
- static_hw_properties[source]#
The static properties of the hardware. This effectively gathers all the differences between the different modules.
- class QRMCompiler(name: str, total_play_time: float, instrument_cfg: quantify_scheduler.backends.qblox_backend._ClusterModuleCompilationConfig)[source]#
Bases:
quantify_scheduler.backends.qblox.analog.BasebandModuleCompiler
QRM specific implementation of the qblox compiler.
- class QCMRFCompiler(name: str, total_play_time: float, instrument_cfg: quantify_scheduler.backends.qblox_backend._ClusterModuleCompilationConfig)[source]#
Bases:
quantify_scheduler.backends.qblox.analog.RFModuleCompiler
QCM-RF specific implementation of the qblox compiler.
- class QRMRFCompiler(name: str, total_play_time: float, instrument_cfg: quantify_scheduler.backends.qblox_backend._ClusterModuleCompilationConfig)[source]#
Bases:
quantify_scheduler.backends.qblox.analog.RFModuleCompiler
QRM-RF specific implementation of the qblox compiler.
- class QTMCompiler(name: str, total_play_time: float, instrument_cfg: quantify_scheduler.backends.qblox_backend._ClusterModuleCompilationConfig)[source]#
Bases:
quantify_scheduler.backends.qblox.compiler_abc.ClusterModuleCompiler
QTM specific implementation of the qblox compiler.
- Parameters:
name – Name of the QCoDeS instrument this compiler object corresponds to.
total_play_time – Total time execution of the schedule should go on for. This parameter is used to ensure that the different devices, potentially with different clock rates, can work in a synchronized way when performing multiple executions of the schedule.
instrument_cfg – The instrument compilation config referring to this device.
- property max_number_of_instructions: int[source]#
The maximum number of Q1ASM instructions supported by this module type.
- property static_hw_properties: quantify_scheduler.backends.types.qblox.StaticTimetagModuleProperties[source]#
The static properties of the hardware. This effectively gathers all the differences between the different modules.
- _construct_sequencer_compiler(index: int, sequencer_cfg: quantify_scheduler.backends.qblox_backend._SequencerCompilationConfig) quantify_scheduler.backends.qblox.timetag.TimetagSequencerCompiler [source]#
Create the sequencer object of the correct sequencer type belonging to the module.
- class ClusterCompiler(name: str, total_play_time: float, instrument_cfg: quantify_scheduler.backends.qblox_backend._ClusterCompilationConfig)[source]#
Bases:
quantify_scheduler.backends.qblox.compiler_abc.InstrumentCompiler
Compiler class for a Qblox cluster.
- Parameters:
name – Name of the QCoDeS instrument this compiler object corresponds to.
total_play_time – Total time execution of the schedule should go on for.
instrument_cfg – The instrument compiler config referring to this device.
- compiler_classes: dict[str, type][source]#
References to the individual module compiler classes that can be used by the cluster.
- add_op_info(port: str, clock: str, op_info: quantify_scheduler.backends.types.qblox.OpInfo) None [source]#
Assigns a certain pulse or acquisition to this device.
- Parameters:
port – The port this waveform is sent to (or acquired from).
clock – The clock for modulation of the pulse or acquisition. Can be a BasebandClock.
op_info – Data structure containing all the information regarding this specific pulse or acquisition operation.
- _construct_module_compilers() dict[str, quantify_scheduler.backends.qblox.analog.AnalogModuleCompiler] [source]#
Constructs the compilers for the modules inside the cluster.
- Returns:
A dictionary with the name of the module as key and the value its compiler.
- prepare(external_los: dict[str, LocalOscillatorCompiler] | None = None, schedule_resources: dict[str, quantify_scheduler.resources.Resource] | None = None, **kwargs) None [source]#
Prepares the instrument compiler for compilation by assigning the data.
- Parameters:
external_los – Optional LO compiler objects representing external LOs, whose LO frequency will be determined and set.
schedule_resources – Mapping from clock name to clock resource, which contains the clock frequency.
kwargs – Potential keyword arguments for other compiler classes.
- distribute_data() None [source]#
Distributes the pulses and acquisitions assigned to the cluster over the individual module compilers.
- compile(debug_mode: bool, repetitions: int = 1) dict[str, Any] [source]#
Performs the compilation.
- Parameters:
debug_mode – Debug mode can modify the compilation process, so that debugging of the compilation process is easier.
repetitions – Amount of times to repeat execution of the schedule.
- Returns:
The part of the compiled instructions relevant for this instrument.