timetag ======= .. py:module:: quantify_scheduler.backends.qblox.timetag .. autoapi-nested-parse:: Utilty classes for Qblox timetag module. Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: quantify_scheduler.backends.qblox.timetag.TimetagSequencerCompiler .. py: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) Bases: :py:obj:`quantify_scheduler.backends.qblox.compiler_abc.SequencerCompiler` Class that performs the compilation steps on the sequencer level, for the QTM. :param parent: A reference to the module compiler this sequencer belongs to. :param index: Index of the sequencer. :param static_hw_properties: The static properties of the hardware. This effectively gathers all the differences between the different modules. :param sequencer_cfg: The instrument compiler config associated to this device. .. py:attribute:: _settings :type: quantify_scheduler.backends.types.qblox.TimetagSequencerSettings .. py:property:: settings :type: quantify_scheduler.backends.types.qblox.TimetagSequencerSettings Gives the current settings. Overridden from the parent class for type hinting. :returns: The settings set to this sequencer. .. py:method:: prepare() -> None Perform necessary operations on this sequencer's data before :meth:`~quantify_scheduler.backends.qblox.compiler_abc.SequencerCompiler.compile` is called. .. py:method:: _assert_correct_time_ref_used_with_timestamp() -> None 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. .. py:method:: get_operation_strategy(operation_info: quantify_scheduler.backends.types.qblox.OpInfo) -> quantify_scheduler.backends.qblox.operation_handling.base.IOperationStrategy Determines and instantiates the correct strategy object. :param operation_info: The operation we are building the strategy for. :returns: The instantiated strategy object. .. py:method:: _prepare_acq_settings(acquisitions: list[quantify_scheduler.backends.qblox.operation_handling.base.IOperationStrategy], acq_metadata: quantify_scheduler.schedules.schedule.AcquisitionMetadata) -> None Sets sequencer settings that are specific to certain acquisitions. For example for a TTL acquisition strategy. :param acquisitions: List of the acquisitions assigned to this sequencer. :param acq_metadata: Acquisition metadata. .. py:method:: _write_pre_wait_sync_instructions(qasm: quantify_scheduler.backends.qblox.qasm_program.QASMProgram) -> None Write instructions to the QASM program that must come before the first wait_sync. The duration must be equal for all module types. .. py:method:: _write_repetition_loop_header(qasm: quantify_scheduler.backends.qblox.qasm_program.QASMProgram) -> None Write the Q1ASM that should appear at the start of the repetition loop. The duration must be equal for all module types. .. py:method:: _insert_qasm(op_strategy: quantify_scheduler.backends.qblox.operation_handling.base.IOperationStrategy, qasm_program: quantify_scheduler.backends.qblox.qasm_program.QASMProgram) -> None Get Q1ASM instruction(s) from ``op_strategy`` and insert them into ``qasm_program``. .. py:method:: _generate_acq_declaration_dict(repetitions: int, acq_metadata: quantify_scheduler.schedules.schedule.AcquisitionMetadata) -> dict[str, Any] 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. :param repetitions: The number of times to repeat execution of the schedule. :param 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).