Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
f2a4dca
Update vector testgen to generate tests in parallel and use standard …
jordancarlin Apr 26, 2026
babd883
Added RVA23 coverage and test generators (#1305)
Ammarahwakeel Apr 26, 2026
b83ade6
Test for Svinval (#1345)
Zain2050 Apr 26, 2026
7aa72eb
ExceptionsSv, ExceptionsSvZaamo and ExceptionsSvZalrsc ACTs (#1319)
Zain2050 Apr 26, 2026
3527f15
Only run autofix on latest commit to a PR (#1368)
jordancarlin Apr 26, 2026
e01c34b
Switch to prek for pre-commit hooks (#1367)
jordancarlin Apr 26, 2026
30db58d
Enable automerge for Renovate minor version bumps to dev tools (#1369)
jordancarlin Apr 26, 2026
5db22af
Vector Calculated Sig upd count (#1353)
jacassidy Apr 26, 2026
38a77a4
Zkr coverpoints and test (#1334)
juliacygong Apr 26, 2026
19df211
Touchups on RVA23 profile coverpoints (#1370)
davidharrishmc Apr 27, 2026
c2fe5dc
Update to sail-riscv version 0.11 (#1372)
jordancarlin Apr 27, 2026
00daf58
Add Sstvecd Scounteren coverage and self-checking python generator (#…
ayeshaanwaar05 Apr 27, 2026
e5b062d
Fix/cv32e20 sail schema v0.11 (#1378)
karabambus Apr 27, 2026
6db4c34
Lock file maintenance (#1377)
renovate[bot] Apr 27, 2026
1fc6cac
Update pre-commit hook renovatebot/pre-commit-hooks to v43.141.2 (#1376)
renovate[bot] Apr 27, 2026
61148d2
Update dependency pyright to v1.1.409 (#1375)
renovate[bot] Apr 27, 2026
5560558
Update many coverpoints to use named localparams (#1371)
jordancarlin Apr 27, 2026
17fff00
Add retry logic to `bundle install` to handle transient network failu…
Copilot Apr 27, 2026
58af160
Lock file maintenance (#1380)
renovate[bot] Apr 27, 2026
e88d0be
Update dependency riscv-collab/riscv-gnu-toolchain to v2026.04.26 (#1…
renovate[bot] Apr 27, 2026
0e7a449
Update Sail model interrupt macros for version 0.11 (#1374)
jordancarlin Apr 27, 2026
695fab5
Remove `NORUN` from many tests now that Sail 0.11 supports them (#1373)
jordancarlin Apr 27, 2026
d492d8d
Update dependency uv to v0.11.8 (#1383)
renovate[bot] Apr 27, 2026
5f5927d
Update docs/docs-resources digest to 47257de (#1384)
renovate[bot] Apr 27, 2026
bc63759
Moved PMP regions to data region. (#1310)
hamza-1821 Apr 27, 2026
1a9552a
Re-enable Sv for Spike's CI (#1388)
Zain2050 Apr 27, 2026
a33b038
Update pre-commit hook astral-sh/uv-pre-commit to v0.11.8 (#1386)
renovate[bot] Apr 27, 2026
df77306
Update riscv/riscv-isa-sim digest to 632777d (#1389)
renovate[bot] Apr 28, 2026
cf60873
Vector Failure Code (#1343)
georgiatai Apr 28, 2026
5f69fff
Update tenstorrent/whisper digest to 4c834ca (#1390)
renovate[bot] Apr 28, 2026
0960a90
docs: fix Sail installation instructions in README (#1337)
Manmryt Apr 28, 2026
4d7e305
updated ExceptionsSm to match more coverpoints with norm rules (#1391)
Teemooooooooo Apr 28, 2026
31e124d
Update openhwgroup/cvw digest to 62c78d1 (#1392)
renovate[bot] Apr 29, 2026
0593196
Don't mark generated files as read-only (#1393)
jordancarlin Apr 29, 2026
a795644
Update j178/prek-action action to v2.0.3 (#1395)
renovate[bot] Apr 29, 2026
205255d
Boot to M-mode (#1324)
davidharrishmc Apr 29, 2026
84d5d72
Update dependency prek to v0.3.11 (#1398)
renovate[bot] Apr 29, 2026
70e2e93
whisper config and vector test extension requirements (#1397)
georgiatai Apr 29, 2026
09b9658
Update riscv/riscv-isa-sim digest to b21cccd (#1403)
renovate[bot] Apr 29, 2026
7cd1121
Enhance CLI with better progress indicators and improved output forma…
jordancarlin Apr 29, 2026
e4ff4c4
Update tenstorrent/whisper digest to aa4a72a (#1405)
renovate[bot] Apr 30, 2026
0a39858
Fix vector tests compiling with new M-mode boot code. (#1406)
davidharrishmc Apr 30, 2026
58ef5e9
Replaced nops in background region with return instruction (#1404)
hamza-1821 Apr 30, 2026
882f52b
Clean up Imperas configs (#1408)
davidharrishmc May 1, 2026
48a08cc
Fixed PMPZca_coverage.svh and Makefile (#1411)
hamza-1821 May 2, 2026
056de1b
fix: read fflags instead of fcsr in fflags failure handler
May 2, 2026
af71b2f
Add coverage file and python generator for Sstvala (#1412)
ayeshaanwaar05 May 3, 2026
296eb01
Add Zama16b coverage and test generator (#1416)
Ammarahwakeel May 3, 2026
7971872
Fix QEMU hang on timeout in run_tests.py (#1409)
Jjateen May 3, 2026
a29da9e
Update comments
jordancarlin May 3, 2026
83c8977
Merge branch 'act4' of https://github.com/riscv-non-isa/riscv-arch-te…
jordancarlin May 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .codespellrc
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
[codespell]
ignore-words-list = hart, vill, vor, FPR, fpr, mone, sie, fle, stip, sxl, VAs, ExceptionsS, rouge, Synopsys, ExtInt, USEED
ignore-words-list = hart, vill, vor, FPR, fpr, mone, sie, fle, stip, sxl, VAs, ExceptionsS, rouge, Synopsys, ExtInt, USEED, useed
2 changes: 1 addition & 1 deletion .github/scripts/install-cvw.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
set -euo pipefail

INSTALL_DIR="${1:?Usage: install-cvw.sh <install-dir>}"
CVW_COMMIT="fa19687ea37314d7eb08bcb720a68e6fb79711c6"
CVW_COMMIT="62c78d156c92a3e0d5a9dce6d6171fbeebcf6162"
VERILATOR_VERSION="v5.036"

# Install Verilator from source
Expand Down
2 changes: 1 addition & 1 deletion .github/scripts/install-spike.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
set -euo pipefail

INSTALL_DIR="${1:?Usage: install-spike.sh <install-dir>}"
SPIKE_COMMIT="dbb30bb31a086decd0cf1376dca3418d0a9bac64"
SPIKE_COMMIT="b21cccdc5f4680d9c13a6bd7d9d00b75aea3cbb5"

git clone https://github.com/riscv/riscv-isa-sim.git
cd riscv-isa-sim
Expand Down
2 changes: 1 addition & 1 deletion .github/scripts/install-whisper.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
set -euo pipefail

INSTALL_DIR="${1:?Usage: install-whisper.sh <install-dir>}"
WHISPER_COMMIT="2e43688c680a1f7ffdb0b19cf0e84fa18590e86b"
WHISPER_COMMIT="aa4a72aa4817a313a0148435a3a542542f5728a9"

git clone https://github.com/tenstorrent/whisper.git
cd whisper
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/autofix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ name: autofix.ci
on:
pull_request:

# Only run on the latest commit if a PR is updated
concurrency:
group: "${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}"
cancel-in-progress: true

permissions:
contents: read

Expand Down
18 changes: 9 additions & 9 deletions .github/workflows/regress.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,24 +13,24 @@ concurrency:
cancel-in-progress: true

env:
SAIL_VERSION: "0.10"
GCC_TOOLCHAIN_VERSION: "2026.04.05"
SAIL_VERSION: "0.11"
RISCV_TOOLCHAIN_VERSION: "2026.04.26"
LLVM_VERSION: "22"

jobs:
lint:
name: Pre-commit check
name: Pre-commit (prek) check
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6

- name: Install the latest version of uv
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
- name: Set up mise
uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4

- name: Ensure pre-commit checks pass
run: uvx pre-commit run --all-files --show-diff-on-failure --color=always
- name: Run prek
uses: j178/prek-action@6ad80277337ad479fe43bd70701c3f7f8aa74db3 # v2.0.3

# Data-driven regression.
# Configs are auto-discovered from the config directory.
Expand Down Expand Up @@ -75,7 +75,7 @@ jobs:

- name: Install RISC-V GCC toolchain
run: |
curl --location https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/${GCC_TOOLCHAIN_VERSION}/riscv64-elf-ubuntu-24.04-gcc.tar.xz \
curl --location https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/${RISCV_TOOLCHAIN_VERSION}/riscv64-elf-ubuntu-24.04-gcc.tar.xz \
| sudo tar xvJ --directory=/usr/local --strip-components=1

- name: Install Clang
Expand Down Expand Up @@ -260,7 +260,7 @@ jobs:

- name: Install RISC-V GCC toolchain
run: |
curl --location https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/${GCC_TOOLCHAIN_VERSION}/riscv64-elf-ubuntu-24.04-gcc.tar.xz \
curl --location https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/${RISCV_TOOLCHAIN_VERSION}/riscv64-elf-ubuntu-24.04-gcc.tar.xz \
| sudo tar xvJ --directory=/usr/local --strip-components=1

- name: Build ELFs (exercises full act build DAG)
Expand Down
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,12 @@ __pycache__
# Work directories
work/

# vector tests
tests/rv32i/V*
tests/rv32i/Zv*
tests/rv64i/V*
tests/rv64i/Zv*

# priv tests
tests/priv/headers
tests/priv/**/*.S
Expand Down
11 changes: 10 additions & 1 deletion .mise.toml
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
# SPDX-License-Identifier: Apache-2.0

[tools]
prek = "0.3.11"
ruby = "3.4.9"
uv = "0.11.7"
uv = "0.11.8"

[settings.ruby]
compile = false

[tasks.prek]
description = "Run prek hooks on all files"
run = "prek run --all-files"

[tasks.prek-install]
description = "Install prek git hooks"
run = "prek install"
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ repos:

# Ensure uv lock file is up to date
- repo: https://github.com/astral-sh/uv-pre-commit
rev: 0.11.7
rev: 0.11.8
hooks:
- id: uv-lock

Expand Down Expand Up @@ -83,7 +83,7 @@ repos:

# Validate Renovate configuration
- repo: https://github.com/renovatebot/pre-commit-hooks
rev: 43.132.1
rev: 43.141.2
hooks:
- id: renovate-config-validator

Expand Down
12 changes: 7 additions & 5 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,26 +16,28 @@ In addition to the runtime prerequisites, contributors should set up the followi

### Pre-commit Hooks

This project uses [`pre-commit`](https://pre-commit.com/) to run automated checks before each commit, including linting, formatting, type checking, and spell checking. Install the hooks with:
This project uses [`prek`](https://prek.j178.dev/) (a fast, drop-in replacement for [`pre-commit`](https://pre-commit.com/)) to run automated checks before each commit, including linting, formatting, type checking, and spell checking. `prek` is pinned in [`.mise.toml`](./.mise.toml) and installed automatically by `mise`. Install the Git hooks with:

```bash
uv run pre-commit install
mise run prek-install
```

Once installed, the hooks will run automatically on `git commit`. You can also run them manually on all files with:

```bash
uv run pre-commit run --all-files
mise run prek
```

(`mise run` works whether or not `mise` is activated in your shell; the underlying commands are `prek install` and `prek run --all-files`.)

### Code Quality Tools

All Python code must pass the following checks:

- **[Ruff](https://docs.astral.sh/ruff/)** for linting and formatting
- **[Pyright](https://github.com/microsoft/pyright)** for type checking

These tools are run automatically by the pre-commit hooks, but can also be run manually:
These tools are run automatically by the prek hooks, but can also be run manually:

```bash
# Lint and type check
Expand All @@ -55,7 +57,7 @@ All Python code should include type hints. Configuration for Ruff and Pyright is
Pull requests are the best way to propose changes to the codebase. We actively welcome your pull requests:

1. Fork the repo and create your branch from `act4`.
2. Set up pre-commit hooks and ensure all checks pass (see [Development Setup](#development-setup)).
2. Set up prek hooks and ensure all checks pass (see [Development Setup](#development-setup)).
3. If you have added or modified tests, ensure they compile and pass by running `make` with an appropriate [DUT configuration](./README.md#configuration). A good choice for testing is `make spike`. To also verify coverage, run `make coverage`.
4. If you have added or modified coverpoints or test generators, refer to the [Developer's Guide](./docs/DeveloperGuide.md) for the expected workflow.
5. If you have updated the docs, ensure that they render correctly in the respective format.
Expand Down
156 changes: 78 additions & 78 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
# Global ARGs - declared before any FROM so they are overridable across all stages.
# Each stage that uses them must redeclare them with a bare ARG (no default) to bring them into scope.
ARG RISCV_TOOLCHAIN_PREFIX=/opt/riscv
ARG SAIL_VERSION=0.10
ARG RISCV_TOOLCHAIN_VERSION=2026.04.05
ARG SAIL_VERSION=0.11
ARG RISCV_TOOLCHAIN_VERSION=2026.04.26

# Stage 1: build riscv-gnu-toolchain
#
Expand All @@ -34,61 +34,61 @@ ARG RISCV_TOOLCHAIN_PREFIX
ARG RISCV_TOOLCHAIN_VERSION

RUN apt-get update && apt-get install -y --no-install-recommends \
autoconf \
automake \
autotools-dev \
bc \
bison \
build-essential \
cmake \
ca-certificates \
curl \
flex \
gawk \
gperf \
git \
libexpat-dev \
libglib2.0-dev \
libgmp-dev \
libmpc-dev \
libmpfr-dev \
libncurses-dev \
libslirp-dev \
libtool \
ninja-build \
patchutils \
python3 \
python3-tomli \
texinfo \
zlib1g-dev
autoconf \
automake \
autotools-dev \
bc \
bison \
build-essential \
cmake \
ca-certificates \
curl \
flex \
gawk \
gperf \
git \
libexpat-dev \
libglib2.0-dev \
libgmp-dev \
libmpc-dev \
libmpfr-dev \
libncurses-dev \
libslirp-dev \
libtool \
ninja-build \
patchutils \
python3 \
python3-tomli \
texinfo \
zlib1g-dev

RUN git clone --depth 1 --branch "${RISCV_TOOLCHAIN_VERSION}" https://github.com/riscv/riscv-gnu-toolchain /tmp/riscv-gnu-toolchain \
&& cd /tmp/riscv-gnu-toolchain \
&& sed -i 's/c,c++/c/g' Makefile.in \
&& sed -i 's/c,c++,fortran/c/g' Makefile.in \
&& ./configure \
--prefix="${RISCV_TOOLCHAIN_PREFIX}" \
--disable-gdb \
--disable-qemu \
--disable-linux \
--disable-nls \
--enable-strip \
&& GCC_EXTRA_CONFIGURE_FLAGS="\
--enable-languages=c \
--disable-gcov \
--disable-lto \
--disable-libgomp \
--disable-libssp \
--disable-libquadmath \
--disable-decimal-float \
--disable-libsanitizer \
--disable-libvtv \
--enable-static \
--disable-shared" \
BINUTILS_TARGET_FLAGS_EXTRA="--disable-gprof --disable-gprofng" \
LDFLAGS="-static -static-libgcc -static-libstdc++" \
make -j"$(nproc)" \
&& rm -rf /tmp/riscv-gnu-toolchain
&& cd /tmp/riscv-gnu-toolchain \
&& sed -i 's/c,c++/c/g' Makefile.in \
&& sed -i 's/c,c++,fortran/c/g' Makefile.in \
&& ./configure \
--prefix="${RISCV_TOOLCHAIN_PREFIX}" \
--disable-gdb \
--disable-qemu \
--disable-linux \
--disable-nls \
--enable-strip \
&& GCC_EXTRA_CONFIGURE_FLAGS="\
--enable-languages=c \
--disable-gcov \
--disable-lto \
--disable-libgomp \
--disable-libssp \
--disable-libquadmath \
--disable-decimal-float \
--disable-libsanitizer \
--disable-libvtv \
--enable-static \
--disable-shared" \
BINUTILS_TARGET_FLAGS_EXTRA="--disable-gprof --disable-gprofng" \
LDFLAGS="-static -static-libgcc -static-libstdc++" \
make -j"$(nproc)" \
&& rm -rf /tmp/riscv-gnu-toolchain

# Stage 2: install mise, then use it to install uv (Python) and Ruby, and pre-install the riscv-unified-db Bundler gem,
# and pre-download all Python dependencies via uv sync.
Expand All @@ -105,14 +105,14 @@ ARG DEBIAN_FRONTEND=noninteractive

# mise needs curl + ca-certificates to download tools, build-essential is needed for installation of Ruby gems.
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
curl \
build-essential \
&& rm -rf /var/lib/apt/lists/*
ca-certificates \
curl \
build-essential \
&& rm -rf /var/lib/apt/lists/*

ENV MISE_YES=1 \
HOME=/home/shared \
PATH="/home/shared/.local/bin:${PATH}"
HOME=/home/shared \
PATH="/home/shared/.local/bin:${PATH}"

RUN mkdir -p /home/shared

Expand All @@ -127,9 +127,9 @@ COPY . /act4/
# Pre-install the riscv-unified-db gem into the mise-managed Ruby's gem dir so `bundle install` is a no-op at runtime.
# Pre-download all Python dependencies so `uv sync` is a no-op at runtime.
RUN cd /act4 \
&& mise install \
&& mise exec -- bundle install --gemfile=framework/src/act/data/Gemfile \
&& mise exec -- uv sync
&& mise install \
&& mise exec -- bundle install --gemfile=framework/src/act/data/Gemfile \
&& mise exec -- uv sync

# Stage 3: final runtime image
FROM ubuntu:24.04@sha256:c4a8d5503dfb2a3eb8ab5f807da5bc69a85730fb49b5cfca2330194ebcc41c7b
Expand All @@ -143,27 +143,27 @@ ARG RISCV_TOOLCHAIN_PREFIX
ARG SAIL_VERSION

ENV TZ="${TZ}" \
SAIL_PREFIX=/opt/sail \
MISE_YES=1 \
HOME=/home/shared
SAIL_PREFIX=/opt/sail \
MISE_YES=1 \
HOME=/home/shared
ENV PATH="${RISCV_TOOLCHAIN_PREFIX}/bin:${SAIL_PREFIX}/bin:/home/shared/.local/bin:${PATH}"

# Runtime-only packages:
# - make, ca-certificates: drive the ACT4 Makefile
# - curl: required to fetch the sail-riscv release archive
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
curl \
make \
&& rm -rf /var/lib/apt/lists/*
ca-certificates \
curl \
make \
&& rm -rf /var/lib/apt/lists/*

# Fetch and install sail-riscv directly into the final image
RUN SAIL_OS="$(uname -s)" \
&& SAIL_ARCH="$(uname -m)" \
&& mkdir -p "${SAIL_PREFIX}" \
&& curl --location --fail \
"https://github.com/riscv/sail-riscv/releases/download/${SAIL_VERSION}/sail-riscv-${SAIL_OS}-${SAIL_ARCH}.tar.gz" \
| tar xz --directory="${SAIL_PREFIX}" --strip-components=1
&& SAIL_ARCH="$(uname -m)" \
&& mkdir -p "${SAIL_PREFIX}" \
&& curl --location --fail \
"https://github.com/riscv/sail-riscv/releases/download/${SAIL_VERSION}/sail-riscv-${SAIL_OS}-${SAIL_ARCH}.tar.gz" \
| tar xz --directory="${SAIL_PREFIX}" --strip-components=1

COPY --from=toolchain-builder "${RISCV_TOOLCHAIN_PREFIX}" "${RISCV_TOOLCHAIN_PREFIX}"
COPY --from=mise-fetcher /act4 /act4
Expand All @@ -174,8 +174,8 @@ RUN chmod -R 777 /act4 /home/shared

# Smoke-test: verify all the binaries landed correctly (runs as root during build, before USER switch)
RUN riscv64-unknown-elf-gcc --version \
&& sail_riscv_sim --version \
&& mise --version
&& sail_riscv_sim --version \
&& mise --version

# Default user with ID 1000 matching typical desktop installation
USER ubuntu
Expand Down
Loading
Loading