Skip to content

Previous Versions

Release 2.24.0

Release date 09.02.2024

Notes & Important Changes

Functionality

  • Updated dependencies to the newest LabOne 24.01. Please see the installation instructions for a link and explanation how to update your LabOne version. It is recommended to do a clean new install of LabOne Q to ensure all your dependencies are properly updated. Additionally, a firmware update of all your instruments from within the LabOne UI will be required after updating to LabOne 24.01.
  • Added support for the pipeliner feature on SHFSG, SHFQA, SHFQC and HDAWG instruments. If your experiment is not properly executing due to resource limitations, e.g. too many sequencer instructions or too much waveform memory used, you can now add the chunk_count parameter to any single sweep in your experiment definition. The experiment will then be internally divided into a number of smaller subunits, which will be efficiently uploaded and executed on the instruments, bypassing many of the previous resource limitations. Using the pipeliner currently still comes with restrictions in the experiment definition, for details, see Known Issues.
  • Added support for importing lists of QASM programs into a single LabOne Q experiment, and allowing the use of the pipeliner for the execution. See this example notebook for a demonstration.
  • Added support for using the on-device pseudo random number generator of SHFSG and HDAWG sequencer cores. Have a look at the example notebook for how to use this feature.
  • Adapted some names in the AmplifierPump calibration property, controlling the use of the SHFPPC Parametric Pump Controller.
  • AmplifierPump.pump_freq is now AmplifierPump.pump_frequency
  • AmplifierPump.pump_engaged is now AmplifierPump.pump_on
  • AmplifierPump.alc_engaged is now AmplifierPump.alc_on
  • AmplifierPump.use_probe is now AmplifierPump.probe_on
  • Added the ability to modify and sweep the port_delay parameter of an acquire line also in RAW mode, addressing a previous Known Issue.
  • We became aware of some instances where the automated calculation of pulse timing in real-time feedback may be incorrect and are currently working on a fix to this issue. In the meantime, the automated minimum timing delay of pulses based on real-time feedback of measurement results was increased by 20ns to ensure reliable and correct pulse playback in all situations.

Note

The OpenQASM importer is not yet considered stable and the API will likely change in future versions. Comments and feedback regarding its use and what additional functionality may be required are especially welcome.

Note

The Qubit and Transmon classes are not yet considered stable and their APIs might still change in future versions. Comments and feedback regarding the current implementation of these objects and their use in your experiments are welcome.

Bug Fixes

  • Fixed a bug where pulse replacement in a near-time sweep was not working as expected.
  • Fixed a possible unintentional behavior where the presence of long waveforms in unused memory slots on the SHFQA could block or delay the intended playback.

Documentation

Known Issues

  • When using the pipeliner in an experiment by specifying a chunk_count parameter in a sweep, the number of acquire commands in each chunk currently needs to be equal. Typically this means that the number of sweep steps within each chunk has to be the same.
  • When using the pipeliner, it is strongly recommended to reset all device nodes at session.connect() through the reset_device=True argument. If not, a timeout may occur occasionally when fetching the experimental results.
  • In an experiment that uses the pipeliner, the timing of all acquire statements in all chunks currently needs to be the same. Using RepetitionMode.AUTO together with a sweep of pulse delays thus typically is not supported.
  • In an experiment that uses the pipeliner, the pulse sheet viewer or plot_simulation will not yet work correctly.
  • When sweeping pulse amplitude or frequency for readout pulses, OutputSimulator will not display the correct waveforms for these pulses.
  • When delaying logical signal lines of type rf_signal via the delay_signal calibration property, all rf_signals on the same sequencer core 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 use port_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 in these cases, manually add delays to the sequence.

Release 2.23.0

Release date 18.01.2024

Notes & Important Changes

Functionality

  • LabOne Q can now be used as backend for the quantify package allowing users to compile and execute quantify schedules on LabOne Q. See https://code.orangeqs.com/opensource/quantify-zurich-instruments for details.
  • The output simulation when using plot_simulation now includes also integration weights on acquire lines.
  • Clarified the naming convention for markers on the HDAWG. Any RF signal will now only accept marker1, which will always correspond to the marker output . For IQ signals both marker1 and marker2 can be specified individually.
  • Changes to output plotting using the plot_simulation functionality. Now the output for each physical channel involved in the experiment will only be plotted once.

Note

The OpenQASM importer is not yet considered stable and the API will likely change in future versions. Comments and feedback regarding its use and what additional functionality may be required are especially welcome.

Note

The Qubit and Transmon classes are not yet considered stable and their APIs might still change in future versions. Comments and feedback regarding the current implementation of these objects and their use in your experiments are welcome.

Bug Fixes

  • Fixed a bug that prevented any effect of SHFQA port_delay settings in RAW acquisition mode. Such port delays are now also effective in RAW mode.
  • Fixed a bug that prevented using SGCHANNELS above index 1 when using an SHFSG instrument in standalone mode.
  • Fixed a regression that required oscillator increments to only occur in combination with a subsequent play command. Oscillator increments are now fixed for overlapping waveforms without needing a playback interval.

Known Issues

  • When sweeping pulse amplitude or frequency for readout pulses, OutputSimulator will not work.
  • Sweeping the port_delay settings of acquire lines in RAW mode is currently not supported.
  • When delaying logical signal lines of type rf_signal via the delay_signal calibration property, all rf_signals on the same sequencer core 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 use port_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 in these cases, manually add delays to the sequence.
  • When running an experiment with feedback, gaps between consecutive feedback events cannot be longer than approximately 17 seconds (2^32 sequencer cycles).

Release 2.22.0

Release date 21.12.2023

Notes & Important Changes

