Skip to content

Latest commit

 

History

History
551 lines (370 loc) · 17.2 KB

CHANGELOG.md

File metadata and controls

551 lines (370 loc) · 17.2 KB

Changelog

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

[1.7.36] - 2024-12-09

  • Better rendering of ramp in hres mode for ramp of 1 sample and duration < 1 ns.

[1.7.35] - 2024-12-05

  • Fixed rendering of ramp in hres mode for ramp of 1 sample and duration < 1 ns.

[1.7.34] - 2024-10-25

  • Fixed pulse shaping with scipy windows

[1.7.33] - 2024-10-23

  • Improved waveform partitioning in Qblox compiler to reduce memory usage.
  • Added range check on Qblox chirp.
  • Refactored/cleaned Qblox pulse generation
  • Update for qcodes 0.49

[1.7.32] - 2024-10-10

  • Optimized off resonant pulses for Qblox to use less memory.
  • Added optional, loopable kwargs to add_MW_pulse for AM and PM.
  • Require Python >= 3.10 and numpy >= 1.24, < 2.0
  • Remove HVI variables from segments.

[1.7.31] - 2024-09-25

  • Fixed bug in amplitude of pulses on real channels introduced in v1.7.29.

[1.7.30] - 2024-08-26

  • Added update_snapshot() to MeasurementParameter to allow custom snapshot data.
  • Added arguments of fast_scan and read_input to snapshot.
  • Fixed corner case bug in Qblox backend.
  • Fixed bug in time trace with parameter sweeps.
  • Small performance improvement in virtual matrix processing.

[1.7.29] - 2024-08-08

  • Big performance improvement in virtual matrix processing during compilation.

[1.7.28] - 2024-08-07

  • Fixed Keysight_QS for acquisitions > 2.1 s.
  • Fixed read_channels for Keysight_QS with t_measure > 2.1 s or > 4000 samples. Limit is now 42 s.
  • Added check on Qblox IQ marker timing.
  • Automatically adjust RF frequency for Keysight_QS resonator drive (3.8 kHz resolution).
  • Added checks on limits in read_channels for Qblox and Keysight.

[1.7.27] - 2024-07-24

  • Fix Keysight_QS with RF source and video mode
  • Removed accidentally committed print statements

[1.7.26] - 2024-06-07

  • Improved HW/SW threshold checking with configuration: pulse_lib.acquisition.measurement_converter.MeasurementConverter.ALLOWED_RELATIVE_THRESHOLD_DEVIATION pulse_lib.acquisition.measurement_converter.MeasurementConverter.ALLOWED_FRACTION_THRESHOLD_DIFFERENCES
  • Fixed error on feedback event insertion for Qblox.

[1.7.25] - 2024-06-03

  • Fixed timing of rf_source in continuous mode for Qblox.
  • Fixed exception in sub-nanosecond ramps for Qblox.
  • Fixed unit radians for phase in measurement parameter.
  • Allow multiple integration times on channel (if not using feedback on Qblox).

[1.7.24] - 2024-04-29

  • Fixed RF generation in video mode with Keysight_QS

[1.7.23] - 2024-04-18

  • Fixed adding (simultaneous) segments with multiple looping variables.

[1.7.22] - 2024-04-16

  • Fixed releasing jobs from uploader.
  • Small correction to DC compensation in Qblox fast scan 2D.

[1.7.21] - 2024-04-04

  • Added high resolution sine wave to Qblox.

[1.7.20] - 2024-03-26

  • Added RF generator to Keysight QS.

[1.7.19] - 2024-03-26

  • Fix define_digitizer_channel_iq: add RF parameters.

[1.7.18] - 2024-03-21

  • Fix error check on RF frequency sweep

[1.7.17] - 2024-03-21

  • Added scan_resonator_frequency for fast digitizer/rf_source frequency sweep on Qblox.
  • Log warning when sequence run duration > 3 s.

[1.7.16] - 2024-03-13

  • Use AWG channel attenuation for Keysight QS sequences.

[1.7.15] - 2024-03-13

  • Added oscillator triggering for QS mode.

[1.7.14] - 2024-03-11

  • Clear sequencer memory in FPGA when Keysight_QS is configured.

[1.7.13] - 2024-03-08

  • Performance improvement in MW pulse processing. (30% gain in precompile of randomized benchmarking.)

