qblox_scheduler.operations.hardware_operations.pulse_library#

Standard pulse-level operations for use with the qblox_scheduler.

Classes#

LatchReset

Operation that resets the feedback trigger addresses from the hardware.

SimpleNumericalPulse

Wrapper on top of NumericalPulse to provide a simple interface for creating a pulse

RFSwitchToggle

Turn the RF complex output on for the given duration.

Module Contents#

class LatchReset(portclock: tuple[str, str], t0: float = 0, duration: float = 4e-09)[source]#

Bases: qblox_scheduler.operations.operation.Operation

Operation that resets the feedback trigger addresses from the hardware.

Currently only implemented for Qblox backend, refer to ResetFeedbackTriggersStrategy for more details.

class SimpleNumericalPulse(samples: numpy.ndarray | list, port: str, clock: str = BasebandClockResource.IDENTITY, gain: complex | float | operations.expressions.Expression | collections.abc.Sequence[complex | float | operations.expressions.Expression] = 1, reference_magnitude: qblox_scheduler.operations.pulse_library.ReferenceMagnitude | None = None, t0: float = 0)[source]#

Bases: qblox_scheduler.operations.pulse_library.NumericalPulse

Wrapper on top of NumericalPulse to provide a simple interface for creating a pulse where the samples correspond 1:1 to the produced waveform, without needing to specify the time samples.

Parameters:
  • samples – An array of (possibly complex) values specifying the shape of the pulse.

  • port – The port that the pulse should be played on.

  • clock – Clock used to (de)modulate the pulse. By default the baseband clock.

  • gain – Gain factor between -1 and 1 that multiplies with the samples, by default 1.

  • reference_magnitude – Scaling value and unit for the unitless samples. Uses settings in hardware config if not provided.

  • t0 – Time in seconds when to start the pulses relative to the start time of the Operation in the TimeableSchedule.

Example

from qblox_scheduler.operations.hardware_operations.pulse_library import (
    SimpleNumericalPulse
)
from qblox_scheduler import TimeableSchedule

waveform = [0.1,0.2,0.2,0.3,0.5,0.4]

schedule = TimeableSchedule("")
schedule.add(SimpleNumericalPulse(waveform, port="q0:out"))
{'name': '64a2449e-8e71-4500-8cad-f03e69106060', 'operation_id': '8010944609269815361', 'timing_constraints': [TimingConstraint(ref_schedulable=None, ref_pt=None, ref_pt_new=None, rel_time=0)], 'label': '64a2449e-8e71-4500-8cad-f03e69106060'}
class RFSwitchToggle(duration: float, port: str, clock: str)[source]#

Bases: qblox_scheduler.operations.operation.Operation

Turn the RF complex output on for the given duration. The RF ports are on by default, make sure to set rf_output_on to False to turn them off.

Parameters:
  • duration – Duration to turn the RF output on.

  • port – Name of the associated port.

  • clock – Name of the associated clock. For now the given port-clock combination must have a LO frequency defined in the hardware configuration.

Examples

Partial hardware configuration to turn the RF complex output off by default to be able to use this operation.

hardware_compilation_config = {
    "config_type": QbloxHardwareCompilationConfig,
    "hardware_description": {
        "cluster0": {
            "instrument_type": "Cluster",
            "modules": {
                "0": {"instrument_type": "QCM_RF", "rf_output_on": False},
                "1": {"instrument_type": "QRM_RF", "rf_output_on": False},
            },
        },
    },
}