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 - InstrumentCompilerthat 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 = 16384[source]#
- The maximum number of Q1ASM instructions supported by this module type. 
 - static_hw_properties: quantify_scheduler.backends.types.qblox.StaticAnalogModuleProperties[source]#
 
- 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. - max_number_of_instructions = 12288[source]#
- The maximum number of Q1ASM instructions supported by this module type. 
 - static_hw_properties: quantify_scheduler.backends.types.qblox.StaticAnalogModuleProperties[source]#
 
- 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. - max_number_of_instructions = 16384[source]#
- The maximum number of Q1ASM instructions supported by this module type. 
 - static_hw_properties: quantify_scheduler.backends.types.qblox.StaticAnalogModuleProperties[source]#
 
- 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. - max_number_of_instructions = 12288[source]#
- The maximum number of Q1ASM instructions supported by this module type. 
 - static_hw_properties: quantify_scheduler.backends.types.qblox.StaticAnalogModuleProperties[source]#
 
- 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. 
 
 - static_hw_properties: quantify_scheduler.backends.types.qblox.StaticTimetagModuleProperties[source]#
 - property max_number_of_instructions: int[source]#
- The maximum number of Q1ASM instructions supported by this module type. 
 - _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.