diff --git a/RELEASE_NOTES.rst b/RELEASE_NOTES.rst index 6f8783795..69c725337 100644 --- a/RELEASE_NOTES.rst +++ b/RELEASE_NOTES.rst @@ -3,50 +3,66 @@ Release notes ============= +Unreleased +---------- + +Highlights: + +* Implemented Phaser-servo. This requires recent gateware on Phaser. + + ARTIQ-7 ------- Highlights: * New hardware support: - - Kasli-SoC, a new EEM carrier based on a Zynq SoC, enabling much faster kernel execution. + - Kasli-SoC, a new EEM carrier based on a Zynq SoC, enabling much faster kernel execution + (see: https://arxiv.org/abs/2111.15290). + - DRTIO support on Zynq-based devices (Kasli-SoC and ZC706). + - DRTIO support on KC705. - HVAMP_8CH 8 channel HV amplifier for Fastino / Zotinos - Almazny mezzanine board for Mirny -* TTL device output can be now configured to work as a clock generator. + - Phaser: improved documentation, exposed the DAC coarse mixer and ``sif_sync``, exposed upconverter calibration + and enabling/disabling of upconverter LO & RF outputs, added helpers to align Phaser updates to the + RTIO timeline (``get_next_frame_mu()`` + - Urukul: ``get()``, ``get_mu()``, ``get_att()``, and ``get_att_mu()`` functions added for AD9910 and AD9912. * Softcore targets now use the RISC-V architecture (VexRiscv) instead of OR1K (mor1kx). * Gateware FPU is supported on KC705 and Kasli 2.0. * Faster compilation for large arrays/lists. -* Phaser: - - Improved documentation - - Expose the DAC coarse mixer and ``sif_sync`` - - Exposes upconverter calibration and enabling/disabling of upconverter LO & RF outputs. - - Add helpers to align Phaser updates to the RTIO timeline (``get_next_frame_mu()``) - - Implemented Phaser-servo. This requires recent gateware on Phaser. -* Core device moninj is now proxied via the ``aqctl_moninj_proxy`` controller. +* Faster exception handling. +* Several exception handling bugs fixed. +* Support for a simpler shared library system with faster calls into the runtime. This is only used by the NAC3 + compiler (nac3ld) and improves RTIO output performance (test_pulse_rate) by 9-10%. +* Moninj improvements: + - Urukul monitoring and frequency setting (through dashboard) is now supported. + - Core device moninj is now proxied via the ``aqctl_moninj_proxy`` controller. * The configuration entry ``rtio_clock`` supports multiple clocking settings, deprecating the usage of compile-time options. -* Packaging via Nix Flakes. -* Firmware and gateware can now be built on-demand on the M-Labs server using ``afws_client`` - (subscribers only). +* Added support for 100MHz RTIO clock in DRTIO. +* Previously detected RTIO async errors are reported to the host after each kernel terminates and a + warning is logged. The warning is additional to the one already printed in the core device log + immediately upon detection of the error. * Extended Kasli gateware JSON description with configuration for SPI over DIO. -* ``get()``, ``get_mu()``, ``get_att()``, and ``get_att_mu()`` functions added for AD9910 and AD9912. +* TTL outputs can be now configured to work as a clock generator from the JSON. * On Kasli, the number of FIFO lanes in the scalable events dispatcher (SED) can now be configured in - the JSON hardware description file. + the JSON. * ``artiq_ddb_template`` generates edge-counter keys that start with the key of the corresponding TTL device (e.g. ``ttl_0_counter`` for the edge counter on TTL device ``ttl_0``). * ``artiq_master`` now has an ``--experiment-subdir`` option to scan only a subdirectory of the repository when building the list of experiments. -* Added support for 100MHz RTIO clock in DRTIO. -* Previously detected RTIO async errors are reported to the host after each kernel terminates and a - warning is logged. The warning is additional to the one already printed in the core device log upon - detection of the error. +* Experiments can now be submitted by-content. +* The master can now optionally log all experiments submitted into a CSV file. * Removed worker DB warning for writing a dataset that is also in the archive. -* ``PCA9548`` I2C switch class renamed to ``I2CSwitch``, to accomodate support for PCA9547, and - possibly other switches in future. Readback has been removed, and now only one channel per - switch is supported. -* The "ip" config option can now be set to "use_dhcp" in order to use DHCP to obtain an IP address. - DHCP will also be used if no "ip" config option is set. -* Urukul monitoring and frequency setting (through dashboard) is now supported. +* Experiments can now call ``scheduler.check_termination()`` to test if the user + has requested graceful termination. +* ARTIQ command-line programs and controllers now exit cleanly on Ctrl-C. +* ``artiq_coremgmt reboot`` now reloads gateware as well, providing a more thorough and reliable + device reset (7-series FPGAs only). +* Firmware and gateware can now be built on-demand on the M-Labs server using ``afws_client`` + (subscribers only). Self-compilation remains possible. +* Easier-to-use packaging via Nix Flakes. +* Python 3.10 support (experimental). Breaking changes: @@ -61,6 +77,10 @@ Breaking changes: * Mirny: Added extra delays in ``ADF5356.sync()``. This avoids the need of an extra delay before calling `ADF5356.init()`. * The deprecated ``set_dataset(..., save=...)`` is no longer supported. +* The ``PCA9548`` I2C switch class was renamed to ``I2CSwitch``, to accomodate support for PCA9547, + and possibly other switches in future. Readback has been removed, and now only one channel per + switch is supported. + ARTIQ-6 ------- diff --git a/flake.lock b/flake.lock index bb98ea5f2..7eaac721f 100644 --- a/flake.lock +++ b/flake.lock @@ -26,11 +26,11 @@ "mozilla-overlay": { "flake": false, "locked": { - "lastModified": 1650459918, - "narHash": "sha256-sroCK+QJTmoXtcRkwZyKOP9iAYOPID2Bwdxn4GkG16w=", + "lastModified": 1657214286, + "narHash": "sha256-rO/4oymKXU09wG2bcTt4uthPCp1XsBZjxuCJo3yVXNs=", "owner": "mozilla", "repo": "nixpkgs-mozilla", - "rev": "e1f7540fc0a8b989fb8cf701dc4fd7fc76bcf168", + "rev": "0508a66e28a5792fdfb126bbf4dec1029c2509e0", "type": "github" }, "original": { @@ -41,11 +41,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1655278232, - "narHash": "sha256-H6s7tnHYiDKFCcLADS4sl1sUq0dDJuRQXCieguk/6SA=", + "lastModified": 1657123678, + "narHash": "sha256-cowVkScfUPlbBXUp08MeVk/wgm9E1zp1uC+9no2hZYw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8b538fcb329a7bc3d153962f17c509ee49166973", + "rev": "316b762afdb9e142a803f29c49a88b4a47db80ee", "type": "github" }, "original": { @@ -89,11 +89,11 @@ "src-migen": { "flake": false, "locked": { - "lastModified": 1650337393, - "narHash": "sha256-rm1SlFmF2ASz0vIy2nDEzGlyRw2oYNeJRr8Kh8Mg2Qc=", + "lastModified": 1656649178, + "narHash": "sha256-A91sZRrprEuPOtIUVxm6wX5djac9wnNZQ4+cU1nvJPc=", "owner": "m-labs", "repo": "migen", - "rev": "d4e3f34177c32f09904397179e6ed9c83175e528", + "rev": "0fb91737090fe45fd764ea3f71257a4c53c7a4ae", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index d37d4cc62..641630975 100644 --- a/flake.nix +++ b/flake.nix @@ -16,8 +16,9 @@ outputs = { self, nixpkgs, mozilla-overlay, sipyco, src-pythonparser, artiq-comtools, src-migen, src-misoc }: let pkgs = import nixpkgs { system = "x86_64-linux"; overlays = [ (import mozilla-overlay) ]; }; + pkgs-aarch64 = import nixpkgs { system = "aarch64-linux"; }; - artiqVersionMajor = 7; + artiqVersionMajor = 8; artiqVersionMinor = self.sourceInfo.revCount or 0; artiqVersionId = self.sourceInfo.shortRev or "unknown"; artiqVersion = (builtins.toString artiqVersionMajor) + "." + (builtins.toString artiqVersionMinor) + "." + artiqVersionId + ".beta"; @@ -305,7 +306,7 @@ dontFixup = true; }; - openocd-bscanspi = let + openocd-bscanspi-f = pkgs: let bscan_spi_bitstreams-pkg = pkgs.stdenv.mkDerivation { name = "bscan_spi_bitstreams"; src = pkgs.fetchFromGitHub { @@ -362,8 +363,9 @@ }; in rec { packages.x86_64-linux = { - inherit pythonparser qasync openocd-bscanspi artiq; + inherit pythonparser qasync artiq; inherit migen misoc asyncserial microscope vivadoEnv vivado; + openocd-bscanspi = openocd-bscanspi-f pkgs; artiq-board-kc705-nist_clock = makeArtiqBoardPackage { target = "kc705"; variant = "nist_clock"; @@ -443,6 +445,10 @@ ''; }; + packages.aarch64-linux = { + openocd-bscanspi = openocd-bscanspi-f pkgs-aarch64; + }; + hydraJobs = { inherit (packages.x86_64-linux) artiq artiq-board-kc705-nist_clock openocd-bscanspi; kc705-hitl = pkgs.stdenv.mkDerivation {