FluxPulseGateBase#

Module: iqm.pulse.gates.cz

class iqm.pulse.gates.cz.FluxPulseGateBase(parent, name, locus, calibration_data, builder)#

Bases: GateImplementation

Discrete arity-2 gate implemented using flux pulses, virtual RZs, and the interaction mediated by the coupler.

Does not have any gate args since it is discrete.

The two locus components of the gate must be connected via a tunable coupler.

Consists of a flux pulse for the coupler with one waveform, optional flux pulses for the locus components with another waveform, and virtual RZs on the locus drive channels.

Inherit from this class and assign waveforms to the coupler_wave and qubit_wave pulse slots to create a specific implementation.

Can be used as a base class for both CZ and MOVE gate implementations.

Note

The coupler and qubit pulses have the same duration (given in the calibration data), and in the special case of the duration being zero, the gate implementation will apply Block(0) instructions to all the channels where it would otherwise apply flux pulses or virtual z rotations.

Attributes

excluded_parameters

Parameters names to be excluded from self.parameters.

root_parameters

Parameters shared by all FluxPulseGateBase classes.

coupler_wave

Flux pulse waveform for the coupler flux AWG.

qubit_wave

Flux pulse waveform for the locus component flux AWGs.

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).

Parameters:
coupler_wave: type[Waveform] | None#

Flux pulse waveform for the coupler flux AWG.

qubit_wave: type[Waveform] | None#

Flux pulse waveform for the locus component flux AWGs.

root_parameters: dict[str, Parameter | Setting | dict] = {'duration': Parameter(name='', label='Gate duration', unit='s', data_type=<DataType.FLOAT: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None), 'rz': {'*': Parameter(name='', label='Z rotation angle', unit='rad', data_type=<DataType.FLOAT: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None)}}#

Parameters shared by all FluxPulseGateBase classes. Inheriting classes may override this if there’s a need for additional calibration parameters.

excluded_parameters: list[str] = []#

Parameters names to be excluded from self.parameters. Inheriting classes may override this if certain parameters are not wanted in that class (also parameters defined by the waveforms can be excluded).

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.cz.FluxPulseGateBase