Functionality

  • Updated zhinst-core dependency to the latest patch release 23.10.52579. Please make sure to update your LabOne installation to 23.10 (patch 2), which includes a critical fix affecting setups using a combination of HDAWG, PQSC, and SHF devices. When updating, please also upgrade the firmware of all instruments in your setup.
  • Added OpenQASM support for extern functions to be used to define gates, i.e., LabOne Q sections, and in particular, to support OpenPulse measurement functions such as capture_v2.
  • Added OpenQASM extern waveform and function call support.
  • Added basic support for OpenQASM inputs.
  • The real-time acquire loop of an experiment and its properties are now accessible via Experiment.get_acquire_loop_rt().
  • An estimate of the total run time of a compiled experiment is now accessible through the estimated_runtime property of the CompiledExperiment object. Note that this is a best-case scenario estimate and disregards any communication overhead in the execution.
  • The recipe in the compiled experiment now contains information about the LabOne Q the LabOne version used in the compilation.
  • Serialized objects now contain the version number. A warning is issued when deserializing a JSON with incompatible version information.
  • Added support for sweeping amplitude and intermediate frequency for integration weights in a near-time loop.

Note

The OpenQASM importer is not yet considered stable and the API will likely change in future versions. Comments and feedback regarding its use and what additional functionality may be required are especially welcome.

Note

The Qubit and Transmon classes are not yet considered stable and their APIs might still change in future versions. Comments and feedback regarding the current implementation of these objects and their use in your experiments are welcome.

Bug Fixes

  • Fixed a bug where it was not possible to play a marker on an rf_signal on the second channel of any sequencer core on an HDAWG.
  • Fixed a bug where compilation of playback on multiplexed logical signals did not work if virtual z-gates were involved in the sequence.

Known Issues

  • When sweeping pulse amplitude or frequency for readout pulses, OutputSimulator will not work.
  • When delaying logical signal lines of type rf_signal via the delay_signal calibration property, all rf_signals on the same sequencer core 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 use port_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 in these cases, manually add delays to the sequence.
  • When running an experiment with feedback, gaps between consecutive feedback events cannot be longer than approximately 17 seconds (2^32 sequencer cycles).

Release 2.21.0

Release date 07.12.2023

Notes & Important Changes

Functionality

  • Added the ability to sweep pulse amplitudes and frequencies in near-time for readout pulses.
  • Added a check for installed instrument options to the device setup construction. If no options or incompatible options are given, a warning message will be logged, which indicates the correct options to add. Please add this information to your device descriptors, as this will become a requirement in the future.
  • Added support for markers on rf_signals on the HDAWG. Currently restricted to the first channel on a sequencer, see Known Issues.
  • Enhanced the pulse sheet viewer API: for interactive mode, you can now specify the max_simulation_length parameter. Simulated signals are shown up to this specified time in seconds; signals beyond this time are not shown. The default remains 10ms when the parameter is omitted.
  • Added a warning in the compiler log if SG Channels amplitude overflows due to routed outputs with Output Router and Adder (RTR) option.
  • Added functionality for programmatically defining a DeviceSetup to laboneq.simple.

Note

The OpenQASM importer is not yet considered stable and the API will likely change in future versions. Comments and feedback regarding its use and what additional functionality may be required are especially welcome.

Note

The Qubit and Transmon classes are not yet considered stable and their APIs might still change in future versions. Comments and feedback regarding the current implementation of these objects and their use in your experiments are welcome.

Bug Fixes

  • Fixed incorrect amplitude of pulses on SHFSG that use software modulation, but at 0 Hz. The fix changes the on-device gain of software modulated pulses on SHFSG. While this is transparent for experiments that were compiled with the new version, any experiments compiled with the previous version may produce incorrect amplitudes when executed by the new version. To ensure consistent output, please recompile existing experiments and do not use experiment compiled with a previous LabOne Q version.
  • Fixed a bug that led to all pulses in the pulse sheet viewer to be tagged as containing a marker.

Documentation

Known Issues

  • Markers on an rf_signal on the second channel of each HDAWG sequencer core is not working. Use the first channel instead.
  • When sweeping pulse amplitude or frequency for readout pulses, OutputSimulator will not work.
  • Directly setting an instrument node via the set_node() command if that setting is also controlled through LabOne Q, for example as a calibration setting, may lead to unintended system states. It is recommended to use the LabOne Q calibration settings in such cases.
  • When delaying logical signal lines of type rf_signal via the delay_signal calibration property, all rf_signals on the same sequencer core 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 use port_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 in these cases, manually add delays to the sequence.
  • When running an experiment with feedback, gaps between consecutive feedback events cannot be longer than approximately 17 seconds (2^32 sequencer cycles).

Patch Release 2.20.1

Release date 01.12.2023

Bug Fixes

  • Fixed a bug that may prevent the use of HDAWG instruments without installed precompensation (PC) option in LabOne Q 2.20.

Release 2.20.0

Release date 23.11.2023

Notes & Important Changes

Functionality

  • Added support for LabOne 23.10. Please see the installation instructions for a link to update your LabOne version. Additionally, a firmware update of all your instruments from within the LabOne UI is required after updating to 23.10.
  • Added support for SHFSG/SHFQC Output Router and Adder (RTR) instrument option. The feature can be enabled on logical signals pointing to SGCHANNELS/N/OUTPUT calibration SignalCalibration.added_outputs by adding a list of OutputRoutes. Also added near-time sweep support for the calibration items OutputRoute.amplitude_scaling and OutputRoute.phase_shift. Using this functionality requires SHFSG/SHFQC devices with Output Router and Adder (RTR) option enabled.
  • Introduced a convenience method calculate_integration_kernels under laboneq.analysis. It can be used to calculate the integration kernels for optimal state discrimination. If this function is used for kernels, the discrimination will work out of the box without the additional need to set the thresholds.
  • Trying to use sweep parameters of different lengths in parallel sweeps now results in a LabOneQException. This did not raise an exception in the earlier versions of LabOne Q, but instead the longer sweep(s) values were silently ignored.
  • Added support for Python 3.12.
  • Loops are now always scheduled on the system grid of the device setup, no longer on the shortest grid commensurate with all the sequencers explicitly involved in the loop.

Note

The OpenQASM importer is not yet considered stable and the API will likely change in future versions. Comments and feedback regarding its use and what additional functionality may be required are especially welcome.

Note

The Qubit and Transmon classes are not yet considered stable and their APIs might still change in future versions. Comments and feedback regarding the current implementation of these objects and their use in your experiments are welcome.

