instrument_compilers#

Compiler classes for Qblox backend.

Module Contents#

Classes#

LocalOscillatorCompiler

Implementation of an InstrumentCompiler that compiles for a generic LO. The main

QCMCompiler

QCM specific implementation of the qblox compiler.

QRMCompiler

QRM specific implementation of the qblox compiler.

QCMRFCompiler

QCM-RF specific implementation of the qblox compiler.

QRMRFCompiler

QRM-RF specific implementation of the qblox compiler.

ClusterCompiler

Compiler class for a Qblox cluster.

class LocalOscillatorCompiler(parent: quantify_scheduler.backends.qblox.compiler_container.CompilerContainer, name: str, total_play_time: float, instrument_cfg: dict[str, Any])[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:
  • parent – Reference to the parent container object.

  • 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 part of the hardware mapping dict referring to this instrument.

property frequency: float | None[source]#

Getter for the frequency.

Returns:

The current frequency.

compile(debug_mode, 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(parent, name: str, total_play_time: float, instrument_cfg: dict[str, Any], latency_corrections: dict[str, float] | None = None)[source]#

Bases: quantify_scheduler.backends.qblox.compiler_abc.BasebandModuleCompiler

QCM specific implementation of the qblox compiler.

supports_acquisition = False[source]#
max_number_of_instructions[source]#
static_hw_properties[source]#
class QRMCompiler(parent, name: str, total_play_time: float, instrument_cfg: dict[str, Any], latency_corrections: dict[str, float] | None = None)[source]#

Bases: quantify_scheduler.backends.qblox.compiler_abc.BasebandModuleCompiler

QRM specific implementation of the qblox compiler.

supports_acquisition = True[source]#
max_number_of_instructions[source]#
static_hw_properties[source]#
class QCMRFCompiler(parent, name: str, total_play_time: float, instrument_cfg: dict[str, Any], latency_corrections: dict[str, float] | None = None)[source]#

Bases: quantify_scheduler.backends.qblox.compiler_abc.RFModuleCompiler

QCM-RF specific implementation of the qblox compiler.

supports_acquisition = False[source]#
max_number_of_instructions[source]#
static_hw_properties[source]#
class QRMRFCompiler(parent, name: str, total_play_time: float, instrument_cfg: dict[str, Any], latency_corrections: dict[str, float] | None = None)[source]#

Bases: quantify_scheduler.backends.qblox.compiler_abc.RFModuleCompiler

QRM-RF specific implementation of the qblox compiler.

supports_acquisition = True[source]#
max_number_of_instructions[source]#
static_hw_properties[source]#
class ClusterCompiler(parent: quantify_scheduler.backends.qblox.compiler_container.CompilerContainer, name: str, total_play_time: float, instrument_cfg: dict[str, Any], latency_corrections: dict[str, float] | None = None)[source]#

Bases: quantify_scheduler.backends.qblox.compiler_abc.InstrumentCompiler

Compiler class for a Qblox cluster.

Parameters:
  • parent – Reference to the parent object.

  • 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 part of the hardware configuration dictionary referring to this device. This is one of the inner dictionaries of the overall hardware config.

  • latency_corrections – Dict containing the delays for each port-clock combination. This is specified in the top layer of hardware config.

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_instrument_compilers() dict[str, quantify_scheduler.backends.qblox.compiler_abc.ClusterModuleCompiler][source]#

Constructs the compilers for the modules inside the cluster.

Returns:

A dictionary with the name of the instrument as key and the value its compiler.

prepare() None[source]#

Prepares the instrument compiler for compilation by assigning the data.

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.