- glibc runtime + loader (
libc,libm,libgcc_s,libstdc++,ld-linux) - Compression/ELF utilities:
zlib,libzstd,libelf - SQLite:
libsqlite3
Install the runtime libraries with:
- Ubuntu/Debian:
sudo apt-get install --no-install-recommends --no-upgrade --no-remove \ libc6 libgcc-s1 libstdc++6 zlib1g libzstd1 libelf1t64 libsqlite3-0
- Fedora/RHEL:
sudo dnf install glibc libgcc libstdc++ zlib libzstd elfutils-libelf sqlite-libs
Prebuilt Verilator-based RISC-V implementation binaries are published on Zenodo:
https://zenodo.org/records/17706239
Download the archive and extract it into riscv_impls_bins in the repository root. The setup scripts expect binaries such as cva6_rv64, rocket_rv32, spike, xiangshan_rv64, etc. to live in that directory.
Or fetch and unpack in one step:
bash scripts/download_riscv_bins.shSource one of the helper scripts to export the wrapper locations:
- Bash:
source scripts/setup_riscv_env.sh - Fish:
source scripts/setup_riscv_env.fish
The scripts populate RISCV_WRAPPER_* variables (e.g., RISCV_WRAPPER_CVA6_RV64_BIN, RISCV_WRAPPER_SPIKE_BIN, RISCV_WRAPPER_XS_EMU) that riscv_fuzz_test uses to locate each implementation.
-
Reproduce known divergences:
bash run_reproduce_diffs.sh
This replays the diff cases under
diffs/against the appropriate implementations. -
Run a short RV64 Spike vs. CVA6 differential fuzz (writes to
./temp):bash run_diff_rv64_spike_cva6.sh
Adjust
--max-runs,--concurrency, and the TOML configs inconfigs/to tune duration and options.