riscv-formal-nmigen/README.md

45 lines
1.6 KiB
Markdown
Raw Permalink Normal View History

2020-07-14 10:30:37 +08:00
# riscv-formal-nmigen
2020-07-14 10:42:06 +08:00
A port of [riscv-formal](https://github.com/SymbioticEDA/riscv-formal) to nMigen
2020-07-21 16:13:52 +08:00
## Breakdown
2020-08-21 11:46:39 +08:00
| File/Directory | Description |
| --- | --- |
| `shell.nix` | [nix-shell](https://nixos.wiki/wiki/Development_environment_with_nix-shell) configuration file |
2020-08-17 12:05:39 +08:00
| `rvfi` | RISC-V Formal Verification Framework (nMigen port) |
| `rvfi/insns` | Supported RISC-V instructions and ISAs |
2020-08-20 15:32:10 +08:00
| `rvfi/checks` | Checks for RISC-V compliant cores |
| `rvfi/cores` | Cores currently tested against this port of riscv-formal |
2020-08-21 11:46:39 +08:00
| `rvfi/cores/minerva/verify.py` | Verification tasks for the Minerva core |
## Running the Verification
First make sure you have [Nix](https://nixos.org/download.html) installed. Then `cd` to the root directory of this repo and run:
2020-07-21 16:13:52 +08:00
```bash
$ nix-shell
```
2020-08-17 16:46:15 +08:00
2020-08-20 15:32:10 +08:00
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:
2020-08-17 16:46:15 +08:00
```bash
2020-08-17 16:46:15 +08:00
$ python -m rvfi.cores.minerva.verify
```
2020-07-21 16:13:52 +08:00
Note that a pool of `# of cores on your machine` processes is created by default which enables the verification tasks to execute in parallel. The number of processes in the pool can be configured by passing in a command-line argument, e.g.
```bash
$ python -m rvfi.cores.minerva.verify 8
```
creates a pool of 8 processes.
2020-09-17 17:06:55 +08:00
## Scope
2020-09-17 17:06:55 +08:00
The RV32I, RV32M, RV64I and RV64M ISAs are currently implemented but only RV32IM are being tested by integrating with the Minerva core.
2020-09-17 17:06:55 +08:00
2020-07-21 16:13:52 +08:00
## License
See [LICENSE](./LICENSE)