qat.experimental.conversion.pulse_to_q1.hardware_binding module

Bind outlined Pulse sequences to their physical Qblox sequencer hardware.

This pass assigns each outlined sequence to a Qblox sequencer based on its frame’s port and carrier frequency. A sequence’s frame nominally identifies a canonical channel; when a port exposes multiple channels at the same frequency (ambiguous case), the pass selects one deterministically: preferring a channel matching the frame’s raw label, then one matching the sequence channel_id, then defaulting to the first available candidate.

Once selected, each sequence is resolved to a sequencer binding via the allocation strategy. When multiple sequencers can satisfy a candidate, a tie-breaker applies: the sequencer with minimum (instrument_id, slot, sequencer_index) is chosen to ensure deterministic and reproducible allocation across runs.

Frequency matching uses exact integer-Hz equality, consistent with the Pulse frequency attribute and canonical channel model. Only channels actively selected by sequences consume allocation; calibrated but unplayed channels do not reserve sequencers, enabling efficient hardware utilization.

The pass merges existing program-owned sequencer configuration with the resolved configuration during binding, preserving acquisition settings while enforcing canonical module constraints.

class QbloxHardwareBindingPass(canonical_data)

Bases: OrderedPass, ModulePass

Bind each outlined sequence op to the physical Qblox sequencer it runs on.

Each SequenceOp must contain one constant pulse.create_frame whose port and carrier frequency identify a canonical channel. The pass records that channel’s allocated instrument, slot, and sequencer index on the sequence, and attaches the resolved sequencer and module configuration. Existing program-owned acquisition configuration is preserved by merging it with the resolved configuration during binding.

apply(ctx, op)
Return type:

None

canonical_data: CanonicalSystemData
name: ClassVar[str] = 'qblox-hardware-binding'
required_predecessors()

Pass classes that must be present in the same pipeline and run before this pass.

Return type:

frozenset[type[ModulePass]]

runs_before()

Pass classes that, if present in the same pipeline, must run after this pass.

Return type:

frozenset[type[ModulePass]]