qat.backend.passes.lowering module

class PartitionByPulseChannel

Bases: LoweringPass

Separates a list of instructions into their respective pulse channels.

For targets that do not have native support for Synchronize, we can separate the instruction list into many lists of instructions, with each list only containing instructions that act on a single channel.

This pass achieves the same as the TriagePass, but instead of saving the results in the results manager, returns the partitioned instructions. The only reason I’ve changed the name is to not confuse it with the TriagePass :)

run(ir, *args, **kwargs)
Parameters:
  • ir (InstructionBuilder) – The list of instructions stored in an InstructionBuilder.

  • res_mgr – The result manager to save the analysis results.

Return type:

PartitionedIR

class PartitionedIR(target_map=<factory>, shots=<factory>, returns=<factory>, assigns=<factory>, acquire_map=<factory>, pp_map=<factory>, rp_map=<factory>)

Bases: object

Stores the results of the PartitionByPulseChannel.

acquire_map: dict[PulseChannel, list[Acquire]]
assigns: list[Assign]
pp_map: dict[str, list[PostProcessing]]
returns: list[Return]
rp_map: dict[str, ResultsProcessing]
shots: Repeat | None
target_map: dict[PulseChannel, list[Instruction]]