Skip to content
HardwareFuzzPublic

About

No description, website, or topics provided.

Resources

Stars

5 stars

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

Repository files navigation

RISCSmith

Prerequisites

  • 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

Get the simulator binaries

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.sh

Configure environment variables

Source 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.

Quick start

  • 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 in configs/ to tune duration and options.

About

No description, website, or topics provided.

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages