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,ModulePassBind each outlined sequence op to the physical Qblox sequencer it runs on.
Each
SequenceOpmust contain one constantpulse.create_framewhose 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]]