RISC-V Formal Verification Framework
See the codeThis is work in progress. The interfaces described here are likely to change as the project matures.
riscv-formal is a framework for formal verification of RISC-V processors.
It consists of the following components:
riscv-formal.See cores/picorv32/ for example bindings for the PicoRV32 processor core.
A processor core usually will implement RVFI as an optional feature that is only enabled for verification. Sequential equivalence check can be used to prove equivalence of the processor versions with and without RVFI.
The current focus is on implementing formal models of all instructions from the RISC-V RV32I and RV64I ISAs, and formally verifying those models against the models used in the RISC-V "Spike" ISA simulator.
riscv-formal uses the FOSS SymbiYosys formal verification flow. All properties are expressed using immediate assertions/assumptions for maximal compatibility with other tools.
Documentation is available at https://riscv-formal.readthedocs.io/.
riscv-formal/cores/<core-name>/ directoryRVFI_OUTPUTS and RVFI_CONN for quickly defining wrapper connectionschecks.cfg config file for the new core
genchecks.pypython3 ../../checks/genchecks.py from the <core-name> directory
riscv-formal/cores/<core-name>/checksmake -C checks j$(nproc)genchecks.py is not currently supported.genchecks.py.riscv-formal checks for memory buses, CSRs, and the B extension were made
possible with funding from Sandia National Laboratories.
Sandia National Laboratories is a multimission laboratory operated by National Technology and Engineering Solutions of Sandia LLC, a wholly owned subsidiary of Honeywell International Inc., for the U.S. Department of Energy's National Nuclear Security Administration. Sandia Labs has major research and development responsibilities in nuclear deterrence, global security, defense, energy technologies and economic competitiveness, with main facilities in Albuquerque, New Mexico, and Livermore, California.
Verilog
76.4%
SystemVerilog
19.7%
Python
3.2%
RISC-V Formal Verification Framework
See the codeThis is work in progress. The interfaces described here are likely to change as the project matures.
riscv-formal is a framework for formal verification of RISC-V processors.
It consists of the following components:
riscv-formal.See cores/picorv32/ for example bindings for the PicoRV32 processor core.
A processor core usually will implement RVFI as an optional feature that is only enabled for verification. Sequential equivalence check can be used to prove equivalence of the processor versions with and without RVFI.
The current focus is on implementing formal models of all instructions from the RISC-V RV32I and RV64I ISAs, and formally verifying those models against the models used in the RISC-V "Spike" ISA simulator.
riscv-formal uses the FOSS SymbiYosys formal verification flow. All properties are expressed using immediate assertions/assumptions for maximal compatibility with other tools.
Documentation is available at https://riscv-formal.readthedocs.io/.
riscv-formal/cores/<core-name>/ directoryRVFI_OUTPUTS and RVFI_CONN for quickly defining wrapper connectionschecks.cfg config file for the new core
genchecks.pypython3 ../../checks/genchecks.py from the <core-name> directory
riscv-formal/cores/<core-name>/checksmake -C checks j$(nproc)genchecks.py is not currently supported.genchecks.py.riscv-formal checks for memory buses, CSRs, and the B extension were made
possible with funding from Sandia National Laboratories.
Sandia National Laboratories is a multimission laboratory operated by National Technology and Engineering Solutions of Sandia LLC, a wholly owned subsidiary of Honeywell International Inc., for the U.S. Department of Energy's National Nuclear Security Administration. Sandia Labs has major research and development responsibilities in nuclear deterrence, global security, defense, energy technologies and economic competitiveness, with main facilities in Albuquerque, New Mexico, and Livermore, California.
Verilog
76.4%
SystemVerilog
19.7%
Python
3.2%