qat.experimental.conversion.pulse_to_q1.qblox_configuration.allocation module

Allocate physical Qblox sequencers from the banks canonical ports supply.

The allocation reproduces the legacy AllocatingBackend semantics: a canonical channel is allocated out of the bank its own port supplies, minus the sequencers already taken on the physical module, and every channel of one port keeps its assignment for the whole compilation. Nothing is synthesised - a sequencer the source never described is never allocated, so the supplied bank alone decides what a module may use.

allocate_sequencers(module_configurations)

Allocate a physical sequencer to every canonical channel of every module.

Parameters:

module_configurations (Mapping[QbloxModuleLocation, ReconciledModuleConfiguration]) – Configurations keyed by physical module location.

Return type:

frozendict[str, SequencerPlacement]

Returns:

The placement of each canonical channel, keyed by channel identifier.

Raises:

ValueError – If a port supplies no bank, or its bank cannot satisfy the channels routed through it.