Bug Fixes

  • Fixed a bug where executing a phase increment on an HDAWG could lead to the code generator erroneously issuing an oscillator switching command.
  • Fixed an issue where a Session object could not be reused after executing a first experiment, resulting in unknown system states for subsequent experiments.
  • Fixed a bug where compilation failed in a device setup including UHFQA and HDAWG, when only signals on the HDAWG where involved in a loop.
  • Fixed a bug in the serialisation that led to spurious warnings about missing support for NumpyArrayRepr being logged.

Documentation

  • Added an example notebook on how to use the output router and adder option on SHFSG instruments.
  • Added an example notebook on how to construct a DeviceSetup programmatically.
  • Restructured the release notes in the manual. Only the most recent release will be shown on this first page, all previous releases can be found here.

Known Issues

  • Directly setting an instrument node via the set_node() command if that setting is also controlled through LabOne Q, for example as a calibration setting, may lead to unintended system states. It is recommended to use the LabOne Q calibration settings in such cases.
  • When delaying logical signal lines of type rf_signal via the delay_signal calibration property, all rf_signals on the same sequencer core 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 use port_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 in these cases, manually add delays to the sequence.
  • When running an experiment with feedback, gaps between consecutive feedback events cannot be longer than approximately 17 seconds (2^32 sequencer cycles).

Release 2.19.0

Release date 09.11.2023

Notes & Important Changes

Functionality

  • The device setup can now be constructed programmatically using calls to add_instruments to add instruments, add_connections to add mappings between instrument ports and logical signals, and add_dataserver() to specify the dataserver.
  • Added native support for amplitude sweeps to the OpenQASM importer.
  • Acquire signals on SHFQA input channels now compensate for internal trigger-to-acquisition delays, so the arriving readout pulses are automatically aligned to the beginning of acquisition. For a loopback configuration in integration mode, this starts the integration effectively at the first sample of the readout pulse. It is now also possible to use negative port_delay values on acquire signals on the SHFQA, up to a value of -212 ns in readout mode and -220 ns in spectroscopy mode.

Note

The change to the internal delay setting on SHFQA may require a recalibration of acquisition delays compared to previous versions of LabOne Q. In practice, a fixed offset of 212 ns was added to the port_delay setting in integration, discrimination and raw readout modes, and 220 ns in spectroscopy mode.

Note

The OpenQASM importer is not yet considered stable and the API will likely change in future versions. Comments and feedback regarding its use and what additional functionality may be required are especially welcome.

Note

The Qubit and Transmon classes are not yet considered stable and their APIs might still change in future versions. Comments and feedback regarding the current implementation of these objects and their use in your experiments are welcome.

Bug Fixes

  • Fixed potential failures of feedback experiments if the readout was assigned to a UHFQA through an overhaul of the feedback register assignment.
  • Fixed utility function has_onboard_lo in laboneq.dsl.utils to correctly process logical signal lines of SHFQC instruments.
  • Resolved a possible issues in the code compression module that could lead to a stack overflow by switching from a recursive to an iterative implementation.
  • An error is triggered when different integration kernels are used on the same signal line. Additional logical signals can be defined on the same physical input and used to perform integrations with different kernels.
  • Phase increments at the end of a pulse sequence are no longer ignored if no actual pulse is played afterwards.

Documentation

  • User functions are now called as neartime callback functions to reflect their usecase more clearly.

Deprecation notice

  • The register_user_function() method of the Experiment has beend deprecated in favor of register_neartime_callback().
  • LabOne 23.02 is no longer supported in release 2.19. Please upgrade to LabOne 23.06 or newer.
  • Python 3.7 and 3.8 support was removed in release 2.3.0. Please upgrade to Python 3.9 or newer.
  • The descriptor keyword "instrument_list" has been replaced by "instruments" for consistency.
  • Use of near-time acquire loops through the acquire_loop_nt statement is deprecated. We recommend to use a near-time sweep instead.

Known Issues

  • Directly setting an instrument node via the set_node() command if that setting is also controlled through LabOne Q, for example as a calibration setting, may lead to unintended system states. It is recommended to use the LabOne Q calibration settings in such cases.
  • When delaying logical signal lines of type rf_signal via the delay_signal calibration property, all rf_signals on the same sequencer core 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 use port_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.
  • When running an experiment with feedback, gaps between consecutive feedback events cannot be longer than approximately 17 seconds (2^32 sequencer cycles).

Release 2.18.0

Release date 26.10.2023

Notes & Important Changes

Functionality

  • Add support for loops in OpenQASM programs that sweep gate parameters.
  • Extended the OpenQASM importer interface to support averaging and data acquisition options.
  • Allow to define conditional phase increments within match-case statements when using hardware modulation.

Note

The OpenQASM importer is not yet considered stable and the API will likely change in future versions. Comments and feedback regarding its use and what additional functionality may be required are especially welcome.

Note

The Qubit and Transmon classes are not yet considered stable and their APIs might still change in future versions. Comments and feedback regarding the current implementation of these objects and their use in your experiments are welcome.

Bug Fixes

  • Fix: callback functions can now also use strings as arguments.
  • Fixed a bug where a pulse sequence was not played correctly if some pulses contained a phase increment while others did not. Now also sequences consisting of pulses with and without phase increments are played correctly.

Documentation

Deprecation notice

  • Python 3.7 and 3.8 support was removed in release 2.3.0. Please upgrade to Python 3.9 or newer.
  • The descriptor keyword "instrument_list" has been replaced by "instruments" for consistency.
  • Use of near-time acquire loops through the acquire_loop_nt statement is deprecated. We recommend to use a near-time sweep instead.

Known Issues

  • Applying different integration kernels in successive acquire commands on the same logical signal line will only upload and use the first kernel provided. As a workaround, use multiple logical signal lines.
  • Phase increments at the end of a pulse sequence are ignored if no actual pulse is played afterwards. As a workaround, add a dummy pulse with zero amplitude after the phase increment.
  • To account for the internal delay introduced by the analog to digital conversion in the frontend of the SHFQA, a minimum port_delay setting of 224ns is necessary.
  • Directly setting an instrument node via the set_node() command if that setting is also controlled through LabOne Q, for example as a calibration setting, may lead to unintended system states. It is recommended to use the LabOne Q calibration settings in such cases.
  • 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 cw resonator spectroscopy notebook for an example.
  • When delaying logical signal lines of type rf_signal via the delay_signal calibration property, all rf_signals on the same sequencer core 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 use port_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.
  • When running an experiment with feedback, gaps between consecutive feedback events cannot be longer than approximately 17 seconds (2^32 sequencer cycles).

