spinqick.core.awg_pulse

Module for adding commonly used arbitrary waveform pulses to a qickprogram.

Functions

add_predistorted_envelope(prog, ch, name, idata[, ...])

Apply predistortion to the pulses.

add_arb_wf(prog, ch, name, gain, pulse[, stdysel, ...])

Add an arbitrary waveform envelope and pulse to a qickprogram.

add_long_baseband(prog, ch, name, gain, soccfg)

Add a long baseband pulse to the program. This adds a pulse which simply goes to the

add_short_baseband(prog, ch, name, gain, length, soccfg)

Add a short baseband pulse to the program's pulse library. The duration of this pulse needs

add_ramp(prog, ch, name, gain_1, gain_2, ramp_time, soccfg)

Add a ramp waveform to the program's pulse library.

Module Contents

spinqick.core.awg_pulse.add_predistorted_envelope(prog, ch, name, idata, filter_sandwich=False)

Apply predistortion to the pulses.

Parameters:
  • prog (qick.asm_v2.QickProgramV2) – QickProgram to add pulse envelope to

  • ch (int) – channel to play pulse_envelope on

  • name (str) – pulse envelope name

  • idata (numpy.ndarray) – array pulse envelope values. This should be defined point-by-point at the dac sampling rate

  • filter_sandwich (bool) – if true, sandwich the envelope between two identical envelopes before applying predistortion, then remove the additional waveforms before adding to the pulse library.

spinqick.core.awg_pulse.add_arb_wf(prog, ch, name, gain, pulse, stdysel=qick_enums.Stdysel.ZERO, predistort=False, filter_sandwich=False)

Add an arbitrary waveform envelope and pulse to a qickprogram.

Parameters:
  • prog (qick.asm_v2.QickProgramV2) – QickProgram to add pulse envelope to

  • ch (int) – channel to play pulse_envelope on

  • name (str) – pulse envelope name

  • gain (float | qick.asm_v2.QickParam) – pulse gain. Can be a float or a QickParam if the user is defining a sweep.

  • stdysel (spinqick.helper_functions.qick_enums.Stdysel) – whether to set the DAC to stay at the value of the last point defined in the pulse

  • predistort (bool) – if true, applies predistortion filter to the pulse.

  • filter_sandwich (bool) – if true, sandwich the envelope between two identical envelopes before applying predistortion, then remove the additional waveforms before adding to the pulse library.

  • pulse (numpy.ndarray)

spinqick.core.awg_pulse.add_long_baseband(prog, ch, name, gain, soccfg)

Add a long baseband pulse to the program. This adds a pulse which simply goes to the specified gain and stays there until the next command on that channel.

Parameters:
  • prog (qick.asm_v2.QickProgramV2) – QickProgram to add pulse envelope to

  • ch (int) – channel to play pulse_envelope on

  • name (str) – pulse envelope name

  • gain (float | qick.asm_v2.QickParam) – pulse gain. Can be a float or a QickParam if the user is defining a sweep.

  • soccfg (qick.QickConfig) – the Qick Config associated with the user’s experiment.

spinqick.core.awg_pulse.add_short_baseband(prog, ch, name, gain, length, soccfg, stdysel=qick_enums.Stdysel.LAST, predistort=False, filter_sandwich=False)

Add a short baseband pulse to the program’s pulse library. The duration of this pulse needs to be short enough to fit into the qick waveform memory. This currently rounds the pulse length up to the next fabric clock cycle.

Parameters:
  • prog (qick.asm_v2.QickProgramV2) – QickProgram to add pulse envelope to

  • ch (int) – channel to play pulse_envelope on

  • name (str) – pulse envelope name

  • gain (float | qick.asm_v2.QickParam) – pulse gain. Can be a float or a QickParam if the user is defining a sweep.

  • length (float) – pulse length in microseconds

  • soccfg (qick.QickConfig) – the Qick Config associated with the user’s experiment.

  • stdysel (spinqick.helper_functions.qick_enums.Stdysel) – if “last”, the generator output will remain at “gain” until the next pulse is played on that channel.

  • predistort (bool)

  • filter_sandwich (bool)

spinqick.core.awg_pulse.add_ramp(prog, ch, name, gain_1, gain_2, ramp_time, soccfg, stdysel=qick_enums.Stdysel.LAST)

Add a ramp waveform to the program’s pulse library.

Parameters:
  • prog (qick.asm_v2.QickProgramV2) – QickProgram to add pulse envelope to

  • ch (int) – channel to play pulse_envelope on

  • name (str) – pulse envelope name

  • gain_1 (float) – pulse gain at start of pulse in RFSoC gain units

  • gain_2 (float) – pulse gain at end of pulse in RFSoC gain units

  • ramp_time (float) – duration of ramp in microseconds

  • soccfg (qick.QickConfig) – the Qick Config associated with the user’s experiment.

  • stdysel (spinqick.helper_functions.qick_enums.Stdysel) – if “last”, the generator output will remain at “gain_2” until the next pulse is played on that channel.