Barrier#

class iqm.pulse.gates.barrier.Barrier(parent, name, locus, calibration_data, builder)#

Bases: GateImplementation

GateImplementation for the n-qudit barrier metaoperation.

Returns a schedule with zero-duration Block metainstructions. When this is appended to another Schedule, it causes the affected channels to be padded with Wait instructions to the same length, which in turn imposes a definite temporal order for the operations on different sides of the barrier (the ones preceding it are always executed first).

Note

Assumes that all instructions involve either the drive, flux or probe channels of the locus QPU components.

Parameters:
  • channels – channels related to the locus QPU components, to be blocked

  • parent (QuantumOp) –

  • name (str) –

  • locus (Locus) –

  • calibration_data (OILCalibrationData) –

  • builder (ScheduleBuilder) –

Module: iqm.pulse.gates.barrier

Attributes

symmetric

True iff the implementation is symmetric in its locus components.

Methods

duration_in_seconds

Duration of the Schedule of the gate implementation (in seconds).

symmetric: bool = True#

True iff the implementation is symmetric in its locus components. Only meaningful if arity != 1, and the locus components are of the same type.

_call()#

The GateImplementation-specific logic for implementing a quantum operation.

Inheriting classes may override this method if the default __call__() caching (based on the args & kwargs in the signature) is sufficient. Any additional caching may also be implemented inside this function if needed.

Return type:

TimeBox

duration_in_seconds()#

Duration of the Schedule of the gate implementation (in seconds).

Can be left unimplemented if the duration e.g. depends on the gate arguments. Subclasses can reimplement this method in case it makes sense in their context.

Return type:

float