Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
1cb384d
ci: Bump pulp-platform/pulp-actions from v2 to v2.5.0
DanielKellerM May 18, 2026
fedb3be
ci: Install Python deps via per-job venv in init stage
DanielKellerM May 20, 2026
690adef
backend: Fix error handler valid/ready protocol violations
DanielKellerM Feb 23, 2026
f315ae8
ci: Add branch policy enforcement and PR template
DanielKellerM Jun 10, 2026
84671b0
midend: Sync rt_midend choice FIFO and add mixed-traffic testbench (#…
DanielKellerM Jun 10, 2026
4f92f5e
build: Replace morty with the bender slang pickle (#110)
DanielKellerM Jun 11, 2026
482c0d6
ci: Install Python requirements with uv instead of pip (#111)
DanielKellerM Jun 11, 2026
f2fe499
docs: Add Starlight documentation site with architecture diagrams (#103)
DanielKellerM Jun 11, 2026
6e1aaa0
build: Add per-top trimmed vsim compile scripts (#116)
DanielKellerM Jun 11, 2026
b282f66
ci: Make mirror pipeline jobs interruptible for auto-cancel (#118)
DanielKellerM Jun 11, 2026
acc384d
build: Rename the pickle output directory to target/pickle (#114)
DanielKellerM Jun 11, 2026
c747f10
doc: Regenerate hierarchy graphs from the pickle syntax tree (#117)
DanielKellerM Jun 11, 2026
2557a7d
ci: Manage Python dependencies with pyproject.toml and uv (#121)
DanielKellerM Jun 11, 2026
9219420
frontend: Convert generated register blocks to SystemRDL (PeakRDL) (#73)
micprog Jun 11, 2026
3f063f7
build: Drop setuptools pin and dead regtool make vars (#122)
DanielKellerM Jun 12, 2026
2ab0d4d
ci: Cache the bender git database keyed on the lockfile (#120)
DanielKellerM Jun 12, 2026
27840e9
treewide: Add multi-head capabilities (#85)
thommythomaso Jun 12, 2026
54d8e3a
ci: Clear stale runner locks before checkout in the init pipeline (#124)
DanielKellerM Jun 12, 2026
bee6ed6
ci: Run push CI on mainlines only to stop double-triggering PRs (#125)
DanielKellerM Jun 15, 2026
722f459
backend: Fix multi-head datapath bugs and add verification testbenche…
DanielKellerM Jun 15, 2026
c1bf756
test: Add default arm to writes_in_flight case as defensive guard (#107)
DanielKellerM Jun 15, 2026
48b3fdb
inst64: Update front-end to support streamlined iDMA integration in S…
thommythomaso Jun 15, 2026
f5a8ddb
fix: Break combinational loop in desc64 speculation FIFO (#91)
DanielKellerM Jun 15, 2026
44a3320
backend: Add a BurstLen parameter to the legalizer page splitter (#109)
RiccardoGandolfi Jun 16, 2026
6f8130a
frontend: Drop the duplicate reg tie-off and dead hjson template
DanielKellerM Jun 16, 2026
05d088f
frontend: Remove the duplicate reg tie-off generate block
DanielKellerM Jun 16, 2026
9c7d57c
frontend: Match the reg-block APB address width in the wrapper
DanielKellerM Jun 16, 2026
1d8a3c9
build: Self-bootstrap the uv environment for make idma_hw_all (#128)
DanielKellerM Jun 16, 2026
5808a55
deps: Bump all bender dependencies to latest (#130)
DanielKellerM Jun 16, 2026
2435af6
Add on-the-fly compute support with a transpose engine at the write s…
DanielKellerM Jun 17, 2026
77b6a47
test: Harden transpose testbenches (fatal-on-fail + midend coverage) …
DanielKellerM Jun 18, 2026
6be43a7
frontend: Gate external register read-ack (#134)
DanielKellerM Jun 18, 2026
210982a
frontend: Emit synth-wrapper head ports only for multi-head backends …
DanielKellerM Jun 18, 2026
8d8c9b0
build: Route all RTL generation through uv (single locked env)
DanielKellerM Jun 19, 2026
bf8a7ba
test: Zero the compute option in desc64 golden stimulus
DanielKellerM Jun 19, 2026
a88d675
backend: Fix compute and multi-head transport-layer generation
DanielKellerM Jun 19, 2026
e521aed
backend: Make the transpose engine async reset synthesizable
DanielKellerM Jun 19, 2026
9ddc2d2
hw: Prioritize obi write transactions in idma frontend (#138)
gbellocchi Jun 22, 2026
80989d9
frontend: Widen inst64 strides_t to addr_t for the nd_midend stride a…
DanielKellerM Jun 30, 2026
f5b4c33
hw: Add support for obi events (#145)
gbellocchi Jun 30, 2026
7d34e1d
test: Drop internal codename from multihead TB comments
DanielKellerM Jun 23, 2026
de7e495
test: Drive OBI backend ports with native obi_sim_mem
DanielKellerM Jun 22, 2026
14b8756
hw: Assign obi rsp in all control paths
gbellocchi Jul 3, 2026
1070970
hw: Extend idma busy condition with axi write completion
gbellocchi Jul 3, 2026
d1737bb
frontend: Make the reg-frontend config-bus CPUIF selectable
DanielKellerM Jul 3, 2026
41e5f78
CI/DEPLOY: Add `write` permission to `deploy` job
Jul 2, 2026
5fc4c04
CI: A bit of cleanup for the `deploy.py` script
Jul 2, 2026
f79c3c7
frontend: Model reg next_id as rd_swacc with launch-pending latch
DanielKellerM Jul 8, 2026
552919f
test: Add non-blocking reg-frontend testbench with launch-integrity c…
DanielKellerM Jul 9, 2026
f405cf2
frontend: Ride stream_idx_o on the reg arbitration
DanielKellerM Jul 9, 2026
b40d4e5
frontend: Apply _q suffix and terse comments to reg launch latch
DanielKellerM Jul 10, 2026
01dc219
test: Move reg-frontend TB under frontend and drop the mk comment
DanielKellerM Jul 10, 2026
71efa34
test: Drive reg-frontend TB with the apb_test driver
DanielKellerM Jul 10, 2026
7645e0f
hw: Fix illegal obi response assign in `idma` top
gbellocchi Jul 8, 2026
7b45c8e
Regs: Add SW C register header generation (#158)
Jul 31, 2026
c155adc
Backend: Make compute engine instantiation an SV parameter (#159)
Jul 31, 2026
e7ee60a
backend: Fix compute synth-wrapper emission and AXI-write eligibility…
DanielKellerM Jul 31, 2026
7b60446
backend: Retire compute on w_dp_req_ready, drop dead w_beat_done (#163)
DanielKellerM Jul 31, 2026
f37b416
Regs: Add register to set transpose parameters (#160)
Aug 3, 2026
b9a5177
ci: Accept any copyright holder under SHL/Apache; authors by domain (…
DanielKellerM Aug 10, 2026
922ca04
backend: Add MX quant/dequant on-the-fly compute (#170)
DanielKellerM Aug 11, 2026
a3af0b5
ci: Bump actions off the deprecated Node 20 runtime (#175)
DanielKellerM Aug 12, 2026
6b386a8
Regs: Single-source the compute_op encoding in SystemRDL (#176)
DanielKellerM Aug 12, 2026
14dcdf1
Bump common_cells to v2 (#99)
colluca Aug 12, 2026
9e7da18
build: Render compute.svh via peakrdl raw-header (#179)
DanielKellerM Aug 12, 2026
ff8d85d
deps: Align the cc-v2 ecosystem pins on common_cells v2.0.0-beta.3 (#…
DanielKellerM Aug 12, 2026
6aeeed5
test: Make MX sim targets self-verifying and size the PRNG literal (#…
DanielKellerM Aug 12, 2026
1eee575
ci: Add a scheduled prune for stale deploy branches (#127)
DanielKellerM Aug 12, 2026
849359f
docs: Overhaul the Starlight site for 0.7.0 and drop legacy Sphinx (#…
DanielKellerM Aug 12, 2026
f7bbaf2
frontend: Align desc64 addrmap symbol references with generated svpkg…
DanielKellerM Aug 12, 2026
ebafbd4
docs: Fix the Pages base path and exclude mdx from author lint (#183)
DanielKellerM Aug 12, 2026
40fe6a6
backend: Send AW when W is ready to fix decouple_rw without decouple_…
micprog Aug 12, 2026
f387093
test: Add an inst64 frontend testbench with an event cross-check (#185)
DanielKellerM Aug 13, 2026
dfe7a56
test: Watch the real INIT handshake and skip zero-length stream jobs …
DanielKellerM Aug 13, 2026
82d3b22
gen: Split the tracer per backend id and verify the variants publicly…
DanielKellerM Aug 17, 2026
0d056a0
ci: Lint the testbenches too and clear what that exposes (#192)
DanielKellerM Aug 17, 2026
a9344c4
ci: Cache the bender binary and the verilator object builds (#198)
DanielKellerM Aug 17, 2026
17afed6
ci: Make the simulations actually use ccache (#199)
DanielKellerM Aug 17, 2026
a181869
ci: Give each matrix leg its own ccache key (#200)
DanielKellerM Aug 17, 2026
8c48ae8
frontend: Report the documented stall polarity in the inst64 events (…
DanielKellerM Aug 17, 2026
4342a1b
release: Write the 0.7.0 changelog and bump the version (#201)
DanielKellerM Aug 17, 2026
757d54b
ci: Stop pinning the internal CI to the common-cells-v2 nonfree branc…
DanielKellerM Aug 17, 2026
497c1f2
backend: Gate the coupler AW release on a queued AW and tag the write…
DanielKellerM Aug 18, 2026
aa0dce5
test: Sweep the MX roundtrip over both element formats (#203)
DanielKellerM Aug 19, 2026
2e7b10a
docs: Publish the site from master only (#208)
DanielKellerM Aug 19, 2026
81f2b8b
release: Record the changes that landed after the 0.7.0 entry (#211)
DanielKellerM Aug 19, 2026
449bde9
Release v0.7.0
DanielKellerM Aug 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .github/actions/bender-db-cache/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Copyright 2026 ETH Zurich and University of Bologna.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

# Authors:
# - Daniel Keller <dankeller@iis.ee.ethz.ch>

name: Cache Bender database
description: Relocate bender's bare-repo git database to a cached path
runs:
using: composite
steps:
- shell: bash
run: echo "BENDER_DB_DIR=$HOME/.cache/bender-db" >> "$GITHUB_ENV"
- uses: actions/cache@v4
with:
path: ~/.cache/bender-db
key: bender-db-${{ runner.os }}-${{ hashFiles('Bender.lock') }}
restore-keys: |
bender-db-${{ runner.os }}-
75 changes: 75 additions & 0 deletions .github/actions/verify-setup/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# Copyright 2026 ETH Zurich and University of Bologna.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

# Authors:
# - Daniel Keller <dankeller@iis.ee.ethz.ch>

name: Set up the public verification toolchain
description: Bender database cache, uv, Bender and optionally Verilator
inputs:
verilator:
description: Install Verilator from apt; ubuntu-24.04 ships 5.020
default: 'false'
bender-version:
description: Bender release to install
default: '0.32.1'
ccache-key:
description: >
Distinguishes this job's ccache from its siblings. Matrix legs share a job
id, so a shared key makes them race and all but one fail to save.
default: shared
runs:
using: composite
steps:
- uses: ./.github/actions/bender-db-cache

- uses: astral-sh/setup-uv@v7
with:
enable-cache: true

- uses: actions/cache@v4
with:
path: ~/.cache/bender-bin
key: bender-${{ inputs.bender-version }}-${{ runner.os }}
- shell: bash
run: |
if [ -x "$HOME/.cache/bender-bin/bender" ]; then
echo "$HOME/.cache/bender-bin" >> "$GITHUB_PATH"
fi
- uses: pulp-platform/pulp-actions/bender-install@v2.5.0
with:
version: ${{ inputs.bender-version }}
- shell: bash
run: |
mkdir -p "$HOME/.cache/bender-bin"
if [ ! -x "$HOME/.cache/bender-bin/bender" ]; then
cp "$(command -v bender)" "$HOME/.cache/bender-bin/bender"
fi
bender --version

# ubuntu's verilator ships OBJCACHE empty, so the sims pass OBJCACHE=ccache
- if: inputs.verilator == 'true'
shell: bash
run: |
sudo apt-get update
sudo apt-get install -y verilator ccache
echo "CCACHE_DIR=$HOME/.cache/ccache" >> "$GITHUB_ENV"
echo "CCACHE_MAXSIZE=2G" >> "$GITHUB_ENV"
- if: inputs.verilator == 'true'
uses: actions/cache@v4
with:
path: ~/.cache/ccache
key: ccache-${{ inputs.ccache-key }}-${{ github.sha }}
restore-keys: |
ccache-${{ inputs.ccache-key }}-

- if: inputs.verilator == 'true'
shell: bash
run: |
verilator --version
verilator --version | grep -qE '^Verilator 5\.' || {
echo "expected Verilator 5.x from apt"; exit 1; }
- if: inputs.verilator == 'true'
shell: bash
run: uv run --locked make idma_verify_toolchain
16 changes: 8 additions & 8 deletions .github/authors-cfg.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@
# - Thomas Benz <tbenz@iis.ee.ethz.ch>

header-regex: >
(?:#\!/.*\n)*[/|#]+ Copyright ([0-9]+) ETH Zurich and University of Bologna\.\n[/|#]+ Solderpad Hardware License, Version 0\.51, see LICENSE for details\.\n[/|#]+ SPDX-License-Identifier: SHL-0\.51\n\n[/|#]+ Authors:\n((?:[/#]+ - [0-9A-Za-z ]+<[0-9A-Za-z\.]+@[0-9A-Za-z\.]+>\n)+)
(?:#\!/.*\n)*[/|#]+ Copyright ([0-9]+) [^\n]+\n(?:[/|#][^\n]*\n|\n)*?[/|#]+ SPDX-License-Identifier: (?:SHL-0\.51|Apache-2\.0)\n(?:[/|#][^\n]*\n|\n)*?[/|#]+ Authors:\n((?:[/|#]+ - [0-9A-Za-z .]+<[^\s>]+@[^\s>]+>\n)+)

author-regex: >
([0-9A-Za-z ]+)<([0-9A-Za-z\.]+@[0-9A-Za-z\.]+)>
([0-9A-Za-z .]+)<([^\s>]+@[^\s>]+)>

excludes:
- LICENSE
Expand All @@ -27,7 +27,9 @@ exclude-ext:
- svg
- txt
- json
- toml
- md
- mdx
- lock
- local

Expand All @@ -38,10 +40,8 @@ allowed-years:
- 2023
- 2024
- 2025
- 2026

allowed-authors:
Axel Vanoni: axvanoni@ethz.ch
Michael Rogenmoser: michaero@iis.ee.ethz.ch
Samuel Riedel: sriedel@iis.ee.ethz.ch
Thomas Benz: tbenz@iis.ee.ethz.ch
Tobias Senti: tsenti@ethz.ch
allowed-domains:
- ethz.ch
- mosaic-soc.com
29 changes: 29 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<!--
Thanks for contributing to iDMA. Please target this PR at `devel`, not
`master`. External PRs against `master` are auto-retargeted to `devel`.
See CONTRIBUTING.md for the branch policy.
-->

## Description

<!-- What does this PR change and why? Link related issues. -->

## Type of change

- [ ] Bug fix
- [ ] New feature
- [ ] Refactor / cleanup
- [ ] Documentation
- [ ] Build / CI

## Checklist

- [ ] This PR targets `devel` (not `master`).
- [ ] Commits follow [Chris Beams style](https://chris.beams.io/posts/git-commit/) (≤100-char imperative subject, optional `area:` prefix).
- [ ] `make idma_hw_all` and the relevant lints pass locally.
- [ ] No AI-attribution lines on commits (e.g. `Co-authored-by:` for AI tools).
- [ ] Related issues are referenced.

## Notes for reviewers

<!-- Anything to call out: tricky areas, follow-ups, dependencies on other PRs. -->
3 changes: 3 additions & 0 deletions .github/verible.waiver
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,6 @@
# - Thomas Benz <tbenz@iis.ee.ethz.ch>

waive --rule=package-filename --location="src/frontend/inst64/idma_inst64_opcode.sv"

# IDMA_DV / IDMA_ND_DV are the exported verification API; renaming breaks downstream
waive --rule=interface-name-style --location="test/idma_intf.sv"
32 changes: 12 additions & 20 deletions .github/workflows/analyze.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,22 +19,18 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
-
name: Install Python
uses: actions/setup-python@v5
name: Install uv
uses: astral-sh/setup-uv@v7
with:
python-version: '3.9'
cache: 'pip'
-
name: Python Requirements
run: pip install -r requirements.txt
enable-cache: true
-
name: List contributors
run: scripts/list-contributors | tee contributions.txt
run: uv run --locked scripts/list-contributors | tee contributions.txt
-
name: Upload contributions.txt
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: contributions
path: contributions.txt
Expand All @@ -46,22 +42,18 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
-
name: Install Python
uses: actions/setup-python@v5
name: Install uv
uses: astral-sh/setup-uv@v7
with:
python-version: '3.9'
cache: 'pip'
-
name: Python Requirements
run: pip install -r requirements.txt
enable-cache: true
-
name: List todos
run: scripts/list-todos | tee open_todos.txt
run: uv run --locked scripts/list-todos | tee open_todos.txt
-
name: Upload todos.txt
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: open_todos
path: open_todos.txt
Expand Down
39 changes: 15 additions & 24 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,48 +23,39 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
-
name: Install Python
uses: actions/setup-python@v5
with:
python-version: 3.9
cache: pip
-
name: Install Python requirements
run: pip install -r requirements.txt
name: Cache Bender database
uses: ./.github/actions/bender-db-cache
-
name: Setup Graphviz
uses: ts-graphviz/setup-graphviz@v2
name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
-
name: Install RISC-V GCC toolchain
uses: pulp-platform/pulp-actions/riscv-gcc-install@v2
uses: pulp-platform/pulp-actions/riscv-gcc-install@v2.5.0
with:
distro: ubuntu-22.04
nightly-date: '2023.03.14'
target: riscv64-elf
-
name: Setup Graphviz
uses: ts-graphviz/setup-graphviz@v2
-
name: Install Bender
uses: pulp-platform/pulp-actions/bender-install@v2
uses: pulp-platform/pulp-actions/bender-install@v2.5.0
with:
version: 0.27.3
-
name: Install Morty
run: |
curl --proto '=https' --tlsv1.2 -sLO https://github.com/pulp-platform/morty/releases/download/v0.9.0/morty-ubuntu.22.04-x86_64.tar.gz
tar -xvf morty-ubuntu.22.04-x86_64.tar.gz morty
rm -f morty-ubuntu.22.04-x86_64.tar.gz
chmod 777 morty
echo "PATH=.:$PATH" >> ${GITHUB_ENV}
version: 0.32.1
-
name: Check clean
run: make idma_clean_all
run: uv run --locked make idma_clean_all
-
name: Check whether clean
run: git status && test -z "$(git status --porcelain --ignore-submodules)"
-
name: Build target
run: make -j9 idma_${{ matrix.target }}_all
run: uv run --locked make -j9 idma_${{ matrix.target }}_all
-
name: Check whether stale
run: git status && test -z "$(git status --porcelain --ignore-submodules)"
15 changes: 12 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@ name: ci

on:
push:
branches-ignore:
- '__deploy__**'
branches:
- devel
- master
pull_request:
branches-ignore:
- '__deploy__**'
Expand All @@ -36,12 +37,20 @@ jobs:
uses: ./.github/workflows/analyze.yml
secrets: inherit

verify:
needs: lint
uses: ./.github/workflows/verify.yml
secrets: inherit

# The licensed EDA pipeline runs only once the license-free matrix is green
gitlab-ci:
needs: build
needs: [build, verify]
uses: ./.github/workflows/gitlab-ci.yml
secrets: inherit

deploy:
permissions:
contents: write
needs: build
if: github.event_name == 'push'
uses: ./.github/workflows/deploy.yml
Expand Down
Loading
Loading