qblox_scheduler.operations.hardware_operations.pulse_factories#
Module containing factory functions for pulses on the quantum-device layer.
These factories take a parametrized representation of an operation and create an instance of the operation itself. The created operations make use of Qblox-specific hardware features.
Functions#
|
Create a long square pulse using DC voltage offsets. |
|
Create a long chirp pulse using SetClockFrequency. |
|
Create a staircase-shaped pulse using DC voltage offsets. |
|
Creates a long ramp pulse by stitching together shorter ramps. |
Module Contents#
- long_square_pulse(amp: complex | qblox_scheduler.operations.variables.Variable | collections.abc.Sequence[float | qblox_scheduler.operations.variables.Variable], duration: float, port: str, clock: str = BasebandClockResource.IDENTITY, t0: float = 0, reference_magnitude: qblox_scheduler.operations.pulse_library.ReferenceMagnitude | None = None) qblox_scheduler.schedules.schedule.TimeableSchedule[source]#
Create a long square pulse using DC voltage offsets.
Warning
This function creates a
TimeableScheduleobject, containing a combination of voltage offsets and waveforms. Overlapping Schedules with VoltageOffsets in time on the same port and clock may lead to unexpected results.- Parameters:
amp (float) – Amplitude of the envelope.
duration (float) – The pulse duration in seconds.
port (str) – Port of the pulse, must be capable of playing a complex waveform.
clock (str, Optional) – Clock used to modulate the pulse. By default the baseband clock.
t0 (float, Optional) – Time in seconds when to start the pulses relative to the start time of the Operation in the TimeableSchedule. By default 0.
reference_magnitude (Optional) – Scaling value and unit for the unitless amplitude. Uses settings in hardware config if not provided.
- Returns:
TimeableSchedule A Schedule object containing an offset instruction with the specified amplitude.
- Raises:
ValueError – When the duration of the pulse is not a multiple of
grid_time_ns.
- long_chirp_pulse(amp: float, duration: float, port: str, start_freq: float, end_freq: float, clock: str = BasebandClockResource.IDENTITY, t0: float = 0, part_duration_ns: int = constants.STITCHED_PULSE_PART_DURATION_NS, reference_magnitude: qblox_scheduler.operations.pulse_library.ReferenceMagnitude | None = None) qblox_scheduler.schedules.schedule.TimeableSchedule[source]#
Create a long chirp pulse using SetClockFrequency.
- Parameters:
amp (float) – Amplitude of the envelope.
duration (float) – The pulse duration in seconds.
port (str) – Port of the pulse, must be capable of playing a complex waveform.
start_freq (float) – Start frequency of the Chirp. Note that this is the frequency at which the waveform is calculated, this may differ from the clock frequency.
end_freq (float) – End frequency of the Chirp.
clock (str, Optional) – Clock used to modulate the pulse. By default the baseband clock.
t0 (float, Optional) – Time in seconds when to start the pulses relative to the start time of the Operation in the TimeableSchedule. By default 0.
part_duration_ns (int, Optional) – Chunk size in nanoseconds.
reference_magnitude (Optional) – Scaling value and unit for the unitless amplitude. Uses settings in hardware config if not provided.
- Returns:
TimeableSchedule A TimeableSchedule object describing a chirp pulse.
- Raises:
ValueError – When the duration of the pulse is not a multiple of
grid_time_ns.
- staircase_pulse(start_amp: float, final_amp: float, num_steps: int, duration: float, port: str, clock: str = BasebandClockResource.IDENTITY, t0: float = 0, min_operation_time_ns: int = constants.MIN_TIME_BETWEEN_OPERATIONS, reference_magnitude: qblox_scheduler.operations.pulse_library.ReferenceMagnitude | None = None) qblox_scheduler.schedules.schedule.TimeableSchedule[source]#
Create a staircase-shaped pulse using DC voltage offsets.
This function generates a real valued staircase pulse, which reaches its final amplitude in discrete steps. In between it will maintain a plateau.
Warning
This function creates a
TimeableScheduleobject, containing a combination of voltage offsets and waveforms. Overlapping Schedules with VoltageOffsets in time on the same port and clock may lead to unexpected results.- Parameters:
start_amp (float) – Starting amplitude of the staircase envelope function.
final_amp (float) – Final amplitude of the staircase envelope function.
num_steps (int) – The number of plateaus.
duration (float) – Duration of the pulse in seconds.
port (str) – Port of the pulse.
clock (str, Optional) – Clock used to modulate the pulse. By default the baseband clock.
t0 (float, Optional) – Time in seconds when to start the pulses relative to the start time of the Operation in the TimeableSchedule. By default 0.
min_operation_time_ns (int, Optional) – Min operation time in ns. The duration of the long_square_pulse must be a multiple of this. By default equal to the min operation time time of Qblox modules.
reference_magnitude (Optional) – Scaling value and unit for the unitless amplitude. Uses settings in hardware config if not provided.
- Returns:
TimeableSchedule A Schedule object containing incrementing or decrementing offset instructions.
- Raises:
ValueError – When the duration of a step is not a multiple of
grid_time_ns.
- long_ramp_pulse(amp: float, duration: float, port: str, offset: float = 0, clock: str = BasebandClockResource.IDENTITY, t0: float = 0, part_duration_ns: int = constants.STITCHED_PULSE_PART_DURATION_NS, reference_magnitude: qblox_scheduler.operations.pulse_library.ReferenceMagnitude | None = None) qblox_scheduler.schedules.schedule.TimeableSchedule[source]#
Creates a long ramp pulse by stitching together shorter ramps.
This function creates a long ramp pulse by stitching together ramp pulses of the specified duration
part_duration_ns, with DC voltage offset instructions placed in between.Warning
This function creates a
TimeableScheduleobject, containing a combination of voltage offsets and waveforms. Overlapping Schedules with VoltageOffsets in time on the same port and clock may lead to unexpected results.- Parameters:
amp (float) – Amplitude of the ramp envelope function.
duration (float) – The pulse duration in seconds.
port (str) – Port of the pulse.
offset (float, Optional) – Starting point of the ramp pulse. By default 0.
clock (str, Optional) – Clock used to modulate the pulse, by default the baseband clock.
t0 (float, Optional) – Time in seconds when to start the pulses relative to the start time of the Operation in the TimeableSchedule. By default 0.
part_duration_ns (int, Optional) – Duration of each partial ramp in nanoseconds, by default
STITCHED_PULSE_PART_DURATION_NS.reference_magnitude (Optional) – Scaling value and unit for the unitless amplitude. Uses settings in hardware config if not provided.
- Returns:
TimeableSchedule A
TimeableSchedulecomposed of shorter ramp pulses with varying DC offsets, forming one long ramp pulse.