Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
52329d0
ci: Elaborate the synthesis tops and inst64 frontend in public CI
DanielKellerM Aug 12, 2026
2fb44c0
tracer: Qualify trace signal keys by direction
DanielKellerM Aug 13, 2026
1f05358
ci: Verify the backend variants publicly with verilator and slang
DanielKellerM Aug 13, 2026
82341dd
ci: Fold the elaborate workflow into the verify matrix
DanielKellerM Aug 13, 2026
197402c
ci: Add the missing verify helper scripts
DanielKellerM Aug 13, 2026
7d5f888
ci: Lint the whole source tree with Verible, not just the diff
DanielKellerM Aug 13, 2026
e75b80a
ci: Widen the elaboration sweep and drop the duplicate inst64 wrapper
DanielKellerM Aug 13, 2026
ecdaebc
ci: Trim the verification matrix comments
DanielKellerM Aug 13, 2026
9333571
test: Number the register frontend variants by their dimension count
DanielKellerM Aug 13, 2026
f96331f
gen: Generate one tracer header per backend id
DanielKellerM Aug 13, 2026
65dba81
ci: Close the review gaps in the verification matrix
DanielKellerM Aug 13, 2026
de96487
ci: Pin the simulation compiler and widen the mxquant sweep
DanielKellerM Aug 13, 2026
921594c
build: Move the public verification gates into verify.mk
DanielKellerM Aug 13, 2026
9670abc
tracer: Fix the copyright year and authors on the new template
DanielKellerM Aug 13, 2026
673a0ca
ci: Drive the verification matrix from a database instead of make var…
DanielKellerM Aug 13, 2026
5405c08
ci: Close the gaps a critical review of this branch found
DanielKellerM Aug 13, 2026
5ab5686
ci: Move the elaboration lists into the database too
DanielKellerM Aug 13, 2026
5f473fe
ci: Take the local suite list from the database as well
DanielKellerM Aug 14, 2026
d9ac810
ci: Close the gaps a second review of this branch found
DanielKellerM Aug 14, 2026
2e7f482
frontend: Wrap the inst64 tracer invocation to the line limit
DanielKellerM Aug 17, 2026
6df8c79
build: Drop the out-of-tree aggregate rework
DanielKellerM Aug 17, 2026
a228a91
ci: Cut every multi-line comment this branch added
DanielKellerM Aug 17, 2026
a195527
ci: Fold the verification matrix into jobs.json
DanielKellerM Aug 17, 2026
7ac2795
ci: Keep the jobs.json formatting and give the suites their parameters
DanielKellerM Aug 17, 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
35 changes: 35 additions & 0 deletions .github/actions/verify-setup/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# 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'
runs:
using: composite
steps:
- uses: ./.github/actions/bender-db-cache
- uses: astral-sh/setup-uv@v7
with:
enable-cache: true
- uses: pulp-platform/pulp-actions/bender-install@v2.5.0
with:
version: 0.32.0
- if: inputs.verilator == 'true'
shell: bash
run: sudo apt-get update && sudo apt-get install -y verilator
- 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
8 changes: 7 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,14 @@ 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

