This is the main repository for Aetherling. Aetherling appeared as a paper in PLDI 2020. For more details, please see the main Aetherling site.
The supplementary materials for the paper can be found here.
Please see the theory section for an overview of this repo.
Please see the python repo for the Magma backend that compiles to CoreIR and Verilog.
To build this part of the project:
- Install the latest version of stack
- Clone this repo:
git clone --recurse-submodules [email protected]:David-Durst/embeddedHaskellAetherling.git
- Copy
src/Core/Aetherling/Interpretations/Backend_Execute/Constants.hs.template
tosrc/Core/Aetherling/Interpretations/Backend_Execute/Constants.hs
and updateroot_dir
to point to the top folder of this repository on your system. - Build the repo:
stack build
- Install the Rust intermediate layer
- Install Rust and Cargo:
curl https://sh.rustup.rs -sSf | sh
- Install Aetherling's Rust code
cd rustAetherling cargo install
- Explore the IR by running the following command which starts a Haskell interpreter with all files loaded except thoses in
test/
:
stack ghci
- Explore the tests by running the following command and selecting option 2:
stack ghci --test
Please be patient the first time stack ghci
is run on a computer.
It will install all the dependencies in a virtual environment just for this project.
stack test --test-arguments '--num-threads 1'