[1.7.12] - 2024-03-07

  • Modified Keysight_QS backend to drive qubits without MW source using plunger and barrier gates.

[1.7.11] - 2023-12-20

  • Added RF parameters frequency, source_amplitude and phase
  • Added set_default_hw_schedule for Keysight and Tektronix
  • Validate channel names
  • Fixed unit of phase setting for Keysight RF demodulation [rad]

[1.7.10] - 2023-12-14

  • Fixed acquisition to allow simultaneous acquisition by combining segments (QConstruct simultaneous)
  • Added update_end(stop) to segment to extend segment till at least stop.

[1.7.9] - 2023-12-07

  • Fixed Qblox feedback for multiple measurements (requires Q1Pulse v0.11.5)

[1.7.8] - 2023-12-04

  • Added high resolution rendering of ramps on voltage channels (Qblox)
  • Added hres rendering of sine waves on voltage channels (Keysight and Tektronix)
  • Added checks on IQ channel configuration.
  • Added Keysight AWG RF oscillator control
  • Allow n_rep = None also for Keysight
  • Fixed issue with bad aligned custom_pulse followed by ramp of > 1000 points.
  • Added pre-pulses to Qblox fast scan.

[1.7.7] - 2023-10-17

  • Corrected fix for mixed measurement assignments and raw measurements in measurement processing.

[1.7.6] - 2023-10-17

  • Fix mixed measurement assignments and raw measurements in measurement processing.

[1.7.5] - 2023-10-13

  • Fixed looping of keyword arguments. (It was broken by the performance update of v1.7)
  • Removed digitizer triggering using add_HVI_marker (Keysight)

[1.7.4] - 2023-10-10

  • Fixed Qblox hardware/software threshold data check.
  • Raise clearer exception when a state threshold is applied on time trace data.
  • Set defaults selectors=False and accept_mask=False for get_measurement_results and get_measurement_param

[1.7.3] - 2023-09-20

  • Added sequencer.recompile to quickly update an existing sequence when the virtual gate matrix has changed
  • Corrected qblox version check for marker inversion.

[1.7.2] - 2023-09-06

  • Use Qblox input channel selection if qblox-instruments v0.11 installed
  • Compare results of hardware and software thresholding

[1.7.1] - 2023-09-04

  • Fixed M4i acquisition data shape
  • Qblox feedback corrected for input gain
  • Qblox feedback rotation convert radians to degrees

[1.7.0] - 2023-08-30

  • Added conditional segments for Qblox (requires qblox-instruments v0.9+)
  • Added M4i digitizer control to pulse-lib
  • Added IQ demodulation to M4iControl
  • Performance improvement of 10% up to 5 times in compilation.
  • Added looping on segment.sample_rate
  • Added aggregate_func to aggregate n samples of 1 measurement to a single value with a user defined function.
  • Improved accuracy of hres ramps for Keysight (error is now ~10 ps).
  • Do not add DC compensation pulse for Qblox if it is too small. This avoids uploads of sequences that do nothing.

[1.6.34] - 2023-08-29

  • Improved operations on multi-dimensional looping functions

[1.6.33] - 2023-08-17

  • Fixed IQ output of qblox_fast_scan

[1.6.32] - 2023-08-10

  • Removed add_HVI_marker and add_HVI_variable from segment channels. Huge performance improvement for GST and RB. Overhead O(N^2) -> O(N)

[1.6.31] - 2023-07-28

  • Added reload_seq=True to Qblox fast scan 1D and 2D for external sweeps modifying pulse-lib settings
  • Fixed data returned by acquisition parameter when no shot is accepted.
  • Fixed attenuation qubit channel for Qblox
  • Fixed baseband qubit channel for Qblox

[1.6.30] - 2023-07-20

  • Removed digitizer resonator drive amplitude sweep feature for Qblox. It broke functionality.

[1.6.29] - 2023-07-19

  • Fixed setting of digitizer demodulation frequency and resonator drive amplitude for Qblox.

[1.6.28] - 2023-07-13

  • Fixed Qblox uploader

[1.6.27] - 2023-07-10

  • Fixed retries on Keysight exceptions
  • Fixed rendering stacked and/or unaligned sine and custom pulses for Qblox
  • Render wave of add_sin() with phase starting at start of wave, i.e. independent of start time of pulse.

[1.6.26] - 2023-06-30

  • Fixed Qblox time offset bug in previous release.

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