Skip to content
Snippets Groups Projects
To find the state of this project's repository at the time of any of these versions, check out the tags.

Changelog

All notable changes to Pulselib will be documented in this file.

[1.6.26] - 2023-06-30

  • Fixed Qblox time offset bug in previous release.

[1.6.27] - 2023-07-@@@

  • Fixed retries on Keysight exceptions

[1.6.25] - 2023-06-30

  • Fixed merging of phase shift and MW pulse in conditional segment (Keysight_QS)
  • Fixed Qblox uploader with unaligned long pulses and gap between pulses.
  • Fixed Keysight release_all_awg_memory
  • Added measure till end of sequence (time trace feature)

[1.6.24] - 2023-06-19

  • Fixed Qblox uploader with unaligned pulses.

[1.6.23] - 2023-05-27

  • Fixed Keysight FPGA marker upload time rounding (Keysight and Keysight_QS).

[1.6.22] - 2023-05-23

  • Fixed QuantumSequencer (Keysight_QS) long pulses with post-phase shift.

[1.6.21] - 2023-05-17

  • Fixed Qblox uploader for unaligned MW pulses > 200 ns

[1.6.20] - 2023-05-08

  • Fixed Keysight digitizer configuration for time-traces
  • Added total_time to sequence and metadata

[1.6.19] - 2023-05-04

  • Fixed Qblox uploader
  • Fixed digitizer configuration for time-traces with Keysight uploaders

[1.6.18] - 2023-05-03

  • Added histograms to measurement parameter

[1.6.17] - 2023-05-02

  • Render pulses and ramps on Qblox with 1 ns resolution.
  • Removed segment_pulse.add_ramp(), because it gave too many errors.

[1.6.16] - 2023-04-19

  • Renamed idle frequency and reference frequency to qubit resonance frequency.
  • Allow overrule of qubit resonance frequency in sequence.
  • Added FrequencyUndefined for not-coherent pulsing with NCO frequency 0.0 between pulses.
  • Deprecate segment_pulse.add_ramp in favour of add_ramp_ss
  • Added configuration of digitizer to Keysight_QS uploader
  • Added at(index) to loop_obj to get value at sequence index.
  • Corrected phase for MW pulses on Qblox.
  • Added py.typed for mypy
  • Merge marker pulses if < 10 ns between pulses.

[1.6.15] - 2023-03-06

  • Fixed rounding errors on segment boundaries in Qblox uploader.
  • Qblox uploader assign IQ marker to sequencer of first qubit on IQ output.
  • Refactored IQ channel definition: pulse_lib.define_iq_channel()
  • Added lp.arange() similar to numpy.arange()

[1.6.14] - 2023-03-03

  • Fixed missing IQ marker around chirp

[1.6.13] - 2023-03-01

  • Fixed MeasurementMajority to work with pulse_templates.
  • Fixed DC compensation on Qblox.
  • Fixed some edge cases.

[1.6.12] - 2023-02-23

  • QuantumSequencer: split long constant waveforms in start and stop waveform.

[1.6.11] - 2023-02-17

  • Fixed measurement parameter for acquisition with accept_if not None

[1.6.10] - 2023-02-13

  • Round acquisition time towards zero in uploader
  • Fix for measurement expressions in sequence
  • Fix for simultaneous driving
  • Fixed majority vote in expression

[1.6.9] - 2023-02-06

  • Fixed acquire wait=True with n_repeat
  • Added checks on t_measure and sample rate in read_channels.
  • Fixed actual number of points and interval for acquisition: n_samples, interval = uploader.actual_acquisition_points(acquisition_channel, t_measure, sample_rate)
  • Replaced logging by logger

[1.6.8] - 2023-02-02

  • Fixed setpoints of measurement parameter for time traces > 2 seconds.
  • Fixed simultaneous pulses with indexing of segments on looping parameter.
  • Calculate timeout for get_acquisition_data from sequence.

[1.6.7] - 2023-02-01

  • Added continuous mode for Keysight AWG.

[1.6.6] - 2023-01-30

  • Fixed errors when slicing segments after adding dimension with update_dim.
  • Remove phase shifts of 0.0 rad before rendering.
  • Fixed error in KeysightQS with phase-shift after MW pulse.
  • Added tests.utils.last_upload.get_last_upload to analyze upload after exception

[1.6.5] - 2023-01-23

  • Fixed numpy deprecation of np.int and np.float.

[1.6.4] - 2023-01-19

Fixed

  • Qblox uploader overlapping pulses error

[1.6.3] - 2023-01-19

Added

  • parameter iq_mode to sequencer.get_measurement_parameter(), get_measurement_data(), Qblox fast scan
  • read_channels() to read digitizer channels without pulsing AWG. (Currently Qblox only)
  • Keysight AWG mock rendering at 10 GSa/s using digital filter setting.
  • acquire(... wait=True) to add wait time for acquisition.

Fixed

  • Timing of Keysight_QS with 2022 firmware
  • Keysight_QS rf_source bug
  • Fixed n_samples in measurement_param
  • Fixed Qblox sequence generation when no pulses on AWG channels

Removed

  • get_acquisition_param. It was deprecated for quite some time.

[1.6.2] - 2022-12-22

Added

  • pulselib.get_channel_attenuations()

Changed

  • Sequencer upload and play only retry upload after specific Keysight exception.
  • Chirp is stored as an instruction to be rendered by backend.

