A port of [riscv-formal](https://github.com/SymbioticEDA/riscv-formal) to nMigen
Go to file
Donald Sebastian Leung 283d8531e0 Update README 2020-09-17 17:06:55 +08:00
rvfi Explicitly define reset value in cycle signal for uniqueness check 2020-09-17 13:25:52 +08:00
LICENSE Fix copyright holder in license 2020-08-03 12:19:14 +08:00
README.md Update README 2020-09-17 17:06:55 +08:00
shell.nix Remove copy of Minerva 2020-08-20 15:32:10 +08:00

README.md

riscv-formal-nmigen

A port of riscv-formal to nMigen

Breakdown

File/Directory Description
shell.nix nix-shell configuration file
rvfi RISC-V Formal Verification Framework (nMigen port)
rvfi/insns Supported RISC-V instructions and ISAs
rvfi/checks Checks for RISC-V compliant cores
rvfi/cores Cores currently tested against this port of riscv-formal
rvfi/cores/minerva/verify.py Verification tasks for the Minerva core

Running the Verification

First make sure you have Nix installed. Then cd to the root directory of this repo and run:

$ nix-shell

This should run the tests (cache, multiplier, divider) provided by Minerva itself and give you an environment with all the dependencies required for this project. Then, to run the main verification tasks for Minerva provided in this repo:

$ python -m rvfi.cores.minerva.verify

This should run in the order of a few hours.

Scope

The RV32I, RV32M, RV64I and RV64M ISAs are currently implemented but only RV32IM are being tested by integrating with the Minerva core.

Possible improvements

In no particular order:

  • Combine individual instruction checks into single ISA check (currently, doing so takes forever even when depth is set to only 20)
  • Parallelize execution of verification tasks to reduce the total time required to run all verification tasks on a multi-core system

License

See LICENSE