.. _whatsNew: What's New ========== .. note:: If you are updating from a firmware version earlier than 0.9.0, please be aware that a manual reboot will be required as part of the update procedure. For more details, please consult the Breaking Changes section in the :ref:`fw_0_8_0` and :ref:`fw_0_9_0` release notes. .. _fw_0_9_0: Qblox Instruments: 0.14.0 (2024-08-12) -------------------------------------- **Firmware Update** - 0.9.0 (`Cluster `__) **Python Driver** - 0.14.0 (`PyPI link `__) **Quantify-Scheduler** - 0.21.0 (`PyPI link `__) **Quantify-Core** - 0.7.6 (`PyPI link `__) Breaking Changes ***************** - **Reboot Behavior After Firmware Update** : A firmware update to v0.9.0, from any prior version (including from v0.8.0) requires a manual reboot from the user. Please note that this is only a one-time procedure and a manual reboot will not be required for any future firmware upgrades while upgrading from v0.9.0. Please also note that, an update from v0.9.0 to v0.9.0 will also not require a manual reboot. New Features ****************** - **Real Time Pulse Predistortions (RTP)** Added support of real-time predistortions (RTP) in our :ref:`qcm_description` modules. The journey of a signal to the device under test (DUT) is inherently imperfect, as electronic components in the signal path—such as DACs, wirebonds, and bias Ts—distort the pulse. To mitigate these distortions, we have now integrated, independently controllable, physical filters in the real-time path of each output of the QCM. This enhancement allows pulses to be pre-distorted, ensuring that the waveforms generated with your QCM closely match the waveforms that actually reach your DUT. Each QCM output features: - *Four Exponential Overshoot/Undershoot Filters*: These filters help to correct for overshoots and undershoots in the pulse, which are common sources of signal distortion due to impedance mismatches in the input path. - *One Finite Impulse Response (FIR) Filter*: The FIR filter enables arbitrary predistortion of the waveform using 32 coefficients, corresponding to a 32 ns filter window. To delve deeper into this feature, you can read more about it :ref:`rtp`. For a step-by-step guide on how to implement RTP, please refer to this `tutorial. `__ - **Automatic Mixer Calibration**: Added support to allow automated calibration of the up-conversion mixer. This feature uses the internal circuitry of RF modules hence no external cabling is required on the output channels. We expect a typical suppression of 35 dBc for LO and sideband tones when calibrating a tone with 30 percent IF power. .. seealso:: You can find a demonstration on how to use this feature `here. `__ - **More QTM memory**: QTM scope/trace memory quadrupled to 2048 timetags in trace mode or 131us in scope mode. Bugfixes: ****************** - Fixed QTM channel LEDs not updating - Fixed QTM get scope data race condition - Fixed overtemperature flags not being set until critical temperature is reached - Fixed rare random 1ns offsets on DAC channels after a reset - Fixed module reset being called twice - Fixed QRM baseband reset not resetting input offsets - Improved overtemperature measurements and limits - Fixed an issue where updating the firmware may require manually rebooting the cluster Documentation Updates: *********************** - **Module specific tutorials** Use tabs to show tutorials filtered by module type. - **Downloadable tutorials** Downloadable versions of tutorials come bundled with all figures and helper files. - **SPI rack** Expanded documentation for the SPI rack. - **Quantify tutorials** Placed links to quantify tutorials more prominently. Quantify Highlights: *********************** - **1ns time grid** For the Qblox backend, operations are now allowed to live on a 1 ns time grid, except NCO-related instructions (set_ph, set_ph_delta, reset_ph and set_freq) that still require to start on a 4 ns time grid. - **Python support** Quantify-Scheduler is now compatible with Python 3.10, 3.11 and 3.12. The current Zhinst backend still requires 3.8 or 3.9. - **Performance increase** The time between uploading and executing Schedules to a Qblox Cluster has reduced, leading to an execution speedup for experiments. - **New acquisition protocols** `LongTimeTrace`, `TimetagTrace` and `Timetag` - **Passing device parameters to Gates** We now allow to write e.g. `Measure("q0", freq=8e6)` - **Spin backend support** new device element `BasicSpinElement` .. _fw_0_8_0: Qblox Instruments: 0.13.0 (2024-05-01) -------------------------------------- **Firmware Update** - 0.8.0 (`Cluster `__) **Python Driver** - 0.13.0 (`PyPI link `__) Breaking Changes ***************** - **Reboot Behavior After Firmware Update** : A firmware update to v0.8.0 from any version requires a manual reboot from the user. New Features ****************** - **QTM Firmware Support** : Added firmware support for our new Qubit Time-tagging Module. - **New i2c-tools Version**: qblox-instruments now requires python package i2c-tools v4.3 (updated from v3.1.2). - **Improved delay compensation**: Upper limit of :meth:`~Sequencer.nco_prop_delay_comp` increased from 50ns to 109ns. Bugfixes: ****************** - **qblox-pnp list Parsing** : Fixed bug on `qblox-pnp` device list parsing. .. _fw_0_7_0: Qblox Instruments: 0.12.0 (2024-03-25) -------------------------------------- **Firmware Update** - 0.7.0 (`Cluster `__) **Python Driver** - 0.12.0 (`PyPI link `__) Breaking Changes ***************** - **SystemStatus** : :class:`~qblox_instruments.native.generic_func.SystemStatus` has been changed from an `enum` to a `namedtuple` composed of SystemStatuses, SystemStatusFlags and SystemStatusSlotFlags `enums`. The old `SystemStatus` enum was kept as `SystemStatusOld` enum for backwards compatibility until removal. Please see :ref:`deprecated` for more information. Deprecations ****************** - **System, Sequencer & Acquisition statuses Flags** : The methods :meth:`qblox_instruments.native.generic_func.get_system_state`, :meth:`qblox_instruments.native.generic_func.get_sequencer_state` and :meth:`qblox_instruments.native.generic_func.get_acquisition_state` are deprecated and will all respectively change to the following: :meth:`qblox_instruments.native.generic_func.get_system_status`, :meth:`qblox_instruments.native.generic_func.get_sequencer_status` and :meth:`qblox_instruments.native.generic_func.get_acquisition_status`.Please have a look at :ref:`deprecated` to learn more. New Features ****************** - **CMM Module Firmware Mismatch Flag** : Previously, only the firmware version of the `CMM `_ was verified to match the version of qblox-instruments. However, it did not check whether the firmware of the other modules matched that of the CMM. Now, during the initialization of the Cluster object, an error will be raised if the firmware of the CMM does not correspond to any of the other modules in the Cluster. Bugfixes: ****************** - **QCM-RF AFE H LO Enable:** The QCM-RF modules with the latest analog front end (AFE) revision H had a bug wherein the Local Oscillators (LOs) were not enabled by default and you had to explicitly enable the LOs using the methods: :meth:`~QCM_RF.out0_lo_en` and :meth:`~QCM_RF.out1_lo_en`. In firmware version 0.7.0 LOs are enabled by default. - **QCM-RF AFE H Channel Mapping:** In QCM-RF modules with AFE revision H, an error was triggered when utilizing the channel map convenience function ``QCM-RF.sequencer0.connect_sequencer('out0')``. While ``QCM-RF.sequencer0.connect_out0('IQ')`` functioned properly, but these two methods are functionally equivalent. This issue has been addressed and resolved in firmware version 0.7.0. .. seealso:: Please have a look at :ref:`sequence_processor_multiplexing` for more detailed instructions on how to control the channel mapping. - **QCM Offset Fix:** When using a QCM the output DAC offset :meth:`~QCM.out0_offset` would reset to 0V when changing the channel map. Now, changing channel map does not effect the output voltage. - **TTL Burst Patch**: Previously, when doing a TTL acquisition and forwarding the result using trigger based feedback, an error was raised when triggers were closer than 200 ns from each other. Instead of raising an error and stopping the experiment, now the sequencer flags the trigger address (`missed_tgr_addr` available via `get_sequencer_status`) where the trigger was possibly missed while the experiment continues. Documentation Updates: *********************** - **Product Specifications and Technical Compliance:** :ref:`spec_compliance` is a page where you can find information about the product specifications of the Cluster and the relevant technical compliance. - **Deprecations Page:** :ref:`deprecated` is a page to inform users of the features and public interface methods of qblox-instruments driver that are deprecated and marked for removal in a future release. - **Troubleshooting Page**: :ref:`troubleshooting` page with FAQs and typical troubleshooting steps when encountering issues using the Cluster and qblox-instruments driver. .. _fw_0_6_0: Qblox Instruments: 0.11.0 (2023-08-03) -------------------------------------- **Firmware Update** - 0.6.0 (`Cluster `__) **Python Driver** 0.11.0 (`PyPI link `__) Breaking Changes ****************** - Channel map settings: The architecture to map the sequencer output paths to module output channels have undergone major refactoring. The users are now able to map any sequencer path to any output/input channel. As a result, the public interface commands to setting channel map have changed. .. code-block:: python # QCM Baseband instrument.sequencer{0..5}.connect_out{0..3}('I') # E.g : qcm.sequencer0.connect_out0("I") instrument.sequencer{0..5}.connect_out{0..3}('Q') # E.g : qcm.sequencer1.connect_out0("Q") # QRM baseband instrument.sequencer{0..5}.connect_out{0,1}('I') instrument.sequencer{0..5}.connect_out{0,1}('Q') instrument.sequencer{0..5}.connect_acq_I('in0') instrument.sequencer{0..5}.connect_acq_Q('in1') # QCM_RF instrument.sequencer{0..5}.connect_out{0,1}('IQ') # QRM_RF instrument.sequencer{0..5}.connect_out0('IQ') instrument.sequencer{0..5}.connect_acq('in0') .. seealso:: There are convenience functions in place to connect sequencers to multiple output/input channels at once. Please have a look at :ref:`sequence_processor_multiplexing` for more info on how this can be done. New Features ****************** - Settable ADC Offset : The ADC (Analog-to-Digital Converter) of the readout modules have an inherent DC offset that depends on temperature. This release allows the user to manually compensate for this by setting an offset via a QCoDeS command. Please have a look at the API reference (:meth:`~QRM.in0_offset`) for details. .. seealso:: `Tutorial on characterizing ADC offsets `__ - Active Low Marker Channels: The markers can now be set at an active-low state. When enabled, the markers will stay at a 3.3 V unless it is set using ``set_mrk`` Q1ASM command or :meth:`~Sequencer.marker_ovr_value()` QCoDeS command in which case the corresponding marker will output 0V. E.g: :meth:`~QRM.marker0_inv_en`. Bugfixes: ****************** - Fixed set/get values for certain QCoDeS parameters for a dummy cluster. Please have a look at this `gitlab issue `__ for the list of all affected parameters. .. _fw_0_5_0: Qblox Instruments: 0.10.0 (2023-05-05) -------------------------------------- **Firmware Update** - 0.5.0 (`Cluster `__) **Python Driver** 0.10.0 (`PyPI link `__) Breaking Changes ****************** None New Features ****************** - 1ns timegrid : Changed resolution of the sequencer's real-time timegrid from 4 ns to 1 ns for all real-time instructions, except for the instructions that operate on the NCOs (``set_freq``, ``reset_ph``, ``set_ph``, ``set_ph_delta``). For now, the NCO instructions still operate on the 4 ns timegrid. .. note:: The minimum duration for the real time instructions must still be greater than 4 ns. Scope acquisitions can be started on a 1 ns time resolution. When doing hardware averaged scope acquisitions, the acquisition duration should be a multiple of 4ns. - Dummy Acquisition: The data acquisition can now be mocked by the dummy driver at runtime as compared to the previous version where the dummy data was passed to the acquisition dictionary during compile time. - Added the option to control the brightness of the front-panel LEDs. The brightness can be set to four settings: high, medium, low, off ( See :meth:`Cluster.led_brightness`). Bugfixes: ****************** - ADC Calibration: Cause for sporadic failures of ADC calibration (runtime exceptions and data glitches) was found and fixed. ADC Calibration now also runs in the background calling for less user intervention to calibrate it. (See :meth:`~qblox_instruments.scpi.Cluster.start_adc_calib`). - Fan speed : Fan speed getting stuck issue due to the presence of at least one baseband module in the cluster, is fixed. - Continuous Output mode : Introduced in the previous firmware release (Cluster fw 0.4.0), the issue with no continuous signal from even outputs is fixed with this release. .. _fw_0_4_0: Qblox Instruments: 0.9.0 (2023-02-28) ------------------------------------- **Firmware Update** - 0.4.0 (`Cluster `__) **Python Driver** 0.9.0 (`PyPI link `__) Breaking Changes ****************** - Q1ASM instruction change : ``wait_trigger `` --> ``wait_trigger , `` - QCoDeS parameter name change: ``discretization_threshold_acq`` --> ``thresholded_acq_threshold``. - QCoDeS parameter name change: ``phase_rotation_acq`` --> ``thresholded_acq_rotation``. New Features ****************** - Added new feedback functionality to allow sequencer-to-sequencer, module-to-module and Cluster-to-Cluster feedback. To support this, new Q1ASM instructions are added to the instruction set. Please have a look at the Feedback section on the RTD for more info and Conditional Playback Tutorial to see it in action. .. seealso:: `Conditional Playback Tutorial `_ .. note:: The external trigger input is now also connected to the new trigger network for feedback purposes and must be mapped to this network using the associated parameters (please look at ``wait_trigger`` Q1ASM command in the :ref:`sequence_processor` section for more details). - Reduced back-to-back acquisition latency for binned acquisitions to 300ns from 1200ns. Bugfixes ****************** 1. Fixed bug that prevented excluding :meth:`!Sequencer.sequence` when creating a snapshot through QCoDeS. As with the previous driver release, It can only be queried using :meth:`!Sequencer.sequence.cache`.