timetag#

Utilty classes for Qblox timetag module.

Module Contents#

Classes#

TimetagSequencerCompiler

Class that performs the compilation steps on the sequencer level, for the QTM.

class TimetagSequencerCompiler(parent: quantify_scheduler.backends.qblox.instrument_compilers.QTMCompiler, index: int, static_hw_properties: quantify_scheduler.backends.types.qblox.StaticHardwareProperties, sequencer_cfg: quantify_scheduler.backends.qblox_backend._SequencerCompilationConfig)[source]#

Bases: quantify_scheduler.backends.qblox.compiler_abc.SequencerCompiler

Class that performs the compilation steps on the sequencer level, for the QTM.

Parameters:
  • parent – A reference to the module compiler this sequencer belongs to.

  • index – Index of the sequencer.

  • static_hw_properties – The static properties of the hardware. This effectively gathers all the differences between the different modules.

  • sequencer_cfg – The instrument compiler config associated to this device.

_settings: quantify_scheduler.backends.types.qblox.TimetagSequencerSettings[source]#
property settings: quantify_scheduler.backends.types.qblox.TimetagSequencerSettings[source]#

Gives the current settings. Overridden from the parent class for type hinting.

Returns:

The settings set to this sequencer.

prepare() None[source]#

Perform necessary operations on this sequencer’s data before compile() is called.

_assert_correct_time_ref_used_with_timestamp() None[source]#

Assert that the Timestamp operation is present if the user specified the appropriate argument for the Timetag acquisition, or vice-versa that there is no Timestamp operation present if the user specified another time reference.

Warn if this is not the case.

get_operation_strategy(operation_info: quantify_scheduler.backends.types.qblox.OpInfo) quantify_scheduler.backends.qblox.operation_handling.base.IOperationStrategy[source]#

Determines and instantiates the correct strategy object.

Parameters:

operation_info – The operation we are building the strategy for.

Returns:

The instantiated strategy object.

_prepare_acq_settings(acquisitions: list[quantify_scheduler.backends.qblox.operation_handling.base.IOperationStrategy], acq_metadata: quantify_scheduler.schedules.schedule.AcquisitionMetadata) None[source]#

Sets sequencer settings that are specific to certain acquisitions. For example for a TTL acquisition strategy.

Parameters:
  • acquisitions – List of the acquisitions assigned to this sequencer.

  • acq_metadata – Acquisition metadata.

_write_pre_wait_sync_instructions(qasm: quantify_scheduler.backends.qblox.qasm_program.QASMProgram) None[source]#

Write instructions to the QASM program that must come before the first wait_sync.

The duration must be equal for all module types.

_write_repetition_loop_header(qasm: quantify_scheduler.backends.qblox.qasm_program.QASMProgram) None[source]#

Write the Q1ASM that should appear at the start of the repetition loop.

The duration must be equal for all module types.

_insert_qasm(op_strategy: quantify_scheduler.backends.qblox.operation_handling.base.IOperationStrategy, qasm_program: quantify_scheduler.backends.qblox.qasm_program.QASMProgram) None[source]#

Get Q1ASM instruction(s) from op_strategy and insert them into qasm_program.

_generate_acq_declaration_dict(repetitions: int, acq_metadata: quantify_scheduler.schedules.schedule.AcquisitionMetadata) dict[str, Any][source]#

Generates the “acquisitions” entry of the program json. It contains declaration of the acquisitions along with the number of bins and the corresponding index.

Overrides the superclass implementation to check additionally that only one acquisition channel is used if Trace or TimetagTrace acquisitions are present.

Parameters:
  • repetitions – The number of times to repeat execution of the schedule.

  • acq_metadata – Acquisition metadata.

Returns:

The “acquisitions” entry of the program json as a dict. The keys correspond to the names of the acquisitions (i.e. the acq_channel in the scheduler).