xBalbinus / sholva

An experimental Tiny86 decoder and verifier for SIEVE

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

shol'va

Build Status

shol'va is a Verilog and Clash implementation of a Tiny86 trace verifier.

Usage

Dependencies

Built using nix. Follow the upstream nix installation instructions.

Building

shol'va currently builds as a sanity test; producing proofs objects for each example in test. To run the build:

$ nix-build

Testing

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

Development Notes

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

Distribution and Licensing

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.

About

An experimental Tiny86 decoder and verifier for SIEVE

License:GNU Affero General Public License v3.0


Languages

Language:Verilog 57.3%Language:Rust 17.1%Language:Python 7.2%Language:Ruby 4.7%Language:Haskell 4.0%Language:Nix 2.9%Language:Makefile 2.9%Language:Dockerfile 1.4%Language:Assembly 1.2%Language:C 0.7%Language:Shell 0.5%Language:Java 0.1%