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.
 
 
 
 
 
 
stefan 45ab484641 some useful options for vcd converter, some docs 2 weeks ago
.vscode better docs and vscode config 4 weeks ago
core_jpeg@bb03cce45d jpeg core example, migrate to flake 4 weeks ago
kyupy@d3d06722c1 import and validate vcd with kyupy 2 weeks ago
picorv32@6d4a484b62 import and validate vcd with kyupy 2 weeks ago
.gitignore import and validate vcd with kyupy 2 weeks ago
.gitmodules update submodules 3 weeks ago
.python-version init uv, use nix for synthesized picorv32 4 weeks ago
Makefile some useful options for vcd converter, some docs 2 weeks ago
README.md some useful options for vcd converter, some docs 2 weeks ago
flake.lock jpeg core example, migrate to flake 4 weeks ago
flake.nix jpeg core example, migrate to flake 4 weeks ago
jpeg_core_tb.v jpeg core example, migrate to flake 4 weeks ago
jpeg_core_tb_run_plasma.py fix default vvp, some doc 4 weeks ago
load_sky130_circuits.py print jpeg_core netlist stats 4 weeks ago
picorv32_vcd_import.py some useful options for vcd converter, some docs 2 weeks ago
pyproject.toml jpeg core example, migrate to flake 4 weeks ago
uv.lock jpeg core example, migrate to flake 4 weeks ago

README.md

In-Field Testing Using MISR

Setup

After cloning this repository, run:

git submodule init
git submodule update

This project uses Nix to manage reproducible programming environments.

Run nix develop to enter a shell with all necessary software.

If nix is not installed, follow this guide. No need to clone librelane here, but it is good to set up the extra-substituters as described in the guide for using LibreLane for making layouts with SkyWater 130nm technology.

Usage

Compile jpeg decoder core using iverilog and run RTL simulation of the jpeg decoder core using vvp:

nix develop
make
uv run jpeg_core_tb_run_plasma.py

Call uv run jpeg_core_tb_run_plasma.py --help for more options.

Load synthesized circuits and display statistics (example code):

uv run load_sky130_circuits.py

Run picorv32's built-in testbench (generate picorv32/testbench.vcd):

make test_vcd

or

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

Call uv run picorv32_vcd_import.py --help for more options.

Some uv commands work also outside a nix develop shell if uv is installed on the base system. The 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) if not yet available in local nix store.