qat.experimental.middleend.middleend module
Experimental pulse-level middleend for the Qblox pipeline.
Wraps PulsePipelineManager
— the pulse-level pass pipeline already implemented in qat.experimental — as a
BaseMiddleend so it can be slotted into a
CompilePipeline.
Warning
Experimental. This covers pulse-level passes that run before Q1 lowering. Q1 lowering and code generation are handled by the experimental Qblox backend.
- class PulseLevelMiddleend(model)
Bases:
BaseMiddleendRuns the default pulse-level pass pipeline ahead of Q1 lowering.
- Parameters:
model¶ (
CanonicalSystemData) – The canonical system data used to derive pulse-level constraints (timing granularity, per-port sample times, native waveform shapes).model¶ – The hardware model that holds calibrated information on the qubits on the QPU.
- emit(ir, res_mgr=None, met_mgr=None, compiler_config=None, context=None, **kwargs)
Apply the pulse-level pass pipeline to ir in place.
- Parameters:
res_mgr¶ (
ResultManager|None) – Collection of analysis results with caching and aggregation capabilities, defaults to None.met_mgr¶ (
MetricsManager|None) – Stores useful intermediary metrics that are generated during compilation, defaults to None.compiler_config¶ (
CompilerConfig|None) – Compiler settings, defaults to None.context¶ (
Context|None) – xdsl context used to aid pass pipelines.ir¶ (
ModuleOp) – The pulse-level IR emitted by the frontend.
- Return type:
ModuleOp- Returns:
The same
ModuleOp, mutated by the pass pipeline.