Expand Down
40 changes: 17 additions & 23 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,23 @@ jobs:
exclude_paths: |
target/sim/vsim/wave/tpl/*.do.tpl

# lint-sv is -diff scoped; this one checks all of src/
lint-sv-tree:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v5
-
name: Install Verible
uses: chipsalliance/verible-actions-common/install-verible@main
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
verible_version: "v0.0-3318-g8d254167"
-
name: Lint all of src
run: make idma_lint_sv

lint-sv:
runs-on: ubuntu-latest
steps:
Expand All @@ -48,29 +65,6 @@ jobs:
fail_on_error: true
reviewdog_reporter: github-check

# lint-cxx:
# runs-on: ubuntu-latest
# steps:
# -
# name: Checkout
# uses: actions/checkout@v3
# -
# name: Run Clang-format
# uses: DoozyX/clang-format-lint-action@v0.14
# with:
# extensions: 'c,h,cpp'
# clangFormatVersion: 14
# style: >
# {
# IndentWidth: 4,
# ColumnLimit: 100,
# AlignEscapedNewlines: DontAlign,
# SortIncludes: false,
# AllowShortFunctionsOnASingleLine: None,
# AllowShortIfStatementsOnASingleLine: true,
# AllowShortLoopsOnASingleLine: true
# }

lint-python:
runs-on: ubuntu-latest
steps:
Expand Down
157 changes: 157 additions & 0 deletions .github/workflows/verify.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
# 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

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

# License-free verification matrix; the run set is src/db/verify.yml

name: verify

on:
workflow_call:
workflow_dispatch:

jobs:

# jobs.json and the generated tree must still describe the same design
codegen-consistency:
runs-on: ubuntu-24.04
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Set up toolchain
uses: ./.github/actions/verify-setup
-
name: Check jobs.json, the CI matrix and codegen determinism
run: uv run --locked make idma_verify_codegen

# One backend variant: its jobs.json parameters, a width sweep, its testbench
elab-backend:
strategy:
fail-fast: false
matrix:
id:
- rw_axi
- r_obi_w_axi
- r_axi_w_obi
- rw_axi_rw_axis
- rw_obi
- r_obi_rw_init_w_axi
- r_axi_rw_init_rw_obi
- rw_axi_rw_init_rw_obi
runs-on: ubuntu-24.04
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Set up toolchain
uses: ./.github/actions/verify-setup
with:
verilator: 'true'
-
name: Generate RTL
run: uv run --locked make idma_hw_all
-
name: Elaborate ${{ matrix.id }}
run: uv run --locked make idma_verify_backend IDMA_VERIFY_ID=${{ matrix.id }}

# The non-backend synthesis tops, plus the inst64 testbench
elab-shared-tops:
runs-on: ubuntu-24.04
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Set up toolchain
uses: ./.github/actions/verify-setup
with:
verilator: 'true'
-
name: Generate RTL
run: uv run --locked make idma_hw_all
-
name: Elaborate the shared synthesis tops
run: uv run --locked make idma_verify_shared

# Testbench tops; verilator cannot parse the verification stack, so slang only
elab-tb-shared:
runs-on: ubuntu-24.04
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Set up toolchain
uses: ./.github/actions/verify-setup
-
name: Generate RTL
run: uv run --locked make idma_hw_all
-
name: Elaborate the shared testbenches
run: uv run --locked make idma_verify_tb_shared

# Out-of-tree multi-head build; license-free but generated only on request
elab-multihead:
runs-on: ubuntu-24.04
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Set up toolchain
uses: ./.github/actions/verify-setup
with:
verilator: 'true'
-
name: Elaborate the multi-head variants and testbenches
run: uv run --locked make idma_verify_multihead

# The suite list comes from the database, so a new suite needs no edit here
sim-matrix:
needs: [elab-backend, elab-shared-tops, elab-tb-shared]
runs-on: ubuntu-24.04
outputs:
suites: ${{ steps.legs.outputs.suites }}
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Set up toolchain
uses: ./.github/actions/verify-setup
-
name: Read the suites from the verification database
id: legs
run: |
suites=$(uv run --locked python util/run_verify.py --emit-matrix suites)
echo "suites=$suites" >> "$GITHUB_OUTPUT"

# Real simulation; run_verify.py knows which suites are negative tests
simulate:
needs: sim-matrix
if: needs.sim-matrix.outputs.suites != ''
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.sim-matrix.outputs.suites) }}
runs-on: ubuntu-24.04
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Set up toolchain
uses: ./.github/actions/verify-setup
with:
verilator: 'true'
-
name: Generate RTL
run: uv run --locked make idma_hw_all
-
name: Simulate ${{ matrix.suite }}
run: uv run --locked make idma_verify_sim_${{ matrix.suite }} IDMA_VLT_MAKEFLAGS=-j4
1 change: 1 addition & 0 deletions Bender.yml
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ sources:
- target: idma_test
files:
- target/rtl/tb_idma_generated.sv
- test/tb_idma_otf_transpose.sv
- test/tb_idma_transpose_nd.sv
- test/tb_idma_transpose_b2b.sv
- test/tb_idma_mxquant.sv
Expand Down
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ 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

### Changed
- **Breaking**: the tracer is generated one header per backend id. `idma/tracer.svh` now only holds the id-independent helpers; the `IDMA_TRACER_<ID>` macro of a variant lives in `idma/tracer_<id>.svh`, which includes `idma/tracer.svh` itself. Downstream users replace `` `include "idma/tracer.svh" `` with the per-id header of the variant they trace.


## 0.6.5 - 2025-07-15

### Added
Expand Down
4 changes: 3 additions & 1 deletion doc/site/src/content/docs/architecture/backend.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,9 @@ Each backend variant combines a set of read and write protocols:
| `r_axi_rw_init_rw_obi` | AXI4 | INIT + OBI |
| `rw_axi_rw_init_rw_obi` | AXI4 | AXI4 + INIT + OBI |

The active set is `IDMA_BACKEND_IDS` in `idma.mk`; extend it with `IDMA_ADD_IDS` for custom protocol combinations.
The tracked set is `IDMA_TREE_IDS` in `idma.mk`; extend it with `IDMA_ADD_IDS` for custom protocol combinations. Add-id variants are generated by `make idma_hw_all idma_add_all IDMA_ADD_IDS="..."` into `target/rtl/idma_generated_add.sv` and reach Bender through the `add_ids` target.

Each variant also gets its own tracer header, `idma/tracer_<id>.svh`, holding the `IDMA_TRACER_<ID>` macro; `idma/tracer.svh` carries only the id-independent helpers and is included by the per-id headers.

![Variant Matrix](/iDMA/fig/variant_matrix.svg)

Expand Down
Loading
Loading