qat.experimental.dialect.q1_sequence package

class AcquisitionAttr(*parameters)

Bases: AcquisitionAttr

An acquisition entry in a Qblox sequence’s acquisitions dictionary.

Parameters:
  • acquisition_name – Acquisition name.

  • index – Index referenced by acquire ops (acq_idx).

  • num_bins – Number of acquisition bins.

acquisition_name: StringAttr = <xdsl.irdl.attributes._ParameterDef object>
classmethod get_irdl_definition()

Get the IRDL attribute definition.

index: IntegerAttr[IntegerType[Literal[32], Literal[<Signedness.UNSIGNED: 2>]]] = <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: IntegerAttr[IntegerType[Literal[32], Literal[<Signedness.UNSIGNED: 2>]]] = <xdsl.irdl.attributes._ParameterDef object>
class Q1SequenceTarget

Bases: Target

emit(ctx, module, output)

Emits a Q1 sequence module as JSON.

Parameters:
  • ctx (Context) – xDSL context for the emission target.

  • module (ModuleOp) – Module containing SequenceOps.

  • output (IO[str]) – Text stream receiving the JSON output.

Return type:

None

name: ClassVar[str] = 'q1_sequence'
class SequenceOp(channel_id, program, waveforms=None, weights=None, acquisitions=None)

Bases: SequenceOp, IRDLOperation, Operation, _IRNode, ABC, object

A sequence op represents the payload for a single Sequencer/PPU in a Qblox instrument. The body region holds Q1 assembly ops and must be terminated by a Stop* op. 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 – Single-block region of Q1 instruction ops.

  • 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.

  • Program body must be terminated by 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: WaveformAttr

A waveform entry in a Qblox sequence’s waveforms dictionary.

Parameters:
  • waveform_name – Waveform name.

  • index – Index referenced by play ops (wave0/wave1).

  • data – Float32 samples, each sample in [-1.0, 1.0] represents DAC range.

data: DenseIntOrFPElementsAttr[Float32Type] = <xdsl.irdl.attributes._ParameterDef object>
classmethod get_irdl_definition()

Get the IRDL attribute definition.

index: IntegerAttr[IntegerType[Literal[32], Literal[<Signedness.UNSIGNED: 2>]]] = <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 WeightAttr(*parameters)

Bases: WeightAttr

A weight entry in a Qblox sequence’s weights dictionary.

Weights are per-sample integration coefficients applied to the demodulated signal during weighted acquisition (acquire_weighed). 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:
  • weight_name – Weight name.

  • index – Index referenced by acquire_weighed (0-31, up to 32 weight arrays per sequencer).

  • data – Float32 coefficients, each in [-1.0, 1.0].

data: DenseIntOrFPElementsAttr[Float32Type] = <xdsl.irdl.attributes._ParameterDef object>
classmethod get_irdl_definition()

Get the IRDL attribute definition.

index: IntegerAttr[IntegerType[Literal[32], Literal[<Signedness.UNSIGNED: 2>]]] = <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>

Submodules