Release 2.17.0

Release date 12.10.2023

Notes & Important Changes

Functionality

  • Adapted the way how integration kernels are treated to use the same conventions that are applied to multi-state discrimination also for the two-state qubit case. This change may require users to re-run threshold calibration for state-discrimination.

Note

The Qubit and Transmon classes are not yet considered stable and their APIs might still change in future versions. Comments and feedback regarding the current implementation of these objects and their use in your experiments are welcome.

Note

The OpenQASM importer is not yet considered stable and the API will likely change in future versions. Comments and feedback regarding its use and what additional functionality may be required are especially welcome.

Bug Fixes

  • Fixed a bug where an instrument setting was incorrect when using multiple oscillators on a single SG channel.
  • Fixed a bug in the serialisation of Session objects and added clearer error messaging.

Documentation

  • Adapted all example notebooks that use state discrimination to use the utilities functionality to calculate the matched filter weights for ideal state discrimination.

Deprecation notice

  • Python 3.7 and 3.8 support was removed in release 2.3.0. Please upgrade to Python 3.9 or newer.
  • The descriptor keyword "instrument_list" has been replaced by "instruments" for consistency.
  • Use of near-time acquire loops through the acquire_loop_nt statement is deprecated. We recommend to use a near-time sweep instead.

Known Issues

  • To account for the internal delay introduced by the analog to digital conversion in the frontend of the SHFQA, a minimum port_delay setting of 224ns is necessary.
  • Directly setting an instrument node via the set_node() command if that setting is also controlled through LabOne Q, for example as a calibration setting, may lead to unintended system states. It is recommended to use the LabOne Q calibration settings in such cases.
  • 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 cw resonator spectroscopy notebook for an example.
  • When delaying logical signal lines of type rf_signal via the delay_signal calibration property, all rf_signals on the same sequencer core 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 use port_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.
  • When running an experiment with feedback, gaps between consecutive feedback events cannot be longer than approximately 17 seconds (2^32 sequencer cycles).

Release 2.16.0

Release date 28.09.2023

Notes & Important Changes

Functionality

  • Added optional formatting of results data as xarray data objects. Calling Results.acquired_results.to_xarray() returns an xarray object containing the acquired results as well as the sweep values as data axes. The dependency of LabOne Q on xarray is optional, the conversion will only work if xarray is also installed in your Python environment.
  • Changed the behavior of ModulationType.AUTO to depend on the type of signal it is applied to: In integration mode, measure and acquire signals (i.e. signals on QA instruments) will be software-modulated. In spectroscopy mode, measure and acquire signals will be hardware-modulated. All signals on other instruments will be hardware-modulated.
  • It is now possible to exit a near-time loops before the associated sweep is completed by calling session.abort_execution(). See the user function learning guide for an example of how to use this. Addresses this feature request.
  • Performance improvement: When sweeping amplitudes of signals in experiments, it is now easier and more efficient to interleave pulses with incremented amplitude and pulses with fixed amplitude.
  • Performance improvement: Reduced communication overhead, which significantly reduces the total runtimes of small experiments.
  • Added a check to verify that the compiled experiment does not use more command table entries than are available on the instrument, implementing this feature request.

Note

The recently added Qubit and Transmon are not yet considered stable and their APIs might still change in future versions. Comments and feedback regarding the current implementation of these objects and their use in your experiments are welcome.

Note

The OpenQASM importer is not yet considered stable and the API will likely change in future versions. Comments and feedback regarding its use and what additional functionality may be required are especially welcome.

Bug Fixes

  • Fixed a bug in which LabOne Q crashed in situations where an SHFQA channel does not play a pulse on the measure line but still is supposed to acquire measurement data.
  • Fixed settings when using multi-state discrimination on SHFQA and SHFQC readout units to ensure correct state discrimination and, additionally, when using multiple sets of integration kernels.

Known Issues

  • When using multi-state discrimination applied to two-state qubit systems, a different kernel convention is expected than for multi-state discrimination for generic multi-state systems, leading to an apparent flipping in the reported results.
  • To account for the internal delay introduced by the analog to digital conversion in the frontend of the SHFQA, a minimum port_delay setting of 224ns is necessary.
  • Directly setting an instrument node via the set_node() command if that setting is also controlled through LabOne Q, for example as a calibration setting, may lead to unintended system states. It is recommended to use the LabOne Q calibration settings in such cases.
  • 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 cw resonator spectroscopy notebook for an example.
  • When delaying logical signal lines of type rf_signal via the delay_signal calibration property, all rf_signals on the same sequencer core 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 use port_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.
  • When running an experiment with feedback, gaps between consecutive feedback events cannot be longer than approximately 17 seconds (2^32 sequencer cycles).

Release 2.15.0

Release date 18.09.2023

Notes & Important Changes

Functionality

  • Added support for multi-state discrimination on SHFQA and SHFQC readout units. See the new example notebook for a demonstration of how to use this feature for real-time active reset of a ququad. For details on how the feature works internally, have a look at tutorial in the SHFQA documentation.
  • Added support for the port_delay parameter for logical signal lines on SHFSG and SHFQC drive lines, which can be used to compensate for different signal runtimes.
  • Added support for multi-dimensional sweeps when using sequential averaging.
  • Added common functionality for analysis of experimental data, useful for analysis of data from simple tuneup experiments. This functionality was previously available through contrib.

Note

The recently added Qubit and Transmon are not yet considered stable and their APIs might still change in future versions. Comments and feedback regarding the current implementation of these objects and their use in your experiments are welcome.

Note

The OpenQASM importer is not yet considered stable and the API will likely change in future versions. Comments and feedback regarding its use and what additional functionality may be required are especially welcome.

