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."""
"""Size of gain instruction immediates in Q1ASM programs."""
"""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."""
"""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."""
"""
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.
"""
"""
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."""
"""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."""