A benchmark suite for bitstream computing
If you use BitBench in your work, please cite the following paper:
@INPROCEEDINGS{BitBench2019
author = {Kyle Daruwalla and Heng Zhuo and Carly Schulz and Mikko Lipasti},
title = {{BitBench}: A Benchmark for Bitstream Computing},
booktitle = {Languages, Toolchains, and Compilers for Embedded Systems},
year = {2019},
month = {June}
}
BitBench contains 8 benchmarks:
- Linear Solver (Optical Flow)
- Linear Solver (Object Tracking)
- Linear Solver (Inverse Kinematics)
- Iterative SVD
- State-Variable Filter
- Bi-Quad Filter
- Moving Average Filter (Width of 4)
- Moving Average Filter (Width of 32)
To generate the Verilog for the benchmarks, run the following (e.g. iterative SVD):
sbt:bitbench> iterative_svd/clean
sbt:bitbench> iterative_svd/compile
To run the test code, run the following (e.g. iterative SVD):
sbt:bitbench> iterative_svd/run
To disable hardware generation, comment out the plugin scalacOptions
(e.g. iterative SVD):
lazy val iterative_svd = (project in file("IterativeSVD"))
.settings(
commonSettings,
name := "iterative_svd",
// hardwareSettings,
// scalacOptions += s"-P:bitsad-plugin:top:IterativeSVD.scala"
)
Refer to build.sbt
for all the kernel SBT project names.