enable_qccs_modeof the HDAWG driver now accept an optional argument to select the QCCS generation. It’s advised to set it to 2 (gen2) when the HDAWG is operated with PQSC together with SHF instruments, and set it to 1 (gen1) when the HDAWG is operated with PQSC together with UHFQA instruments.
CommandTable.is_valid()method to check validity of the command table.
py.typedtype information marker file.
Add command table property to the sequencer class to have a simple way to store them together.
Deep gets on nodes with keywords returns an enum like the regular get.
Fix rare failures of
wait_for_state_changefunction that resulted in early timeouts.
All keywords on nodes are correctly supported, and not only the first one for each option.
wait_for_state_changenow supports strings and enums for keywords nodes.
Fix #252. ListNodes now also supports numpy integer types as index argument.
check_zsync_connectionof PQSC now raise an error if the port is in a faulty state, instead of return False.
Revert full support of
fnmatchwildcards and instead use the LabOne wildcard support. This means only
*symbols are supported. A
*in the middle of the path matches everything instead of a
*at the end of the path matches everything.
Fix problem of garbage collection daq sessions. The problem was caused due to using lru caches for instance methods. The usage of lru cache has now been bypassed or replaced with the
functools.cached_propertydecorator (which is currently copied to ensure support for python 3.7).
device.factory_resetnow raises an exception if the factory reset was not successful (
Fixed issue where calling a
dir()returned duplicate values on some nodes.
Factory preset is now available for SHFSG, SHFQA, SHFQA devices (
Add internal trigger to SHFQA sweeper class.
Add SHFQA / SHFQC Power Spectral Density (PSD) node and example
Added full support for the following LabOne modules (no need to fallback to
Precompensation Advisor Module
Introduced new base exception class
zhinst.toolkit.exceptions.ToolkitError, deriving from
PQSCdevice class. The function can be used to find the ID of the PQSC ZSync port connected to a given device.
BaseInstrument. This enables getting the given
Sessionfrom the instrument.
Changed SHFQA node
qachannels/*/oscs/0/freqvalue range from (-500e6 Hz, 500e6 Hz) to (-1e9 Hz, 1e9 Hz). Out-of-range values now rounds to (-1e9 Hz, 1e9 Hz). The functionality is changed to be consistent with LabOne UI.
Improved verbosity of the error message when invalid attributes of
Fix issue with downloading waveforms from the device. This issue prevented indexes larger than 9 to be read from the device.
Added full support for the following LabOne modules (no need to fallback to zhinst.core):
CommandTable. By disabling it,
CommandTabledoes not actively validate the inputs and therefore it improves the speed for command table creation.
awg.enable_sequencerto check the acknowledged value instead of using
wait_for_state_change. This makes it much more stable when used with short sequences.
Fix issue with downloading waveforms from the device. This issue prevented reading waveforms from any other than the base channel.
Update SHFQA Sweeper to expose new properties through nodes (
Tested against Python 3.11
Fix issue that prevented correct compilation of sequences for AWG cores other than the first one.
Embed multistate utils for the SHFQA into the node tree
Added new example for the multistate discrimination (shfqa_multistate_discrimination) for the SHFQA
#181(Wrong _device_type of awg node of UHFQA/UHFLI) which prevented the compilation of sequences.
Waveform validation moved from the
$schemakey removed from the output of
Command Table validation changed to disabled by default
Command Table upload check disabled when called within a transaction.
pyelftoolsfor extracting waveform information from a complied sequencer code.
Interface auto detection adapted to support
none, which was introduced with LabOne 22.08
For all LabOne modules forward the
executefunction from the zhinst-core in zhinst-toolkit
Add new class
zhinst.toolkit.Sequencethat allows a more flexible use of sequences in toolkit (
Add support for session wide transactions that bundle set command from all devices connected to the data server. (
zhinst.toolkit.Sessionto help reusing the existing DataServer connection.
Bugfix: Nodes with nameless options don’t raise an exception when their enum attribute is called (
Bugfix: Values of enumerated nodes can now be pickled (
stop()shows specified timeout value when
Bugfix: Allow capital letters in node paths. (
Adapt toolkit to use the offline awg compiler when uploading a sequencer code to a awg node. Improves the performance a lot and also enables the uploading of a sequencer code within a transaction (Works both for AWGs and Generators).
Add new function
compile_sequencer_codeto the awg node.
Adapt AWG Waveform upload (
write_to_waveform_memory) to append to existing transactions.
Make consistency validate during waveform upload optional (new flag
zhinst.toolkit.Waveformsclass. The function is able to generated a sequence code snippet that defines and assigns the waveforms for this object. Additional meta information like an optional name or the output configuration can be specified through a newly added
Getting a value by calling a wildcard node now returns
Commandtable.load_validation_schemacan also get the command table JSON schema from the device.
load_sequencer_programnow raises an
sequencer_programstring is given. #138
Added a new
Now only a warning (instead of
KeyError) is issued when trying to initialize device/module object, which does not have nodes defined in node value parsers.
Minor type hint fixes. #147
Added support for SHFQC
Added a helper function
uhfqa.qas[n].integration.write_integration_weightsfor QAS integration weights configuration
Bugfix: Adapt Node Tree to be able to get daq result data #113
Bugfix: in the
Waveformclass to be able to convert a single waveform into a complex waveform.
Bugfix: HF2 PID nodes are available.
Add missing nodes setting for QCCS mode #108
pqsc.check_zsync_connection blocks even if nothing is connected
Create a temporary awg module every time a sequencer code is uploaded (The reason for it is to have de defined state) #104
reintroduce uhfqa.qa_delay function
uhfli/uhfqa return node object for
uhfli.awginstead of raising an error (necessary for qcodes drivers) #102
hdawg.enable_qccs_modewrong reference clock source fixed
Small docstring corrections
Redesign and complete refactoring of zhinst-toolkit
Lazy node tree to improve setup times
Switch to session based approach (no longer device based)
Command table handling improved
Waveform handling improved
Removed automated sequencer code generation
Added LabOne modules
Improved testing with mocking
Adapt modulation frequency range to +-1GHz (shfsg.sgchannels[i].modulation_freq, shfqa.qachannels[i].sweeper.oscillator_freq)
Bugfix: DAQ module timeout exception raises AttributeError
Make the command table validation optional
SHFQA Adapt oscillator_freq to +-500e6 Hz
Initial support for SHFSG
Make Node Tree generation case insensitive
Python 3.8 support
syncfunction used as
hdawg.sync()to perform global synchronization
Add support for
Add support for
Add support for loading factory presets
General documentation improvements
Update sequencer commands
Update triggering in predefined sequences
Update sequencer programs
Add support for PQSC
Add scope module
Add support for PQSC
Add command table support
Add PQSC driver
Add SHFQA driver
fix error when the device serial is uppercase
fix busy error on AWG program upload
extend AWG upload timeout to 100 s
add type hints
minor fixes and additions