Bug Fixes

  • Fixed a bug where it was not possible to use different length of the acquire command for the signal acquisition on a multiplexed readout line. Fixes this issue.
  • Fixed a bug in the parallel tuneup notebook where sweep parameters were not properly resolved when addressing multiple hardware oscillators.

Documentation

  • Updated all example notebooks to use the new analysis library instead of the deprecated functions from contrib.

Deprecation notice

  • Python 3.7 and 3.8 support was removed in release 2.3.0. Please upgrade to Python 3.9 or newer.
  • The descriptor keyword "instrument_list" has been replaced by "instruments" for consistency.
  • Using a near-time acquire loop through the acquire_loop_nt statement has been deprecated. Use a near-time sweep instead.

Known Issues

  • To account for the internal delay introduced by the analog to digital conversion in the frontend of the SHFQA, a minimum port_delay setting of 234ns is necessary.
  • Directly setting an instrument node via the set_node() command if that setting is also controlled through LabOne Q, for example as a calibration setting, may lead to unintended system states. It is recommended to use the LabOne Q calibration settings in such cases.
  • 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 cw resonator spectroscopy notebook for an example.
  • When delaying logical signal lines of type rf_signal via the delay_signal calibration property, all rf_signals on the same sequencer core 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 use port_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.
  • When running an experiment with feedback, gaps between consecutive feedback events cannot be longer than approximately 17 seconds (2^32 sequencer cycles).

Release 2.14.0

Release date 31.08.2023

Notes & Important Changes

  • A patch has been released for LabOne 23.06 fixing a number of issues that also affected users of LabOne Q. Please download the new release from our Download center and ensure you update the firmware of all instruments through the LabOne user interface.

Functionality

  • Implemented a new background architecture for LabOne Q, improving the way the internal components interact with and depend on each other.
  • Added functionality to derive a new SweepParameter from an existing one using the array manipulation capabilities of numpy. Have a look at the API reference documentation here for details.
  • To improve readability, the console log output no longer contains the component information for each log message. If you require this information, have a look at the file log for the full information.
  • Improved the display of expected resource usage in the compiler log.
  • Improved log message output when the pulse sheet viewer needs to trigger recompilation of the experiment, e.g. when the number of displayed events has changed.
  • Added support for using the direct low-frequency path on SHFQA instruments. Use the calibration setting port_mode=PortMode.LF to use.

Note

The recently added Qubit and Transmon are not yet considered stable and their APIs might still change in future versions. Comments and feedback regarding the current implementation of these objects and their use in your experiments are welcome.

Note

The OpenQASM importer is not yet considered stable and the API will likely change in future versions. Comments and feedback regarding its use and what additional functionality may be required are especially welcome.

Bug Fixes

  • Fixed a bug where the interactive pulse sheet viewer did not work with device setups containing SHFPPC instruments.
  • Fixed a bug in the pulse inspector where specifying arguments may not have had the intended effect on the displayed pulse.
  • Improved the printout formatting when displaying the contents of LogicalSignals.

Documentation

Deprecation notice

  • Python 3.7 and 3.8 support was removed in release 2.3.0. Please upgrade to Python 3.9 or newer.
  • The descriptor keyword "instrument_list" has been replaced by "instruments" for consistency.
  • Using a near-time acquire loop through the acquire_loop_nt statement has been deprecated. Use a near-time sweep instead.

Known Issues

  • To account for the internal delay introduced by the analog to digital conversion in the frontend of the SHFQA, a minimum port_delay setting of 234ns is necessary.
  • Directly setting an instrument node via the set_node() command if that setting is also controlled through LabOne Q, for example as a calibration setting, may lead to unintended system states. It is recommended to use the LabOne Q calibration settings in such cases.
  • 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 cw resonator spectroscopy notebook for an example.
  • When delaying logical signal lines of type rf_signal via the delay_signal calibration property, all rf_signals on the same sequencer core 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 use port_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.
  • When running an experiment with feedback, gaps between consecutive feedback events cannot be longer than approximately 17 seconds (2^32 sequencer cycles).

Release 2.13.0

Release date 17.08.2023

Notes & Important Changes

Functionality

  • Improved API for the pulse sheet viewer. Calling show_pulse_sheet now accepts the additional arguments interactive and max_events_to_publish. The interactive argument controls whether to run the pulse sheet viewer in interactive mode within the notebook itself, where then also the waveforms of individual pulses can be inspected. This argument defaults to False. max_events_to_publish controls the maximum number of events that are displayed in the pulse sheet viewer. For performance reasons, the default value here is set to 1000, for longer experiments, this may need to be adjusted. Additionally, the compiler by default not longer generates the event list for the pulse sheet viewer when compiling an experiment, this now only happens on demand. Adjusting the number of events may now trigger a recompilation of the experiment before the pulse sheet is shown.

Bug Fixes

  • Adjusted the printout of LabOne Q data objects to avoid some unwanted side effects.

Documentation

  • Updated the API reference documentation.

Deprecation notice

  • Python 3.7 and 3.8 support was removed in release 2.3.0. Please upgrade to Python 3.9 or newer.
  • The descriptor keyword "instrument_list" has been replaced by "instruments" for consistency.

Known Issues

  • Directly setting an instrument node via the set_node() command if that setting is also controlled through LabOne Q, for example as a calibration setting, may lead to unintended system states. It is recommended to use the LabOne Q calibration settings in such cases.
  • 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 cw resonator spectroscopy notebook for an example.
  • When delaying logical signal lines of type rf_signal via the delay_signal calibration property, all rf_signals on the same sequencer core 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 use port_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.
  • Using multiple QA channels with global feedback currently has a bug in LabOne 23.06. We recommend using 23.02 if multiple QA channels on a single device are needed with global feedback.

Release 2.12.0

Release date 04.08.2023

Notes & Important Changes

Functionality

  • Updated to LabOne 23.06. LabOne Q 2.12 requires LabOne 23.06. Please see the installation instructions for a link to update your LabOne version. Additionally, a firmware update with LabOne is required after updating to 23.06.
  • Removed the laboneq.contrib Qubit and QubitParameters classes. These were superseded by the new Qubit class added in 2.11.
  • Added a list of unfulfilled real-time start conditions to the warning printed by the LabOne Q controller when starting an experiment times out.

