shol'va is a Verilog and Clash implementation of a Tiny86 trace verifier.
Built using nix. Follow the upstream nix installation instructions.
shol'va currently builds as a sanity test; producing proofs objects for each example in test
.
To run the build:
$ nix-build
Dropping into a development shell and manually running the full test suite,
$ nix-shell {--pure}
# --pure restricts programs in $PATH to _only_ those used for building/testing *shol'va*.
[nix-shell]$ cd test
[nix-shell]$ make test
In the same sub-shell context, further subsets of the test suite for each subcomponent:
# test the full Tiny86 circuit test suite
$ make _test-tiny86
# test the Tiny86 circuit Clash components Haskell source
$ make _test-clash
# test the Tiny86 circuit Verilog components
$ make _test-verilog
# test the Tiny86 circuit Verilog components, isolating modules
$ SHOLVA_MODULES="alu syscall" make _test-verilog
# test the manual end-to-end test suite
$ make _test-pipeline
For an interactive visualization of the dependency graph using nix-tree
,
$ nix-instantiate | xargs -o nix-tree --derivation
Dependencies are managed using niv
. To bump dependencies,
# Update all dependencies.
$ niv update
# Update, e.g. nixpkgs, to a specific branch. Note that subsequent updates continue to pull from this branch.
$ niv update nixpkgs -b 22.11
This research was developed with funding from the Defense Advanced Research Projects Agency (DARPA) under Agreement No. HR001120C0084.
The views, opinions, and/or findings expressed are those of the author(s) and should not be interpreted as representing the official views or policies of the Department of Defense or the U.S. Government.
DISTRIBUTION STATEMENT A: Approved for public release, distribution unlimited.
shol'va is licensed under the GNU AGPLv3 License. A copy of the terms can be found in the LICENSE file.