ce293ee4c5 | ||
---|---|---|
config | ||
include | ||
lib | ||
samples | ||
test | ||
tools | ||
.clang-format | ||
.gitignore | ||
CMakeLists.txt | ||
README.md |
README.md
ScaleHLS Project (scalehls)
This project aims to create a framework that ultimately converts an algorithm written in a high level language into an efficient hardware implementation. With multiple levels of intermediate representations (IRs), MLIR appears to be the ideal tool for exploring ways to optimize the eventual design at various levels of abstraction (e.g. various levels of parallelism). Our framework will be based on MLIR, it will incorporate a backend for high level synthesis (HLS) C/C++ code. However, the key contribution will be our parametrization and optimization of a tremendously large design space.
Quick Start
This setup assumes that you have built LLVM and MLIR in $LLVM_BUILD_DIR
and this repository is cloned to $SCALEHLS_DIR
. To build and launch the tests, run
mkdir $SCALEHLS_DIR/build
cd $SCALEHLS_DIR/build
cmake -G Ninja .. -DMLIR_DIR=$LLVM_BUILD_DIR/lib/cmake/mlir -DLLVM_DIR=$LLVM_BUILD_DIR/build/lib/cmake/llvm -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_BUILD_TYPE=DEBUG
cmake --build . --target check-scalehls
export PATH=$SCALEHLS_DIR/build/bin:$PATH
After the installation and test successfully completed, you should be able to run
cd $SCALEHLS_DIR
scalehls-opt -convert-to-hlscpp test/Conversion/ConvertToHLSCpp/test_*.mlir
scalehls-opt -convert-to-hlscpp test/EmitHLSCpp/test_*.mlir | scalehls-translate -emit-hlscpp
TODOs List
HLSCpp Dialect
- TODOs in HLSCpp/PragmaOps.td.
QoREstimation Pass
- Performance estimator implementation.
PragmaDSE Pass
EmitHLSCpp
- Test HLS C++ emitter with onnx/npcomp;
- TODOs in EmitHLSCpp.cpp;
- Support memref/tensor cast/view/subview operations;
- Support atomic/complex/extention -related operations.