Note

The recently added Qubit and Transmon are not yet considered stable and their APIs might still change in future versions. Comments and feedback regarding the current implementation of these objects and their use in your experiments are welcome.

Note

The OpenQASM importer is not yet considered stable and the API will likely change in future versions. Comments and feedback regarding its use and what additional functionality may be required are especially welcome.

Bug Fixes

  • Fix serializing and deserializing of MixerType.
  • Fix real-time frequency sweeps when combined with oscillator switching.

Documentation

  • Added QASM examples to the manual.

Deprecation notice

  • Python 3.7 and 3.8 support was removed in release 2.3.0. Please upgrade to Python 3.9 or newer.
  • The descriptor keyword "instrument_list" has been replaced by "instruments" for consistency.

Known Issues

  • Directly setting an instrument node via the set_node() command if that setting is also controlled through LabOne Q, for example as a calibration setting, may lead to unintended system states. It is recommended to use the LabOne Q calibration settings in such cases.
  • 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 cw resonator spectroscopy notebook for an example.
  • When delaying logical signal lines of type rf_signal via the delay_signal calibration property, all rf_signals on the same sequencer core 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 use port_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.
  • Using multiple QA channels with global feedback currently has a bug in LabOne 23.06. We recommend using 23.02 if multiple QA channels on a single device are needed with global feedback.

Release 2.11.0

Release date 20.07.2023

Notes & Important Changes

Functionality

  • Added Qubit and Transmon objects. They represent a higher abstraction level on top of logical signals and are intended to represent actual physical qubits within LabOne Q. Qubit has been designed to represent a generic two-level system, while the Transmon implementation is more specific towards flux-tunable superconducting transmon qubits. Both inherit from the QuantumElement parent class, which can be used to derive your own type of qubit. Qubit and Transmon contain information about the logical signal lines as well as a dictionary of parameters used to control the respective qubits. The class methods Qubit.calibration() and Transmon.calibration() can be used to create Calibration objects derived from the qubit parameters and logical signals, which may directly be applied to a DeviceSetup or an Experiment. Have a look at this example notebook for an example how to use these new objects.

Note

Qubit and Transmon are not yet considered stable and their API might still change in future versions. Comments and feedback regarding the current implementation of these objects and their use in your experiments are welcome.

  • Added an importer for OpenQASM 3.0 programs to translate them into LabOne Q experiments. Currently the importer supports the following OpenQASM language constructs: box, delay, measure, reset as well as playback of single- and multi-qubit gates. Playback of parametrized gates is also possible. See the example notebooks in this folder for some demonstrations on how to use LabOne Q with OpenQASM programs.

Note

The OpenQASM importer is not yet considered stable and the API will likely change in future versions. Comments and feedback regarding its use and what additional functionality may be required are especially welcome.

Bug Fixes

  • Fixed a bug where specifying the LabOne dataserver port number as a string did not work as expected.
  • Corrected the default value for the beta parameters of the DRAG pulse in the pulse library to a more sensible value.

Documentation

  • Changed the documentation framework to make it more accessible and intuitive to use. GitHub example notebooks are now included in the How-to and Learning Guide sections, and the API Reference has been integrated in the main documentation. Feedback is welcome!
  • Added example notebooks demonstrating import of OpenQASM programs for a single step of a VQE algorithm as well as two qubit randomized benchmarking using either Qiskit input or a circuit compiled from the pyGSTi module.
  • Added an example notebook demonstrating design and execution of experiments on many Qubits in parallel. See this example notebook for a demonstration of a set of tune-up experiments for many qubits in parallel.
  • Adapted the propagation delay example notebook to sweep the calibration property port_delay instead of directly setting the instrument node.

Deprecation notice

  • Python 3.7 and 3.8 support was removed in release 2.3.0. Please upgrade to Python 3.9 or newer.
  • The descriptor keyword "instrument_list" has been replaced by "instruments" for consistency.

Known Issues

  • Directly setting an instrument node via the set_node() command if that setting is also controlled through LabOne Q, for example as a calibration setting, may lead to unintended system states. It is recommended to use the LabOne Q calibration settings in such cases.
  • 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 cw resonator spectroscopy notebook for an example.
  • When delaying logical signal lines of type rf_signal via the delay_signal calibration property, all rf_signals on the same sequencer core 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 use port_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.10.0

Release date 06.07.2023

Notes & Important Changes

Functionality

  • Added support for resetting instruments to a known state at session connection. Use the reset_devices argument at session.connect() to execute a factory reset of all connected instruments of the device setup. This can be useful if other interfaces or API calls are used beside LabOne Q to manipulate the state of the instruments.
  • Improved readability of the output generated for all LabOne Q data classes when using a print() statement.
  • Added the ability to use the measure() function as a method on a Section directly, not just on the level of a full Experiment.

Bug Fixes

  • When playing markers on logical signals that are mapped to QA channels, a warning will now be produced. QA channels do not have the ability to generate sample-precise marker outputs, use triggers instead.
  • Fixed a spurious compilation error, leading to incorrect sequencer code when using global delays.
  • Fixed a bug where nested frequency sweeps in real-time where not executed properly on SHFSG and SHFQC instruments.
  • Fixed a bug where readout pulses failed to play back when using a subset of multiplexed readout signals.

Deprecation notice

  • Python 3.7 and 3.8 support was removed in release 2.3.0. Please upgrade to Python 3.9 or newer.
  • The descriptor keyword "instrument_list" has been replaced by "instruments" for consistency.

Known Issues

  • Waveform compression is not yet supported when playing pulses in parallel on two signal lines of type rf_signal if these signal lines share a sequencer core.
  • Using both marker channels of a HDAWG sequencer core with two signal lines of type rf_signal will result in an error at runtime. As a workaround, we recommend to use markers with rf_signals on different sequencer cores.
  • When using LabOne 23.02 with a version below 23.02.41959, playback on SHFSG and SHFQA channels may be misaligned by 4 ns. Please download the latest version of LabOne from our Download center.
  • 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 cw resonator spectroscopy notebook for an example.
  • When delaying logical signal lines of type rf_signal via the delay_signal calibration property, all rf_signals on the same sequencer core 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 use port_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.9.0

