Skip to content

plum-umd/wavelet

Repository files navigation

Wavelet is an experimental compiler from a Rust-based DSL to asynchronous dataflow circuits, with its core passes formally verified in the Lean theorem prover.

Currently supported backends include the handshake dialect from LLVM CIRCT and tagless/ordered CGRAs such as RipTide.

Build and Usage

Please first install the following dependencies:

Then simply run

cargo build

which will produce the CLI binary at target/debug/wavelet.

Example source programs can be found in integration-tests/tests/*/test.rs. To compile a simple example to the handshake MLIR dialect, run:

target/debug/wavelet compile integration-tests/tests/simple/test.rs \
    | target/debug/wavelet handshake

Developing and Verifying Proofs

All of the Lean formalization can be found in wavelet-core/lean, and by default, the cargo build command above does not check any proofs. To actually verify all proofs:

cd wavelet-core/lean
lake exec cache get
lake build Thm

About

A formally verified compiler for asynchronous dataflow.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors