Skip to content

Base Types

The OAQ specification is structured around a set of abstract base classes that define the major categories of objects in the abstract syntax graph (ASG). Every concrete type in the specification inherits from one of these bases.

Understanding the Base Types is the quickest way to orient yourself within the specification — they describe what kind of thing an object is before any details about its fields.

Instruction

An Instruction is an executable step that can appear in a Block. All drive operations, acquisition operations, timing dependencies, and loop constructs are Instruction subtypes.

Concrete subtypes:

Type Description
UnmodulatedPulse Plays a waveform on a port
ModulatedPulse Plays a modulated waveform on a frame
Delay Inserts an explicit time delay
DcBias Sets a static DC offset on a port
SetFramePhase Sets the absolute phase of a frame
ShiftFramePhase Adds a phase offset to a frame
DetuneFrame Updates a frame's frequency within a scoped block
FilterOutput Applies IIR/FIR output filters within a scoped block
BlockConditional Conditionally branches a program of instructions
AdcAcquisition Acquires a voltage time-trace via ADC
NumericAppend Appends a numeric value to a register
ComplexAppend Appends a complex value to a register
BooleanAppend Appends a boolean value to a register
ComplexRangeAssign Assigns a complex range to a register
Dependency Specifies a timing dependency between two blocks
ForEachNumeric Iterates a block over a numeric range

Waveform

A Waveform defines a pulse envelope shape. Waveforms are referenced by pulse instructions (UnmodulatedPulse, ModulatedPulse) and by modifier wrappers (DragWaveform, PlateauWaveform).

Concrete subtypes:

Type Description
BlackmanWaveform Blackman pulse shape
ConstantWaveform Constant amplitude held for a duration
CosineWaveform Single period of an inverted, offset cosine
GaussianWaveform Truncated Gaussian pulse
SampledNumericWaveform Explicitly sampled real-valued waveform
SampledComplexWaveform Explicitly sampled complex-valued waveform
SuddenNetZeroWaveform Sudden net-zero (SNZ) gate pulse
DragWaveform DRAG correction modifier applied to a base waveform
PlateauWaveform Central plateau modifier applied to a base waveform

NumericExpression

A NumericExpression is a scalar real-valued expression. Numeric expressions appear as field values wherever a real number is expected (e.g. amplitudes, frequencies, loop indices).

Concrete subtypes:

Type Description
NumericLiteral A literal real number
NumericConditional Conditional numeric expression
BinaryNumericOperation Binary arithmetic on two numeric expressions
NumericRangeElement Index into a numeric range to produce a scalar
ComplexRealValue Real part of a complex expression
ComplexImaginaryValue Imaginary part of a complex expression
NumericParameter A function parameter within a NumericToBlockFunction

ComplexExpression

A ComplexExpression is a scalar complex-valued expression.

Concrete subtypes:

Type Description
BinaryComplexOperation Binary arithmetic on two complex expressions
ComplexConditional Conditional complex expression
ComplexDotProduct Dot product between two complex ranges
ComplexRangeElement Index into a complex range to produce a scalar

BooleanExpression

A BooleanExpression is a scalar boolean-valued expression. Boolean expressions are used as guards in conditional instructions and conditional expressions.

Concrete subtypes:

Type Description
ComparisonOperation Comparison between two numeric expressions
BooleanConditional Conditional boolean expression
BooleanRangeElement Index into a boolean range to produce a scalar

NumericRangeExpression

A NumericRangeExpression is an array of numeric values. Range expressions are used as loop sources, output registers, and post-processing inputs.

Concrete subtypes:

Type Description
LiteralNumericRange An inline array of literal numeric values
NumericRangeRegister A named output register for numeric results
SteppedRange A linearly stepped range (start, step, end)
NumericAverageOver Averaging aggregation over a numeric range
ForEachNumeric The source range for a ForEachNumeric loop

ComplexRangeExpression

A ComplexRangeExpression is an array of complex values. Used for acquisition results, demodulation, and output registers.

Concrete subtypes:

Type Description
LiteralComplexRange An inline array of literal complex values
ComplexRangeRegister A named output register for complex results
AcquisitionComplexRangeResult Holds the raw result of an ADC acquisition
ComplexAverageOver Averaging aggregation over a complex range
Demodulation Demodulated signal from an ADC trace

BooleanRangeExpression

A BooleanRangeExpression is an array of boolean values.

Concrete subtypes:

Type Description
BooleanRangeRegister A named output register for boolean results