Release Notes
Release 2.2.0
Release date 21.03.2023
Notes & Important Changes
-
LabOne Q release 2.2 requires version 23.02 of LabOne. Please download the latest release of LabOne from the Zurich Instruments Download center and make sure to update the firmware of all your instruments through the GUI before using them together with this release. Since also the core Python API has been updated with this release, we recommend to use a fresh Python environment when installing LabOne Q 2.2. For instructions, see the section on installation.
Functionality
-
Enabled the new scheduler by default. If required, it is still possible to use the legacy scheduler, by using the
compiler_settings={"USE_EXPERIMENTAL_SCHEDULER": False}
argument atsession.compile()
. -
Added a new
Experiment.measure()
method, unifying the readout pulse playback and acquire command for more streamlined experiment design. -
Enable the use of markers for signal lines of type
iq_signal
on SHFSG and HDAWG. Use themarker
argument of the play command to enable specific marker channels during the playback of that pulse. -
Enable phase increments with the command table on HDAWG and SHFSG, significantly reducing the amount of waveforms required when changing pulse phases.
-
Increased efficiency when accessing the internal data structures used in the compiler, see also https://github.com/zhinst/laboneq/issues/19. This will speed up compilation times especially for experiments using a large number of sections.
-
Added methods to display pulse functionals directly in your notebook and analyze the expected response of a qubit as a function of its frequency. Have a look at this example notebook for how to use them.
Bug Fixes
-
Fixed an issue with the pulse sheet viewer not displaying any data, related to https://github.com/zhinst/laboneq/issues/28.
-
Fixed an issue with the generation of pulse sheets for some experiments, related to https://github.com/zhinst/laboneq/issues/29.
-
Fixed a rare failure in the event scheduler for certain experiments.
Deprecation notice
-
Python 3.7 and 3.8 support is deprecated and will be removed in a future major release. It is recommended to upgrade to Python 3.9 or newer.
-
The descriptor keyword "instrument_list" has been replaced by "instruments" for consistency.
Known Issues
-
When using LabOne 23.02 with a version below 23.02.41959, playback on SHFSG and SHFQA channels may be misaligned by 4 ns. Contact us to get the latest patch release, in case it is not yet available on the website.
-
When running CW resonator spectroscopy with an SHFQA or SHFQC, it is necessary to set the
port_delay
calibration of the used acquire line to 250 ns. Have a look at the basic_experiments notebook for an example. -
When delaying logical signal lines of type
rf_signal
via thedelay_signal
calibration property, all rf_signals on the same AWG must be set to the same delay. -
When delaying logical signal lines on the SHFQA via the
delay_signal
calibration property, the delays for the measure and acquire line must be the same; the measure pulse delay is not added to the acquire pulse delay as on the UHFQA. We recommend to useport_delay
for now. -
When creating a section with very short content (below the device’s minimum waveform length), the compiler may fail to map the experiment to valid SeqC, and will generate an error. As a workaround, manually add delays to the sequence.
Release 2.1.0
Release date 02.03.2023
Notes & Important Changes
Functionality
-
Added a new scheduler for experiments. Currently this is not yet enabled by default, to enable use
compiler_settings={"USE_EXPERIMENTAL_SCHEDULER": True}
withinsession.compile()
. -
Added the option to fix a section to the signal grid of the used device setup. Use the parameter
section(on_system_grid=True)
to force the section to start and end on the system grid. This can be useful in special cases where sequencer commands need to align to section boundaries. -
When compiler setting
<device>_MIN_PLAYWAVE_HINT
is not multiple of device samples, it is now rounded up to the closest matching value instead of raisingAssertionError
. -
Introduced a check and meaningful error message to catch unsupported use of sweep parameters at an early stage. As an example trying to sweep an amplitude in a near-time loop will trigger the exception.
Bug Fixes
-
Fixed a bug where putting a
match
/case
statement within a sweep loop failed. -
Fixed a bug where using a
SweepParameter
as apulse_parameter
of a pulse functional led to a compiler exception when running the experiment more than once. -
Fixed a bug where unnecessary oscillator switching events where issued when multiple hardware oscillators on the same physical channel where used.
-
Fixed a bug that did not allow to set an experimental calibration when the underlying logical signal calibration was not defined.
Release 2.0.0
Release date 17.02.2023
Notes & Important Changes
Functionality
-
Added support for adding instruments to the setup descriptor without any signal lines specified. For such instruments, a data server connection will be established when calling
session.connnect()
such that they are available to use with toolkit from within LabOne Q. -
Added support for specifying one or multiple data servers in the setup descriptor.
-
Added direct support for virtual z-gates without playing a pulse at the same time. Use
Experiment.play(pulse=None, increment_oscillator_phase=z_gate_phase)
to increment the phase by a given value orExperiment.play(pulse=None, set_oscillator_phase=new_phase)
to set the absolute oscillator phase. -
Increased the number of sweep steps that are supported for a real-time frequency sweep on the HDAWG to 512.
-
Changed the compiler settings for the SHFSG to use command table by default and shorten the minimal waveform length from 1024 to 64. This should allow more efficient use of the waveform and instruction memory of the instrument. Refer to Tips & Tricks for more information on how to modify these settings.
Bug Fixes
-
Fixed a bug where real-time frequency sweeps failed when using a software oscillator.
-
Fixed a bug where a trigger node address on the SHFQA was incorrect.
API changes
-
Removed deprecated
Session.run_all()
, useSession.run()
instead. -
Removed deprecated
Session.set()
andSession.get()
. -
Removed deprecated
offset
argument fromlaboneq.dsl.experiment.Experiment.section()
method. -
Removed deprecated
pass_v3_to_compiler
argument fromSession
. The argument had no functionality. -
Renamed
Experiment.set()
toExperiment.set_node()
& removed thekey
argument. -
Removed
do_simulation
argument fromSession.run()
. The functionality is replace withlaboneq.simulator.output_simulator.OutputSimulator
. -
Removed
max_simulation_time
instance variable fromSession
.
Release 1.7.0 - Stable release
Release date 02.02.2023
Notes & Important Changes
Functionality
-
Enabled real-time frequency sweeps on HDAWG. Due to technical limitations on this instrument, the number of real-time sweep steps is currently limited to a maximum of 401.
-
Introduced an error message if a duplicate section id is used in the experiment.
Bug Fixes
-
Fixed a bug where waveform replacement with pulse functionals that use the same parameter names did not work as expected.
-
Fixed a bug where waveforms were scaled incorrectly for playback in branching sections, leading to clipped output.
-
Fixed a bug where using pass in one arm of a match-case statement could have triggered a mixed-signals compiler error.
Documentation
-
Added a demonstration of real-time feedback on SHFQC. This notebook emulates active qubit reset and uses two different readout pulses to simulate the different qubit states. In the example code, the state discrimination parameters are first calibrated using optimal integration weights and the result is then used to demonstrate real-time feedback based on an arbitrary pattern of simulated qubit states.
Deprecation notice
-
The next upcoming release will remove some API functionality:
-
session.run_all(experiment)
- usesession.run(experiment)
instead -
the
offset
argument ofsection
- use either constantlength
for the section orRepetitionMode.CONSTANT
in the outer acquisition loop -
session.set()
andsession.get()
- in user functions, use the toolkit functionality to read out and set node values instead -
experiment.set()
will be renamed toexperiment.set_node()
and itskey
parameter will be removed -
simulation of the output signals via the
do_simulation
parameter ofsession.run()
as well as theoutput_signals
property of the compiled experiment - use the newOutputSimulator
class instead, as demonstrated in this example notebook
-
Release 1.6.0
Release date 12.01.2023
Notes & Important Changes
Functionality
-
Added support for waveform replacement on single rf_lines on HDAWG, see Issue 12.
-
Added a user-accessible compiler setting to change the resolution of phase setting when software modulation is used. Use
compiler_settings={"PHASE_RESOLUTION_BITS": number_of_bits}
, default is 12 bits of resolution.
Bug Fixes
-
Fix for bug "SHFQC: Number of measurements executed do not match defined", where the number of measurements executed on a SHFQC was not as expected.
-
Fixed a bug where the length setting in a play command was silently ignored if it was not a
SweepParameter
. -
Fixed a bug where delays at the end of loops were silently ignored.
-
Fixed a bug where raw readout on the SHFQA did not give reproducible results.
Release 1.5.0
Release date 15.12.2022
Notes & Important Changes
-
Introduced a
voltage_offset
calibration property for logical signals of typerf_signal
- use this to apply offsets to your single channel signals on the HDAWG.
Bug Fixes
-
Fixed an issue when deserializing pulse functionals without a
mixer_type
argument specified. When not specified, themixer_type
now defaults toIQ
. -
Fixed a bug where, when using software modulation, not all uploaded waveforms were properly modulated.
-
Fixed a bug where the raw readout results on the SHFQA depended on previous signals and did not always reflect the current state of the measurements.
-
Fixed a bug with phase increments of software modulated signals - the resolution of allowed increments was chosen too small, this will be a user accessible setting in the future.
-
Fixed a problem with the new output simulation not working properly for signals on SHFSG and SHFQA.
Release 1.4.0
Release date 01.12.2022
Notes & Important Changes
Functionality
-
Implemented a new, faster and more versatile output simulator. For examples on how to use it, see this example notebook.
-
Added the possibility to change output and input range settings on all channels of HDAWG and UHFQA instruments. Use the
range
calibration property of any logical signal or physical channel to set these values. -
Implemented a new, more responsive pulse sheet viewer. As before use
show_pulse_sheet("my_experiment", my_compiled_experiment)
to generate an overview of events on all logical signals in a compiled experiment. -
Further improved the speed of saving and loading any LabOne Q data objects.
Release 1.3.0
Release date 17.11.2022
Notes & Important Changes
Functionality
-
Added initial support for using trigger outputs, through the
trigger
argument ofsection
- feedback welcome! -
Replaced
awg_module
by the new LabOne standalone compiler, increasing the speed of session connection, sequencer code compilation and upload. -
Because of the switch to the standalone compiler, LabOne 22.08 or later is required to run LabOne Q 1.3.0
-
Changed the way software modulation is applied to pulses on the UHFQA for consistency between UHFQA and SHFQA - this change may require recalibration of integration weights and thresholds on UHFQA setups after upgrading LabOne Q
Documentation
-
Added example notebook demonstrating playback of consecutive signals with different hardware modulation frequencies on SHFSG channels with the command table
Bug fixes
-
Fix to improve compilation speed for sequential averaging - https://github.com/zhinst/laboneq/issues/6
Release 1.2.0
Release date 03.11.2022
Notes & Important Changes
-
Added support for multiplexing of HW modulated signals on SHFSG. If your application would benefit from this feature, please contact us so that we can help you implement it.
-
Improved pulse library. Users can now easily extend the range of available pulse types by creating their own library. Our own standard library has been expanded as well, and will continue to grow in the future. A tutorial on our GitHub repository explains the most important features.
-
Pre-compensation is now configured via signal calibration. Delays are adapted accordingly.
Release 1.1.0
Release date 20.10.2022
Notes & Important Changes
-
Improved serialization and deserialization performance. Long arrays (e.g. waveforms) are now stored as binary blobs, reducing the size of generated JSON files.
-
The
gaussian_q
pulse shape has been removed. For generating a Gaussian pulse on the Q channel, usegaussian(amplitude=1j)
instead.
Patch Release 1.0.2
Release date 03.10.2022
Notes & Important Changes
-
Introduced an access token required for running LabOne Q during an initial managed beta phase. Please visit https://www.zhinst.com/ch/en/install-labone-q-today to get your access token today!
-
Fixed an issue with the assignment of center frequencies for the signal generator channels on an SHFQC
Release 1.0.0
Release date 27.09.2022
Notes & Important Changes
-
QCCS Software has been renamed to LabOne Q
-
LabOne Q now depends on LabOne release 22.08. We strongly recommend to perform a fresh install into a clean Python environment to ensure no clash of dependencies. Please also update the firmware of all devices to use to the newest version.
-
It is no longer possible to specify a too short repetition length when using
RepetitionMode.CONSTANT
, an exception will be raised in this case. -
Hardware oscillator phase reset commands can now be issued for every iteration of sweep and averaging loops through the new parameter
reset_oscillator_phase
to make phases reproducible within each sweep step and averaging iteration. This new behavior is disabled by default. -
The pulse length can now be swept as parameter of the Experiment.play command.
-
The parameters
phase
,set_oscillator_phase
andincrement_oscillator_phase
of the Experiment.play command can now be swept.
Release 0.68
Release date 08.09.2022
Notes & Important Changes
-
The device setup now offers a new
physical_channel_groups
attribute. This new API complementslogical_signal_groups
, and allows more straightforward access to parameters of physical ports on each device, including when they are shared across multiple logical signals. -
The
CompiledExperiment
class now has a publicly exposed API for serialization to JSON. -
Setting
do_simulation=True
insession.run()
no longer leads to an error.
Release 0.67
Release date 25.08.2022
Notes & Important Changes
-
The SHFQC can now be used as a standalone instrument, without the need for a PQSC.
-
State discrimination can be used on the SHFQA. To use, set the new threshold property on the logical signal used for data acquisition and set
AcquisitionType.DISCRIMINATION
within the acquire loop. -
Using
session.set(node_address, value)
andsession.get(node_address)
, it is now possible to set and read out the values of any instrument node from within a connected session directly. -
Using
session.devices[device_id]
in a connected session returns a toolkit device object that enables to address the device directly using the same functionality know from the toolkit python package. For details on how to use the device object, please refer to the toolkit documentation at https://docs.zhinst.com/zhinst-toolkit/en/latest/ -
It is now possible to specify negative amplitudes in a sweep parameter
-
There are now two different ways to access the results object generated when running an experiment. The property
session.results
delivers a reference to the results object within the session and can be used e.g. from within user functions when reading out partial results. Callingsession.get_results()
returns a deep copy of the results object from within the session, to be used for saving the results.session.run(experiment)
by default returns the reference viasession.results
. -
In a near-time loop if any sweep steps exits with an error, it is now retried once and subsequently skipped at repeated error. The rest of the experiment may be executed normally.
-
For experiments that generate a lot of waveforms on the HDAWG it was possible in rare cases that waveform playback was not possible seamlessly due to memory restrictions on the instrument. This behavior is now detected by QCCS SW and reported as an error to the user, so the experiment can be redesigned.
Release 0.65
Release date 28.07.2022
Notes & Important Changes
-
Waveform replacements of pulses works on all devices
-
SW modulation and HW modulation yield the same output on all devices
-
Mandatory first argument to the
Experiment.call(…)
/Section.call(…)
was renamed fromfunc
tofunc_name
- this need to be adjusted in user code, if passed as named and not positional argument
Release 0.64
Release date 14.07.2022
Notes & Important Changes
-
Session.run()
now accepts both compiled and raw experiments.Session.run_all()
has been deprecated and will be removed in a future version. -
The output simulator does no longer run automatically when an experiment is executed. Trigger it manually by supplying
do_simulation=True
toSession.compile()
orSession.run()
. -
The output simulation can also be started without a session, by calling the
CompiledExperiment.simulate_outputs()
method. -
The simulated output signals are now stored as part of the compiled experiment, and no longer directly as part of the results object. Find them in
CompiledExperiment.output_signals
with the same internal structure as previously. -
The built-in result plotter (
qccs.simple.Plotter
) has been removed. For examples of how to access and plot the simulated output signals, see the example notebooks. -
Mixer calibration on the HDAWG has been reworked and stabilized. This has not yet been extensively tested, feedback is welcome.
Release 0.62
Release date: 17.06.2022
Notes & Important Changes
-
Real-time frequency sweeps for resonator spectroscopy are now possible on SHFQA. Limitations apply, see below.
-
Small system support: A single HDAWG or SHFSG device can be used without a PQSC as a standalone device.
-
Waveforms in real-time loops can be exchanged to another one with the same length via a user function.
-
Integration kernels on SHFQA had inverted frequency compared to the readout pulse before, this has been corrected in this release - might require changes to user code
-
It is no longer possible to mix UHFQA and SHF instruments in the same experiment
-
Each near time execution step now has an automatic timeout implemented, based in the calculated real-time execution time of the step - this is to catch and prevent rare interrupts in execution
Release 0.61
Release date: 03.06.2022
Notes & Important Changes
-
Support for standalone SHFSG operation
-
In a setup with an SHF instrument (SHFSG, SHFQA,…), the HDAWG sampling rate is switched to 2.0 GSa/s, allowing for a tighter combined section grid
-
Consecutive Sections with signals on only one instrument can have arbitrary lengths now and are not bound to the common section grid