Go to file
Hanchen Ye 6ca221dfae [EmitHLSCpp] support to emit pragma operations 2020-09-15 00:29:35 -05:00
include [HLSCppDialect] add Assign operation, ConvertToHLSCpp pass; [HLSCppEmitter] add two testcases 2020-09-13 23:40:24 -05:00
lib [EmitHLSCpp] support to emit pragma operations 2020-09-15 00:29:35 -05:00
samples mechanical rename hlsld to scalehls; update file structure 2020-09-06 18:05:16 -05:00
test [EmitHLSCpp] add affine testcases; fix a small bug in getName method 2020-09-14 23:29:03 -05:00
tools [EmitHLSCpp] support to emit hlscpp::AssignOp; add many new testcases except affine operations 2020-09-14 01:25:07 -05:00
.clang-format mechanical rename hlsld to scalehls; update file structure 2020-09-06 18:05:16 -05:00
.gitignore build code structure; update readme; remove pymlir directory 2020-08-25 14:11:30 -05:00
CMakeLists.txt change lit report style 2020-09-14 19:56:06 -05:00
README.md update readme 2020-09-13 23:45:52 -05:00

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. To build and launch the tests, run

mkdir build && cd build
cmake -G Ninja .. -DMLIR_DIR=$LLVM_BUILD_DIR/lib/cmake/mlir -DLLVM_EXTERNAL_LIT=$LLVM_BUILD_DIR/bin/llvm-lit
cmake --build . --target check-scalehls

After the installation and test successfully completed, you should be able to run

bin/scalehls-translate -emit-hlscpp ../test/EmitHLSCpp/test_*.mlir

TODO List

scalehls-estimator: EstimateQoR

  1. Tooling initial implementation.

scalehls-translate: EmitHLSCpp

  1. Test HLS C++ emitter with some real benchmarks;
  2. TODOs in EmitHLSCpp.cpp;
  3. Support memref/tensor cast/view/subview operations;
  4. Support atomic/complex/extention -related operations.

scalehls-opt: PragmaInsertion

HLSCpp Dialect

  1. TODOs in HLSCpp/Ops.td.

References

  1. MLIR Documents
  2. mlir-npcomp github
  3. circt github
  4. onnx-mlir github