Release date 27.06.2023

Notes & Important Changes

Functionality

  • When using .play(…​), markers may now be played without a pulse by specifying pulse=None.
  • Added support for directly measuring the power spectral density when in spectroscopy mode on the SHFQA. Use AcquisitionMode.SPECTROSCOPY_PSD for this.
  • Added support for OpenQASM delay instruction.
  • Added support of qubit objects in OpenQASM parser.
  • Added a key-value database for LabOne Q objects.
  • Added laboneq.dsl.inspect to make execution metadata available to the user.
  • Removed the need for an access token to run LabOne Q on real hardware.

Bug Fixes

  • Fixed a bug where signals that were played on QA output channels where missing in the output simulator.
  • Fixed a bug where the QA output channel was not switched off at the end of a CW spectroscopy experiment.
  • Added a warning message when attempting to use waveform compression on the SHFQA or UHFQA - waveform compression is not supported on these instruments.
  • Fixed a dependency issue when installing LabOne Q.
  • Made markers usable in play command without pulse information.
  • Fixed multiplexing on SHFQA instruments.

Documentation

  • Added a new demonstration notebook for basic experiments with color centers.
  • Added a new example notebook showing how to store and retrieve LabOne Q data objects like experiments in a database.
  • Added a first OpenQASM support example showing how to build and execute a parameterized VQE circuit.

  • Added a new demonstration notebook for basic experiments with color centers.

  • Added a new example notebook showing how to store and retrieve LabOne Q data objects like experiments in a database.
  • Added a first OpenQASM support example showing how to build and execute a parameterized VQE circuit.
  • Added documentation of automatic generation of a zero amplitude pulse when playing markers without pulse

Deprecation notice

  • Python 3.7 and 3.8 support was removed in release 2.3.0. Please upgrade to Python 3.9 or newer.
  • The descriptor keyword "instrument_list" has been replaced by "instruments" for consistency.

Known Issues

  • Waveform compression is not yet supported when playing pulses in parallel on two signal lines of type rf_signal if these signal lines share a sequencer core.
  • Using both marker channels of a HDAWG sequencer core with two signal lines of type rf_signal will result in an error at runtime. As a workaround, we recommend to use markers with rf_signals on different sequencer cores.
  • When using LabOne 23.02 with a version below 23.02.41959, playback on SHFSG and SHFQA channels may be misaligned by 4 ns. Please download the latest version of LabOne from our Download center.
  • 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 cw resonator spectroscopy notebook for an example.
  • When delaying logical signal lines of type rf_signal via the delay_signal calibration property, all rf_signals on the same sequencer core 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 use port_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.8.0

Release date 08.06.2023

Notes & Important Changes

Functionality

  • Added support for displaying enabled markers in the simulated output.
  • Added basic support for the native Python SQLite database to save and load any LabOne Q data objects.

Bug Fixes

  • Improved support for waveform compression also in cases where compressible and incompressible waveforms are mixed by the compiler.
  • Fixed an issue with serialization when using an SHFPPC in the device setup.
  • Improved the logic of setting the reference clocks on SHF instruments to reduce communication overhead for each experiment.

Documentation

Deprecation notice

  • Python 3.7 and 3.8 support is deprecated and has been removed in release 2.3.0. Please upgrade to Python 3.9 or newer.
  • The descriptor keyword "instrument_list" has been replaced by "instruments" for consistency.

Known Issues

  • Using both marker channels of a HDAWG sequencer core with two signal lines of type rf_signal will result in an error at runtime. As a workaround, we recommend to use markers with rf_signals on different sequencer cores.
  • When using LabOne 23.02 with a version below 23.02.41959, playback on SHFSG and SHFQA channels may be misaligned by 4{nbsp}ns. Please download the latest version of LabOne from our Download center.
  • When delaying logical signal lines of type rf_signal via the delay_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 use port_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.7.0

Release date 25.05.2023

Notes & Important Changes

Functionality

  • The playHold functionality introduced in Release 2.6.0 has been extended to improve performance for playback when using rf_signal.
  • LabOne Q now supports sweeping the port_delay property on all logical signal lines and the amplitude setting of the SHFQA readout via setup and experiment calibrations.
  • Added support for waveform compression also when playing pulses in parallel on two signal lines of type rf_signal with these signal lines sharing a sequencer core.

Bug Fixes

  • Spurious error when using feedback on HDAWG channels has been fixed

Release 2.6.0

Release date 11.05.2023

Notes & Important Changes

Functionality

  • Improved the efficiency of experiment playback and optimized the use of the waveform memory by implementing the use of the playHold functionality of the sequencer for SHFSG and HDAWG instruments. Using the playHold command in the sequencer enables the reduction of waveform memory usage for pulses where some parts of the waveform are constant. To use this functionality, supply the optional can_compress argument to a pulse functional defining a pulse.
  • Integrated a detailed timing model for local and global feedback paths when using real-time feedback with the match - case statement. The compiler will now enforce a minimum timing between an acquire statement and the following match - case condition, based on the ideal timing constraints from hardware specifications.
  • Added a check and an error message when local_oscillator frequencies are set to incompatible frequencies. The center frequencies on SHFSG, SHFQC and SHFQA channels can be set between 600 MHz and 8 GHz in steps of 100 MHz, when not using LF path.

Bug Fixes

  • Fixed an issue where the logger would fail if Unicode characters were part of the logging file path.

Deprecation notice

  • Python 3.7 and 3.8 support is deprecated and has been removed in release 2.3.0. Please upgrade to Python 3.9 or newer.
  • The descriptor keyword "instrument_list" has been replaced by "instruments" for consistency.

Known Issues

  • Waveform compression is not yet supported when playing pulses in parallel on two signal lines of type rf_signal if these signal lines share a sequencer core.
  • Using both marker channels of a HDAWG sequencer core with two signal lines of type rf_signal will result in an error at runtime. As a workaround, we recommend to use markers with rf_signals on different sequencer cores.
  • When using LabOne 23.02 with a version below 23.02.41959, playback on SHFSG and SHFQA channels may be misaligned by 4{nbsp}ns. Please download the latest version of LabOne from our Download center.
  • 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 cw resonator spectroscopy notebook for an example.
  • When delaying logical signal lines of type rf_signal via the delay_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 use port_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.5.0