[1.6.1] - 2022-12-06

Added

  • start_times to measurement_description

Changed

  • measurement names do not have to be unique. A postfix makes them unique.

[1.6.0] - 2022-11-25

Attention !!

  • Digitizer trigger timing has been corrected for channel delays !!
  • Digitizer RF source API has changed.
  • Looping has been refactored to add functionality and improve performance.
  • Important internal interface changes are marked with [v1.6.0] in the code.

Added

  • Added segment_container.update_dim for looping with index
  • Added numpy array operations to looping variables
  • Added looping.array to loop over an arbitrary array of values
  • Added digitizer_channel.delay
  • Added prolongation_ns to RF source configuration
  • Added iq_complex to fast_scan1D_param and fast_scan2D_param

Changed

  • Changed set_digitizer_rf_source trigger_offset_ns to startup_time_ns.
  • Refactored looping and segment indexing:
    • Improved performance of looping arguments
    • Improved performance of segment_container.reset_time()
    • Improved performance of segment and segment_container indexing
    • Improved performance of sequence pre-rendering
    • Reduced memory usage
    • Added sanity checks on looping arguments
  • Added checks on frequency when rendering MW pulses

Removed

  • Removed segment_container append(), slice_time(), last_edit
  • Removed segment_IQ.add_global_phase()

Fixed

  • Fixed addition of 2 segment_containers to construct simultaneous driving
  • Tektronix marker on unused AWG channel
  • Measurement result inversion with zero_on_high
  • Multiple measurements on 1 channel with down-sampling

[1.5.6] - 2022-10-10

Fixed

  • Fixed error in measurement parameter when no shot is accepted

[1.5.5] - 2022-09-27

Fixed

  • Incorrect setpoints in measurement_param.add_derived_param.

[1.5.4] - 2022-09-23

Added

  • Added endpoint to looping.linspace, logspace and geomspace.
  • Added more data selection options to get_measurement_results()
  • Added addition of segment_containers to construct simultaneous driving
  • Added sequence_builder.add_simultaneous()

Changed

  • Do not add axis 'repetition' if sequencer.n_rep == None.

Fixed

  • Fixed set_acquisition with t_measure and sample_rate
  • Fixed get_measurement_param with iq_complex=False
  • Fixed high memory usage due to unlimited waveform cache.

[1.5.3] - 2022-08-05

Fixed

  • Fixed looping and HVI marker
  • Added retries to sequence upload and play

[1.5.2] - 2022-08-03

Fixed

  • sequencer.get_channel_data and get_measurement_param when using play() with index as done by core-tools.

[1.5.1] - 2022-08-03

Added

  • Added sequencer.plot()

Fixed

  • Fixed looping t_off of add_HVI_marker
  • Fixed plotting after mk_sequence

[1.5.0] - 2022-07-25

Added

  • Support for Qblox modules: QCM and QRM
  • Added sequencer.get_channel_data
  • Added sequencer.set_acquisition
  • Added sequencer.get_measurement_param with automatic upload/play and thresholding
  • Added sequencer.get_measurement_results
  • Added channel acquire(..., n_repeat= , interval= )
  • Added qblox_fast_scan 1D and 2D
  • Added digitizer configuring by M3202A_Uploader.

Changed

  • Default channel offset is None to allow configuration outside of pulselib

Fixed

  • Scaling of custom pulses with virtual gates. Custom function now always called with amplitude of original pulse.

[1.4.0] - 2022-05-17

Changed

  • Renamed Tektronix backend 'Tektronix_5014' after refactoring:
    • Faster and allow fast switching between multiple uploaded sequences.
    • Amplitude output has been corrected. It is 2x previous output. Correct attenuation per channel!!
    • Use sequence.play(release=False) to call play multiple times after a single upload.
    • Use infinite looping when n_rep > 65535

Added

  • Added sequencer.repetition_aligment to align the duration of the sequence with an external clock or signal frequency. (currently only implemented for Tektronix)
  • Added argument reset_time to wait()
  • Several pages of documentation (not finished yet..)

[1.3.5] - 2022-03-29

Fixed

  • Error when rendering section with low sample rate extends into segment with high sample rate.

[1.3.4] - 2022-03-23

Improved

  • QuantumSequencer use waveform with low sample rate for long DC compensation pulse.

[1.3.3] - 2022-03-14

Fixed

  • QuantumSequencer bugs in 1.3.2

[1.3.2] - 2022-03-14

Fixed

  • Fixed long wait (> 160 ms) for QuantumSequencer

Added

  • Added attribute 'values' to sequence loop parameters

[1.3.1] - 2022-03-07

Fixed

  • Fixed rendering of segments with different sample rates
  • Rendering of conditional segments with looping

[1.3.0] - 2022-02-22

Added

  • IQ correction of phase, amplitude and offset: add_channel_offset, set_qubit_correction_phase, set_qubit_correction_gain
  • New interface from hardware class to pulselib: set_channel_attenuations and add_virtual_matrix
  • Virtual matrix on top of virtual gates
  • Added hw schedule for UHFLI with Tektronix
  • Improved release_awg_memory (for Keysight AWG)

Removed

  • pulse.add_channel_compenstation_limit. Correct method is add_channel_compensation_limit

Fixed

  • loops with t_measurement in HVI variable.
  • release_awg_memory() for Keysight

[1.2.0] - 2021-11-11

First labeled release. Start of dev branch and change logging.