RZ_Virtual#

Module: iqm.pulse.gates.rz

class iqm.pulse.gates.rz.RZ_Virtual(parent, name, locus, calibration_data, builder)#

Bases: GateImplementation

Implementation of the RZ gate using the virtual z rotation technique.

Implements the RZ gate on a specific qubit using a VirtualRZ instruction, which simply changes the phase of the local oscillator driving that qubit. This requires no calibration data as of now. The generated VirtualRZ instruction has the shortest possible duration allowed by the instruments.

The virtual z rotation method is based on algebraically commuting the RZ gates towards the end of the circuit, until they hit a measurement operation, at which point they are eliminated. It assumes that

  1. all the multi-qubit gates in the circuit commute with arbitrary RZ gates (this holds e.g. for CZ since it is diagonal),

  2. measurements are projective and happen in the z basis, so that RZ gates that immediately precede them do not affect the measurement result or the state after the measurement, and thus can be removed, and

  3. conjugating the single-qubit gates in the circuit with RZ is equivalent to incrementing the phase of the drive (holds for PRX),

    \[R_\phi(\theta) R_z(\alpha) = R_z(\alpha) R_{\phi - \alpha}(\theta),\]

    which can be accomplished either by incrementing the phase of the local oscillator of the drive channel, or incrementing the phases of all the IQPulse s following it on the drive channel.

If all these assumptions hold we may implement an RZ gate using a VirtualRZ instruction, with phase_increment equal to the negated rotation angle.

Parameters:
  • channel – name of the drive channel on which the VirtualRZ acts

  • duration – time duration of the VirtualRZ instruction, in seconds

  • parent (QuantumOp)

  • name (str)

  • locus (Locus)

  • calibration_data (OILCalibrationData)

  • builder (ScheduleBuilder)

Attributes

parameters

Required calibration data, may be nested

id

Unique str identifier, needed for certain caching properties.

sub_implementations

Single-component sub-implementations for factorizable gates with len(locus) > 1, otherwise empty.

Methods

duration_in_seconds

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

locus_mapping_function

One-component loci with virtual drive capability.

locus_mapping_function()#

One-component loci with virtual drive capability.

Parameters:

sp (StationProperties)

Return type:

dict[tuple[str, …], tuple[str, …]]

parameters: dict[str, Parameter] = {}#

Required calibration data, may be nested

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

Inheritance

Inheritance diagram of iqm.pulse.gates.rz.RZ_Virtual