From 14bc130fa2dfca0d2be3a6b4f902d7f2c3561965 Mon Sep 17 00:00:00 2001 From: Daniel Keller Date: Mon, 17 Aug 2026 14:05:05 +0200 Subject: [PATCH 1/2] release: Write the 0.7.0 changelog and bump the version Every pull request merged since 0.6.5 is referenced, fifty-four of them. The four incompatible changes are called out together at the end, in the form 0.3.0 used: the per-id tracer headers, the direction-qualified trace keys, common_cells v2, and the pickle directory rename. The trace key rename is the one a downstream reader is most likely to miss. A consumer reading axi_rsp_ready now reads axi_read_rsp_ready; without the qualification a protocol present on both sides emitted the same key twice and the read channel was silently dropped from the trace. --- CHANGELOG.md | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++-- VERSION | 2 +- 2 files changed, 84 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 587dd236..3fea3790 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,11 +5,92 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.7.0 - 2026-08-17 + +### Added +- Add multi-head capabilities to the backend and front-ends [#85](https://github.com/pulp-platform/iDMA/pull/85), + with datapath fixes and verification testbenches [#123](https://github.com/pulp-platform/iDMA/pull/123). +- Add on-the-fly compute at the write seam: a transpose engine + [#112](https://github.com/pulp-platform/iDMA/pull/112), OCP microscaling quantise and + dequantise [#170](https://github.com/pulp-platform/iDMA/pull/170), engine instantiation as a + SystemVerilog parameter [#159](https://github.com/pulp-platform/iDMA/pull/159), and transpose + parameters in the register map [#160](https://github.com/pulp-platform/iDMA/pull/160). +- Add OBI events to the event struct [#145](https://github.com/pulp-platform/iDMA/pull/145). +- Add C register headers for downstream drivers [#158](https://github.com/pulp-platform/iDMA/pull/158). +- Add a `BurstLen` parameter to the legalizer page splitter [#109](https://github.com/pulp-platform/iDMA/pull/109). +- Add a license-free public verification matrix: slang elaborates every variant and verilator + simulates the compute datapath against DPI-C goldens + [#186](https://github.com/pulp-platform/iDMA/pull/186), with an inst64 frontend testbench + [#185](https://github.com/pulp-platform/iDMA/pull/185) and the testbenches under the style gate + [#192](https://github.com/pulp-platform/iDMA/pull/192). +- Harden the compute and transpose testbenches so a failed check aborts the run + [#133](https://github.com/pulp-platform/iDMA/pull/133), + [#178](https://github.com/pulp-platform/iDMA/pull/178), + [#188](https://github.com/pulp-platform/iDMA/pull/188), + [#107](https://github.com/pulp-platform/iDMA/pull/107). +- Add a Starlight documentation site [#103](https://github.com/pulp-platform/iDMA/pull/103), + [#181](https://github.com/pulp-platform/iDMA/pull/181). ### Changed -- **Breaking**: the tracer is generated one header per backend id. `idma/tracer.svh` now only holds the id-independent helpers; the `IDMA_TRACER_` macro of a variant lives in `idma/tracer_.svh`, which includes `idma/tracer.svh` itself. Downstream users replace `` `include "idma/tracer.svh" `` with the per-id header of the variant they trace. +- Generate the register blocks from SystemRDL with PeakRDL + [#73](https://github.com/pulp-platform/iDMA/pull/73), and single-source the compute-op encoding + there [#176](https://github.com/pulp-platform/iDMA/pull/176). +- Generate one tracer header per backend id [#186](https://github.com/pulp-platform/iDMA/pull/186), + and qualify the trace signal keys by direction. +- Bump `common_cells` to v2 [#99](https://github.com/pulp-platform/iDMA/pull/99) and align the + ecosystem pins [#180](https://github.com/pulp-platform/iDMA/pull/180). +- Replace morty with the bender slang pickle [#110](https://github.com/pulp-platform/iDMA/pull/110) + and rename its output directory to `target/pickle` + [#114](https://github.com/pulp-platform/iDMA/pull/114). +- Manage the Python environment with `pyproject.toml` and uv + [#121](https://github.com/pulp-platform/iDMA/pull/121), + [#111](https://github.com/pulp-platform/iDMA/pull/111), + [#128](https://github.com/pulp-platform/iDMA/pull/128). +- Update the `inst64` front-end for streamlined Snitch integration + [#88](https://github.com/pulp-platform/iDMA/pull/88), and prioritise OBI writes + [#138](https://github.com/pulp-platform/iDMA/pull/138). +- Retire compute on `w_dp_req_ready` and drop the dead `w_beat_done` + [#163](https://github.com/pulp-platform/iDMA/pull/163). +- Render `compute.svh` with the PeakRDL raw-header template + [#179](https://github.com/pulp-platform/iDMA/pull/179). +- Bump all bender dependencies [#130](https://github.com/pulp-platform/iDMA/pull/130). +- Various CI and build modernisation: consolidated workflows and pre-commit hooks + [#90](https://github.com/pulp-platform/iDMA/pull/90), bender and object caching + [#120](https://github.com/pulp-platform/iDMA/pull/120), + [#198](https://github.com/pulp-platform/iDMA/pull/198), + [#199](https://github.com/pulp-platform/iDMA/pull/199), + [#200](https://github.com/pulp-platform/iDMA/pull/200), author lint by domain + [#169](https://github.com/pulp-platform/iDMA/pull/169), per-top trimmed compile scripts + [#116](https://github.com/pulp-platform/iDMA/pull/116), and pipeline hygiene + [#117](https://github.com/pulp-platform/iDMA/pull/117), + [#118](https://github.com/pulp-platform/iDMA/pull/118), + [#122](https://github.com/pulp-platform/iDMA/pull/122), + [#124](https://github.com/pulp-platform/iDMA/pull/124), + [#125](https://github.com/pulp-platform/iDMA/pull/125), + [#127](https://github.com/pulp-platform/iDMA/pull/127), + [#175](https://github.com/pulp-platform/iDMA/pull/175). +### Fixed +- Send `AW` when `W` is ready, fixing AW starvation with `decouple_rw` and without `decouple_aw` + [#80](https://github.com/pulp-platform/iDMA/pull/80). +- Break a combinational loop in the desc64 speculation FIFO + [#91](https://github.com/pulp-platform/iDMA/pull/91). +- Fix compute synth-wrapper emission and AXI-write eligibility + [#162](https://github.com/pulp-platform/iDMA/pull/162). +- Emit synth-wrapper head ports only for multi-head backends + [#136](https://github.com/pulp-platform/iDMA/pull/136). +- Gate the external register read-ack [#134](https://github.com/pulp-platform/iDMA/pull/134). +- Sync the `rt_midend` choice FIFO [#108](https://github.com/pulp-platform/iDMA/pull/108). +- Align the desc64 addrmap symbol references with the generated package + [#182](https://github.com/pulp-platform/iDMA/pull/182). +- Fix the documentation site base path [#183](https://github.com/pulp-platform/iDMA/pull/183). + +Four changes are not backwards compatible. The tracer is generated one header per backend id, so +`` `include "idma/tracer.svh" `` becomes `` `include "idma/tracer_.svh" `` for the variant being +traced. The trace signal keys are qualified by direction, so a consumer reading `axi_rsp_ready` now +reads `axi_read_rsp_ready`; without this a protocol present on both sides emitted the same key twice +and the read channel was lost. `common_cells` v2 is required, which is an ecosystem-wide bump. The +pickle moves from `target/morty` to `target/pickle`. ## 0.6.5 - 2025-07-15 diff --git a/VERSION b/VERSION index e0ea44c1..faef31a4 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.6.5 \ No newline at end of file +0.7.0 From b981393e60c501eb516d63352088c864a6d79ffb Mon Sep 17 00:00:00 2001 From: Daniel Keller Date: Mon, 17 Aug 2026 14:32:32 +0200 Subject: [PATCH 2/2] release: Record the inst64 stall polarity fix #187 landed after this entry was written. It is in Fixed, and it also gets a line beside the incompatibilities: the counters change meaning with no version marker, so a profile captured before the release does not compare with one captured after. --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fea3790..78193732 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -83,6 +83,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Sync the `rt_midend` choice FIFO [#108](https://github.com/pulp-platform/iDMA/pull/108). - Align the desc64 addrmap symbol references with the generated package [#182](https://github.com/pulp-platform/iDMA/pull/182). +- Report the documented stall polarity in the `inst64` events + [#187](https://github.com/pulp-platform/iDMA/pull/187). `r_stall` and `w_stall` were carrying + the definitions of the buffer-pressure metrics, which overrode the correct assignments. - Fix the documentation site base path [#183](https://github.com/pulp-platform/iDMA/pull/183). Four changes are not backwards compatible. The tracer is generated one header per backend id, so @@ -92,6 +95,11 @@ reads `axi_read_rsp_ready`; without this a protocol present on both sides emitte and the read channel was lost. `common_cells` v2 is required, which is an ecosystem-wide bump. The pickle moves from `target/morty` to `target/pickle`. +The `inst64` stall counters change meaning without a version marker +[#187](https://github.com/pulp-platform/iDMA/pull/187). `dma_r_stall` and `dma_w_stall` now report +what the Snitch cluster documents them to report, so a profile captured before this release is not +comparable with one captured after. + ## 0.6.5 - 2025-07-15 ### Added