|
|
2 weeks ago | |
|---|---|---|
| .vscode | 4 weeks ago | |
| core_jpeg@bb03cce45d | 4 weeks ago | |
| kyupy@d3d06722c1 | 2 weeks ago | |
| picorv32@6d4a484b62 | 2 weeks ago | |
| sbst_programs | 2 weeks ago | |
| .gitignore | 2 weeks ago | |
| .gitmodules | 3 weeks ago | |
| .python-version | 4 weeks ago | |
| Makefile | 2 weeks ago | |
| README.md | 2 weeks ago | |
| flake.lock | 4 weeks ago | |
| flake.nix | 4 weeks ago | |
| jpeg_core_tb.v | 4 weeks ago | |
| jpeg_core_tb_run_plasma.py | 2 weeks ago | |
| load_sky130_circuits.py | 4 weeks ago | |
| picorv32_vcd_import.py | 2 weeks ago | |
| pyproject.toml | 4 weeks ago | |
| uv.lock | 4 weeks ago | |
README.md
In-Field Testing Using MISR
Research code for investigations of Silent Data Corruptions (SDCs) caused by hardware faults.
Quick Start
This project has submodules. To ensure everything is up-to-date, run the following after git clone, git pull or git checkout:
git submodule init
git submodule sync
git submodule update
This project manages reproducible programming environments with:
- uv for managing python environments.
- nix for managing non-python tools and benchmark designs. Follow this guide or this guide to setup nix-eda binary cache to avoid re-building EDA-related tools.
Usage
To access non-Python tools such as iverilog, run nix develop before any of the commands below to enter the appropriate shell environment. Commands that only rely on Python tools work also outside a nix develop shell if uv is installed on the base system.
JPEG
Compile jpeg decoder core using iverilog and run RTL simulation of the jpeg decoder core using vvp:
make
uv run jpeg_core_tb_run_plasma.py
See uv run jpeg_core_tb_run_plasma.py --help for more options.
PicoRV32
Run picorv32's built-in testbenches (generate picorv32/testbench.vcd) with one of these commands:
make test_vcd
make test_ez_vcd
Import generated VCD with kyupy and convert it to a pattern file for later fault simulation:
uv run picorv32_vcd_import.py picorv32/testbench.vcd patterns.npy
See uv run picorv32_vcd_import.py --help for more options.
Other Benchmark Circuits
Load synthesized circuits and display statistics (example code):
uv run load_sky130_circuits.py
This script demonstrates how to obtain synthesized netlists via nix derivations published in this github repository. These circuits along with layout and timings are built on-demand using LibreLane classic flow if not yet available in local nix store.
To access the full design data (netlist, timing, layout, ...), call one of these:
nix build github:s-holst/benchmark-circuits#picorv32-sky130
nix build github:s-holst/benchmark-circuits#jpeg_core-sky130