Release date 27.04.2023

Notes & Important Changes

Functionality

  • Added support for the SHFPPC parametric pump controller in LabOne Q.
  • When using reset_oscillator_phase on an SHFSG or SHFQA, the overall timing of the shot and sweep repetition rate is now automatically enforced to be commensurate with the 100 MHz grid of the local oscillators in the SHF platform. This is to ensure better reproducibility of the phase reset in these cases.
  • When using voltage_offset on a signal line of type rf_signal, this signal line is now enabled by default already when calling session.connect(). Previously, signal lines were only enabled when executing an experiment using that signal line.

Documentation

Release 2.4.0

Release date 13.04.2023

Notes & Important Changes

Functionality

  • Added a check for compatibility of device firmware and LabOne dataserver version to increase stability.
  • Added support for switching off certain physical output channels through the session.disable_output() method. See the documentation for details on how to use - related to issue 22.

Bug Fixes

  • Improved the quality of compression for the sequencer code generated by the compiler to avoid issues with SHFQA and UHFQA running out of free registers. Related to issue 30 and issue 13.
  • Fixed the logic for switching off HDAWG output channels to ensure this only happens when strictly necessary - fixes issue 23.
  • Fixed an issue where signals on different AWG cores were not aligned in the output simulator for a standalone HDAWG setup.

Documentation

  • Added a new manual chapter detailing how to use triggers and markers in LabOne Q.
  • Moved commonly used convenience functionality for the example notebooks to contrib to enable simplified import from anywhere. See the example notebooks on how to use.

Release 2.3.0

Release date 30.03.2023

Notes & Important Changes

Functionality

  • Further increased performance of the compiler, especially for experiments involving a very large number of sections.
  • Added support for real-time feedback on setups including a PQSC. Use the Experiment.match_global statement to enable real-time feedback based on readout results on any quantum analyzer channel connected to any drive channel through a PQSC. Supported combinations of instruments are currently any combination of SHFQA, SHFSG and SHFQC.
  • Added a Experiment.match statement, that chooses automatically between global or local feedback paths. See this notebook on an example how to use.
  • Added support for marker output on logical signals of type rf_signal on HDAWG.
  • Added support for the keywords start and length when enabling markers. The marker high will be delayed by the value of start relative to the start of the pulse playback and the total duration of the marker output will be given by its length argument.
  • Enable more argument types for pulse functionals. It is now possible to use strings, integers, floats and booleans, as well as lists, dictionaries and numpy arrays of these base types as arguments for pulse functionals.
  • Introduced a check for duplicate ids when creating a device setup. DeviceSetup now raises a LabOneQException if instruments have no unique UIDs.
  • Enabled the command table by default also on the HDAWG, to reduce waveform memory usage and increase sequencer code efficiency.

Bug Fixes

  • Fixed a bug where the delay node of markers and triggers was not correctly reset when calling session.connect(), if changes where made in the LabOne GUI.
  • Fixed a bug where logical signals of type rf_signal where not supported in the Output Simulator when using the command table.

Documentation

  • Adapted the real-time feedback example to also support feedback through a PQSC.
  • Due to changes in the timing calculation in LabOne 23.02., adapted the necessary delay time for a standalone SHFQC when using real-time feedback.
  • Moved commonly used helper functions from the example folder into laboneq.contrib, see the example notebooks for usage.

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 at session.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 the marker 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.

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} within session.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 raising AssertionError.
  • 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 a pulse_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.

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 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.
  • To avoid potential issues with synchronization in LabOne 22.08, it is advised not to use the reference clock out of the PQSC to distribute a clock signal to the UHFQA. Instead, use an external reference clock as a common clock source.
  • When delaying logical signal lines of type rf_signal via the delay_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 use port_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.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 or Experiment.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(), use Session.run() instead.
  • Removed deprecated Session.set() and Session.get().
  • Removed deprecated offset argument from laboneq.dsl.experiment.Experiment.section() method.
  • Removed deprecated pass_v3_to_compiler argument from Session. The argument had no functionality.
  • Renamed Experiment.set() to Experiment.set_node() & removed the key argument.
  • Removed do_simulation argument from Session.run(). The functionality is replace with laboneq.simulator.output_simulator.OutputSimulator.
  • Removed max_simulation_time instance variable from Session.

Release 1.7.0

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) - use session.run(experiment) instead
    • the offset argument of section - use either constant length for the section or RepetitionMode.CONSTANT in the outer acquisition loop
    • session.set() and session.get() - in user functions, use the toolkit functionality to read out and set node values instead
    • experiment.set() will be renamed to experiment.set_node() and its key parameter will be removed
    • simulation of the output signals via the do_simulation parameter of session.run() as well as the output_signals property of the compiled experiment - use the new OutputSimulator 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 type rf_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, the mixer_type now defaults to IQ.
  • 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.

Bug fixes

  • Fixed the issue that the SHFQC was only working with the six channel option.

Release 1.3.0

Release date 17.11.2022

Notes & Important Changes

Functionality

  • Added initial support for using trigger outputs, through the trigger argument of section - 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

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, use gaussian(amplitude=1j) instead.

Patch Release 1.0.3

Release date 10.10.2022

Notes & Important Changes

  • Pinned required retworkx version to 0.11 after breaking changes had been introduced with 0.12.

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 and increment_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 complements logical_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 in session.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) and session.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. Calling session.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 via session.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.66

Release date 11.08.2022

Notes & Important Changes

  • When an error is encountered during a near-time loop, the affected step is repeated and the experiment does not fail.
  • Unintended gaps in the playback of pulses on the HDAWG are now detected and signaled to the user.

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 from func to func_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 to Session.compile() or Session.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.63

Release date: 01.07.2022

Notes & Important Changes

  • Improved reliability of real-time frequency sweeps on SHFQA
  • Added support for real-time frequency sweeps on SHFSG
  • Logging contains number of sequencer code lines and number of waveform samples that will be uploaded to instruments
  • Logging levels are now adjustable

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