qat.experimental.dialect.q1_sequence package
- class AcqTableIndex(value)
Bases:
Q1ImmIndex into a sequencer’s acquisition table:
[0, 31].Up to 32 acquisition entries per sequencer;
acquire*instructions reference them viaacq_idx.- name: ClassVar[str] = 'q1_sequence.acq_table_index'
The attribute name should be a static field in the attribute classes.
- class AcquisitionAttr(*parameters)
Bases:
AcquisitionAttrAn acquisition entry in a Qblox sequence’s acquisitions dictionary.
- Parameters:
-
acquisition_name:
StringAttr= <xdsl.irdl.attributes._ParameterDef object>
- classmethod get_irdl_definition()
Get the IRDL attribute definition.
-
index:
AcqTableIndex= <xdsl.irdl.attributes._ParameterDef object>
- name: ClassVar[str] = 'q1_sequence.acquisition'
The attribute name should be a static field in the attribute classes.
-
num_bins:
BinCountImm= <xdsl.irdl.attributes._ParameterDef object>
- class BinCountImm(value)
Bases:
Q1ImmNumber of acquisition bins:
[0, 7_000_000].The hardware budget is per-module, not per-acquisition: 3 M bins total for QRM / QRM-RF and 7 M total for QRC. We allow the worst-case max here; cross-acquisition aggregation is checked elsewhere.
- name: ClassVar[str] = 'q1_sequence.bin_count_imm'
The attribute name should be a static field in the attribute classes.
- class Q1SequenceTarget
Bases:
Target- emit(ctx, module, output)
Emits a Q1 sequence module as JSON.
- name: ClassVar[str] = 'q1_sequence'
- class SequenceOp(channel_id, program, waveforms=None, weights=None, acquisitions=None)
Bases:
SequenceOp,IRDLOperation,Operation,_IRNode,ABC,objectA sequence op represents the payload for a single Sequencer/PPU in a Qblox instrument. The body region holds Q1 assembly ops across one or more blocks, each terminated by an
IsTerminatorop:q1_cfbranches wire the control-flow graph andStop*ops end terminating paths. In multi-block (CFG) form the region must be linearised to a single block before emission, sinceemit_sequencelowers viaq1.emit_programwhich requires all ops to beAssemblyPrintable(q1_cfterminators are not). Data table attributes (waveforms, weights, acquisitions) are static lookup tables referenced by instruction indices.- Parameters:
sym_name¶ – Channel/sequencer identifier (e.g.
"Q0_drive").body¶ – Region of Q1 instruction ops, one or more blocks.
waveforms¶ (
Optional[ArrayAttr[WaveformAttr]]) – Waveform data table entries.weights¶ (
Optional[ArrayAttr[WeightAttr]]) – Weight data table entries.acquisitions¶ (
Optional[ArrayAttr[AcquisitionAttr]]) – Acquisition data table entries.
- acquisitions
Accessor for an operation property.
- body
Access a non-variadic construct which appears before any variadic arguments.
- property channel_id: StringAttr
Alias for sym_name, the channel identifier.
- classmethod get_irdl_definition()
Get the IRDL operation definition.
- name: ClassVar[str] = 'q1_sequence.sequence'
The operation name. Should be a static member of the class
- sym_name
Accessor for an operation attribute.
- traits: ClassVar[OpTraits] = <xdsl.ir.core.OpTraits object>
Traits attached to an operation definition. This is a static field, and is made empty by default by PyRDL if not set by the operation definition.
- verify_()
Verifies SequenceOp invariants.
channel_id must be non-empty.
Body must contain at least one block.
Each block in the body must end with an IsTerminator op.
Indices must be unique within each data table.
Names must be unique within each data table.
- waveforms
Accessor for an operation property.
- weights
Accessor for an operation property.
- class WaveformAttr(*parameters)
Bases:
WaveformAttrA waveform entry in a Qblox sequence’s waveforms dictionary.
- Parameters:
-
data:
DenseIntOrFPElementsAttr[Float32Type] = <xdsl.irdl.attributes._ParameterDef object>
- classmethod get_irdl_definition()
Get the IRDL attribute definition.
-
index:
WaveformTableIndex= <xdsl.irdl.attributes._ParameterDef object>
- name: ClassVar[str] = 'q1_sequence.waveform'
The attribute name should be a static field in the attribute classes.
- verify()
Check that the attribute parameters satisfy the expected invariants. Raise a VerifyException otherwise.
- Return type:
None
-
waveform_name:
StringAttr= <xdsl.irdl.attributes._ParameterDef object>
- class WaveformTableIndex(value)
Bases:
Q1ImmIndex into a sequencer’s waveform table:
[0, 1023].A Q1 sequencer can hold up to 1024 waveform entries shared across both output paths;
play.wave0/play.wave1reference them by index.- name: ClassVar[str] = 'q1_sequence.waveform_table_index'
The attribute name should be a static field in the attribute classes.
- class WeightAttr(*parameters)
Bases:
WeightAttrA weight entry in a Qblox sequence’s weights dictionary.
Weights are per-sample integration coefficients applied to the demodulated signal during weighted acquisition (
acquire_weighted). Each coefficient multiplies the corresponding 1 ns ADC sample before summation, enabling matched-filter or optimal-discrimination readout schemes.A sequencer holds up to 32 weight arrays sharing a budget of 16 384 samples (i.e. 16 384 ns at 1 GSa/s).
- Parameters:
-
data:
DenseIntOrFPElementsAttr[Float32Type] = <xdsl.irdl.attributes._ParameterDef object>
- classmethod get_irdl_definition()
Get the IRDL attribute definition.
-
index:
WeightTableIndex= <xdsl.irdl.attributes._ParameterDef object>
- name: ClassVar[str] = 'q1_sequence.weight'
The attribute name should be a static field in the attribute classes.
- verify()
Check that the attribute parameters satisfy the expected invariants. Raise a VerifyException otherwise.
- Return type:
None
-
weight_name:
StringAttr= <xdsl.irdl.attributes._ParameterDef object>
- class WeightTableIndex(value)
Bases:
Q1ImmIndex into a sequencer’s weight table:
[0, 31].Up to 32 integration-weight arrays are stored per sequencer; the
acquire_weightedinstruction selects one via its 6-bitweight_idx{0,1}fields (encoded asUI6Imm), of which only the low 5 bits address an entry on current hardware.- name: ClassVar[str] = 'q1_sequence.weight_table_index'
The attribute name should be a static field in the attribute classes.