benchmarks
: Scripts to run benchmarks in the paper.hw
: PyRTL code for benchmark designs. Includes Python script that compiles PyRTL designs to Oyster IR.ila-to-rosette
: C++ library that compiles ILA specifications into Rosette pre/postconditions.oyster
: Racket code that symbolically evaluates Oyster IR and automatically generates control logic based on ILA specifications.pyrtl-code-gen
: Scripts that demonstrate generating PyRTL code from the control logic synthesis results.results
: Stores results from running control logic synthesis benchmarks (initially empty).spec
: Directory storing compiled ILA specifications used for benchmarks.
The following are dependencies for running the artifact. The provided
Dockerfile
sets up an environment with the required dependencies.
- Python (v3.11)
- PyRTL built with branch
function-holes
- Racket (v8.7 or later)
- Rosette (v4.1)
- Boolector (v2.4.1 or later)
- CVC4 (v1.8 or later)
The whole environment for the artifact can be set up using Docker. (This is recommended for artifact evaluation.)
Run the docker-build.sh
script to build the Docker image. (Depending how
Docker is installed on your machine, you may need to run the script with
sudo
/doas
.)
$ ./docker-build.sh
After successfully building the Docker image, run docker-run.sh
to launch the
Docker image, landing you at a bash shell prompt.
$ ./docker-run.sh
Next, cd
into the hw
directory, and read the README.md
file, following the
steps written there.
Next, cd
into the /opt/ila-to-rosette/build
directory on the container. Running
the binary ILAngToRosette
will produce a file called riscv_rspec.rkt
, which
contains the translation for a RISC-V ILA to Rosette pre/postconditions.
If you wish to produce the Rosette specification for the AES accelerator:
- Uncomment the lines of code specified in
/opt/ila-to-rosette/src/main.cc
and comment out theriscv
lines (also specified). In total: 3 lines commented, 1 line uncommented. - Go to
/opt/ila-to-rosette/build
and run thecmake
command listed in the Docker file associated withila-to-rosette
. - Run
make
. - Run the
ILAngToRosette
binary which will produceAES_128_Rnd_rspec.rkt
.
This part of the artifact evaluates the main control logic synthesis technique over the three case studies.
cd
into the benchmarks
directory, and read the README.md
file, following
the steps written there.
cd
into the pyrtl-code-gen
directory, and read the README.md
file,
following the steps written there.