qat.experimental.dialect.pulse.transforms.pipeline module
Centralised builder for the default pulse-level IR preprocessing pipeline.
The PulsePipelineManager is the single point of entry for constructing a
pulse-level pass pipeline from a hardware view. It accepts a
PulseLevelConstraints instance
and exposes build_default_pipeline(), which returns a
validated OrderedPassPipeline.
The default pipeline runs the following passes, in order:
OrderedCanonicalizePass— fold all constant arithmetic so that subsequent passes only see canonicalConstantOpoperands.
ApplyGranularitySanitisation— round constant durations and sampled-waveform widths up to the hardware timing granularity, so later passes only see realisable times.
CommonSubexpressionElimination— merge duplicate pure operations, including analytical waveform ops, so that later passes only see one producer for each unique waveform.
EvaluateWaveformsAsSamples— convert analytical waveform ops into sampledConstantOppayloads, using the per-port sample times from constraints.
TimelineNormalization— resolveSynchronizeOpoperations into explicitWaitOpchains using symbolic time-expression analysis.
DeadFrameEliminationPass— eliminate frame creation and manipulation operations that do not contribute to any hardware-visible pulse operations, reducing IR complexity.
ApplySquashContiguousOptimizations— merge adjacent wait and phase operations.
LowerKernelsToResultsArrays— rewrite each kernel signature fromResultsCollectionTypevalues toResultsArrayTypevalues and update all call sites to match the expanded signature.
OrderedCanonicalizePass— a final canonicalization pass that folds any constants left behind by the earlier passes and removes the resulting no-ops.
The OrderedPassPipeline
validates any declared OrderedPass
constraints when it is constructed, so a mis-ordered schedule fails eagerly at build
time.
- class PulsePipelineManager(constraints)
Bases:
objectBuilds pulse-level IR pipelines from a hardware constraint view.
- Parameters:
constraints¶ (
PulseLevelConstraints) – Hardware-derived pulse-level constraints (timing granularity, per- port sample times, native waveform shapes).
- build_default_pipeline()
Build the default pulse-level preprocessing pipeline.
- Return type:
- Returns:
An
OrderedPassPipelinecontaining the standard pulse-level passes in conflict-free order, ending with a final constant-propagation cleanup.- Raises:
VerifyException – If the declared ordering constraints are violated (should not occur with the default configuration).
- classmethod from_canonical_data(data)
Construct a manager by deriving constraints from canonical system data.
- Parameters:
data¶ (
CanonicalSystemData) – The canonical hardware description.- Return type:
- Returns:
A new
PulsePipelineManagerwhose constraints are derived from data.