Source code for quantify_scheduler.backends.qblox.constants

# Repository: https://gitlab.com/quantify-os/quantify-scheduler
# Licensed according to the LICENCE file on the main branch
"""Constants for compilation to Qblox hardware."""


[docs] MAX_NUMBER_OF_INSTRUCTIONS_QCM: int = 16384
"""Maximum supported number of instructions in Q1ASM programs for QCM/QCM-RF."""
[docs] MAX_NUMBER_OF_INSTRUCTIONS_QRM: int = 12288
"""Maximum supported number of instructions in Q1ASM programs for QRM/QRM-RF."""
[docs] MAX_NUMBER_OF_INSTRUCTIONS_QTM: int = 16384
"""Maximum supported number of instructions in Q1ASM programs for QTM."""
[docs] IMMEDIATE_SZ_GAIN = pow(2, 16)
"""Size of gain instruction immediates in Q1ASM programs."""
[docs] IMMEDIATE_MAX_WAIT_TIME = pow(2, 16) - 4
"""Max size of wait instruction immediates in Q1ASM programs. Max value allowed by assembler is 2**16-1, but this is the largest that is a multiple of 4 ns."""
[docs] IMMEDIATE_SZ_OFFSET = pow(2, 16)
"""Size of offset instruction immediates in Q1ASM programs."""
[docs] REGISTER_SIZE = pow(2, 32) - 1
"""Size of registers in Q1ASM programs."""
[docs] NCO_PHASE_STEPS_PER_DEG = 1e9 / 360
"""The number of steps per degree for NCO phase instructions arguments."""
[docs] NCO_FREQ_STEPS_PER_HZ = 4.0
"""The number of steps per Hz for the NCO set_freq instruction."""
[docs] NCO_FREQ_LIMIT_STEPS = 2e9
"""The maximum and minimum frequency expressed in steps for the NCO set_freq instruction. For the minimum we multiply by -1."""
[docs] NCO_SET_FREQ_WAIT = 8 # ns
"""Wait that is issued after NCO set_freq instruction, included via upd_param."""
[docs] NCO_SET_PH_DELTA_WAIT = 4 # ns
"""Wait that is issued after NCO set_ph_delta instruction, included via upd_param."""
[docs] GRID_TIME = 1 # ns
""" Clock period of the sequencers. All time intervals used must be multiples of this value. """
[docs] MIN_TIME_BETWEEN_OPERATIONS = 4 # ns
""" Minimum time between two operations to prevent FIFO errors. """
[docs] NCO_TIME_GRID = 4 # ns
""" Clock period of the NCO. All time intervals used must be multiples of this value for NCO related operations. """
[docs] MIN_TIME_BETWEEN_ACQUISITIONS = 300 # ns
"""Minimum time between two acquisitions to prevent FIFO errors."""
[docs] SAMPLING_RATE = 1_000_000_000 # 1GS/s
"""Sampling rate of the Qblox control/readout instruments."""
[docs] STITCHED_PULSE_PART_DURATION_NS = 2000
"""Default duration of the individual waveforms that are used to build up a longer stitched waveform. See :func:`~quantify_scheduler.backends.qblox.operations.pulse_factories.long_ramp_pulse` for an example."""
[docs] PULSE_STITCHING_DURATION = 1e-6
"""Duration of the individual pulses when pulse stitching is used."""
[docs] DEFAULT_MIXER_PHASE_ERROR_DEG = 0.0
"""Default phase shift in the instruments for mixer corrections. """
[docs] MIN_MIXER_PHASE_ERROR_DEG = -45
"""Lowest phase shift that can be configured in the instruments for mixer corrections. """
[docs] MAX_MIXER_PHASE_ERROR_DEG = 45
"""Highest phase shift that can be configured in the instruments for mixer corrections. """
[docs] DEFAULT_MIXER_AMP_RATIO = 1.0
"""Default value of the amplitude correction. N.B. This correction is defined as Q/I."""
[docs] MIN_MIXER_AMP_RATIO = 0.5
"""Lowest value the amplitude correction can be set to. N.B. This correction is defined as Q/I."""
[docs] MAX_MIXER_AMP_RATIO = 2.0
"""Highest value the amplitude correction can be set to. N.B. This correction is defined as Q/I."""
[docs] NUMBER_OF_SEQUENCERS_QCM = 6
"""Number of sequencers supported by a QCM/QCM-RF in the latest firmware."""
[docs] NUMBER_OF_SEQUENCERS_QRM = 6
"""Number of sequencers supported by a QRM/QRM-RF in the latest firmware."""
[docs] NUMBER_OF_SEQUENCERS_QTM = 8
"""Number of sequencers supported by a QTM in the latest firmware."""
[docs] NUMBER_OF_REGISTERS: int = 64
"""Number of registers available in the Qblox sequencers."""
[docs] MAX_SAMPLE_SIZE_SCOPE_ACQUISITIONS: int = 16384
"""Maximal amount of scope trace acquisition datapoints returned."""
[docs] MAX_SAMPLE_SIZE_WAVEFORMS: int = 16384
"""Maximal amount of samples in the waveforms to be uploaded to a sequencer."""
[docs] MIN_PHASE_ROTATION_ACQ = 0
"""Minimum value of the sequencer integration result phase rotation in degrees."""
[docs] MAX_PHASE_ROTATION_ACQ = 360
"""Maximum value of the sequencer integration result phase rotation in degrees."""
[docs] MIN_DISCRETIZATION_THRESHOLD_ACQ = -16777212.0
"""Minimum value of the sequencer discretization threshold for discretizing the phase rotation result."""
[docs] MAX_DISCRETIZATION_THRESHOLD_ACQ = 16777212.0
"""Maximum value of the sequencer discretization threshold for discretizing the phase rotation result."""
[docs] MAX_NUMBER_OF_BINS: int = 131072
"""Number of bins available in the Qblox sequencers."""
[docs] GENERIC_IC_COMPONENT_NAME: str = "generic"
"""Default name for the generic instrument coordinator component."""
[docs] TRIGGER_DELAY: float = 364e-9
""" Total delay time of the feedback trigger before it is registered after the end of a thresholded acquisition. """
[docs] MAX_FEEDBACK_TRIGGER_ADDRESS: int = 15
"""Available trigger addresses on each cluster range from 1,...,15."""
[docs] MAX_MIN_INSTRUCTION_WAIT: float = 4e-9
""" Maximum of minimum wait times for real-time-instructions. e.g. play, set_cond, acquire, require at least 4ns. """
[docs] GRID_TIME_TOLERANCE_TIME: float = 0.0011
""" Tolerance for time values in nanoseconds. .. versionadded:: 0.21.2 """
[docs] QTM_FINE_DELAY_INT_TO_NS_RATIO = 128
""" Ratio of the integer fine delay argument value to the actual delay in nanoseconds. The fine delay argument has a resolution of 1/128 ns. """
[docs] MAX_QTM_FINE_DELAY_NS = ((1 << 11) - 1) / QTM_FINE_DELAY_INT_TO_NS_RATIO
""" Maximum fine delay value in nanoseconds for QTM instructions that take a fine delay argument. The maximum integer value is based on an 11-bit unsigned integer. """
[docs] MIN_FINE_DELAY_SPACING_NS = 7 # ns
"""QTM instructions with unequal fine delay must be at least this far apart in time."""