This repository contains the applications implementated for paper "FLOWER: A Comprehensive Dataflow Compiler for High-Level Synthesis".
It is based on a fork of Stincilla.
FLOWER requires a working AnyDSL installation. A script to build the impala frontend and thorin backend as well as the runtime component is provided by the anydsl metaproject (setup.sh).
For Xilinx FPGAs Vitis 2021.2.1 and for Intel FPGAs Intel FPGA SDK for OpenCL 19.4 needs to be separatly installed.
The setup.sh configures Flower and sets all required paths. The backend for code generation will be set to cpu. This can be changed via CMake:
BACKEND: defines the backend to generate code for (supported values:cpu,avxaocl,hls)- On
hlsFPGA_PART: insert FPGA part or the model of Xilinx accelerator card.SYNTHESIS:offfor a quick software simulation.onfor HDL generation and logic synthesis.HW_EMULATION:offlogic synthesis and FPGA bitstream generation,onhardware emulation.PROFILER:onenabling runtime full profiler.
ANYDSL_FPGA: device configuration variable.HPCfor generating complete HW/SW design for PCIe accelerator cards.SOCgenerating IP. AddingGMEM_OPTbeside HPC or SOC, assigns separate memory interfaces for ports accessing the global memory.
- On
Example:
cd anydsl/flower_anydsl/build
cmake -DBACKEND=opencl .. # optional: switch to multi-platform (Intel/Xilinx) OpenCL backend.
makeTo generate vectorized version of applications, edit src/backend_hls.impala and modify the value of vector_length, then before generating a new application rebuild the cache:
cd anydsl/flower_anydsl/build
make rebuild_cache