timetag#
Utilty classes for Qblox timetag module.
Module Contents#
Classes#
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.
- 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.
- static _assert_fine_delays_executable(ordered_op_strategies: list[quantify_scheduler.backends.qblox.operation_handling.base.IOperationStrategy]) None [source]#
Check whether any operations with a fine delay argument are executable on the hardware.
To avoid undefined behaviour, there must be at least 7ns between consecutive Q1ASM instructions with fine delay, OR the time between such instructions must be an integer number of nanoseconds.
Must be called before SequencerCompiler._replace_digital_pulses.
- 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 intoqasm_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).