# Fault Simulation PPSFP (Parallel-Pattern Single-Fault Propagation) style fault simulators and other utility functions for use in various projects. These fault simulators are meant to be correct (ensured by unit-tests) and reasonably fast. ## Quick Start This project has submodules. To ensure everything is up-to-date, run ``` git submodule update --init --recursive ``` after `git clone`, `git pull` or `git checkout`. This project manages reproducible programming environments with: - [uv](https://docs.astral.sh/uv/) for managing python environments. - [nix](https://nixos.org) for managing non-python tools and benchmark designs. Follow [this guide](https://librelane.readthedocs.io/en/stable/installation/nix_installation/index.html) or [this guide](https://github.com/fossi-foundation/nix-eda/blob/main/docs/installation.md) to setup [nix-eda](https://github.com/fossi-foundation/nix-eda/tree/main) binary cache to avoid re-building EDA-related tools. Smoke-test: `uv run pytest` For running Jupyter Notebooks in the reproducible programming environment, install a kernelspec with this command: ``` uv run ipython kernel install --user --env VIRTUAL_ENV $(pwd)/.venv --env PATH ${PATH} --name=uv-env ``` Run a Jupyter Lab server locally: ``` uv run jupyter lab ``` Choose `uv-env` as kernel in Jupyter Lab. `uv run main.py ` runs a naive, baseline fault simulation. `nix develop` makes [quaigh](https://github.com/coloquinte/quaigh) available, another simulator/atpg written in rust.