In-Field Testing Using MISR
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

2.4 KiB

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