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.shAfter successfully building the Docker image, run docker-run.sh to launch the
Docker image, landing you at a bash shell prompt.
$ ./docker-run.shNext, 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.ccand comment out theriscvlines (also specified). In total: 3 lines commented, 1 line uncommented. - Go to
/opt/ila-to-rosette/buildand run thecmakecommand listed in the Docker file associated withila-to-rosette. - Run
make. - Run the
ILAngToRosettebinary 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.