Master Branch Status:
Dev Branch Status:
TaPaSCo is known to work in this environment:
- Intel x86_64 arch
- Linux kernel 4.4+
- Fedora 30+, Ubuntu 16.04+
- Fedora 24/25 does not support debug mode due to GCC bug
- Bash Shell 4.2.x+
Other setups likely work as well, but are untested.
To use TaPaSCo, you'll need working installations of
- Vivado Design Suite 2017.4 or newer
- Java SDK 8 - 11
- git
- python
- GCC newer than 5.x.x for C++11 support
- OPTIONAL: libncurses for the tapasco-debug application
- OPTIONAL: Local Installation of gradle 5.0+, if you do not want to use the included wrapper.
If you want to use the High-Level Synthesis flow for generating custom IP cores, you will also need:
- Vivado HLS 2017.4+
Check that at least the following are in your $PATH
:
vivado
- If not sourcepath/to/vivado/settings64.sh
git
bash
- [
vivado_hls
] - Since Vivado 2018.1 this is included invivado
When using Ubuntu, ensure that the following packages are installed:
- unzip
- zip
- git
- findutils
- curl
- default-jdk
apt-get -y install unzip git zip findutils curl default-jdk
When using Fedora, ensure that the following packages are installed:
- which
- java-openjdk
- findutils
dnf -y install which java-openjdk findutils
Using the prebuilt packages, the setup of TaPaSCo is very easy:
- Create or open a folder, which you would like to use as your TaPaSCo workspace.
Within this folder, run the TaPaSCo-Initialization-Script which is located in
/opt/tapasco/tapasco-init-toolflow.sh
. This will setup your current folder asTAPASCO_WORK_DIR
. It will also create the filetapasco-setup.sh
within your current directory. - Source
tapasco-setup.sh
.
If you want to use a specific (pre-release) version or branch, you can do the following:
- Clone TaPaSCo:
git clone https://github.com/esa-tu-darmstadt/tapasco.git
- Optionally Checkout a corresponding branch:
git checkout <BRANCH>
- Create or open a folder, which you would like to use as your TaPaSCo workspace.
Within this folder, run the TaPaSCo-Initialization-Script
tapasco-init.sh
which is located in the root-folder of your cloned repo. This will setup your current folder asTAPASCO_WORK_DIR
. It will also create the filetapasco-setup.sh
within your workdir. - Source
tapasco-setup.sh
to setup the TaPaSCo-Environment. - Build the TaPaSCo-Toolflow using
tapasco-build-toolflow
.
Whenever you want to use TaPaSCo in the future, just source the corresponding workspace using the tapasco-setup.sh
.
This also allows you to have multiple independent TaPaSCo-Workspaces.
Ubuntu:
apt-get -y install build-essential linux-headers-generic python cmake libelf-dev libncurses-dev git rpm
Fedora:
dnf -y install kernel-devel make gcc gcc-c++ elfutils-libelf-devel cmake ncurses-devel python libatomic git rpm-build
If you want to use a specific (pre-release) version or branch, you can do the following:
- Clone TaPaSCo:
git clone https://github.com/esa-tu-darmstadt/tapasco.git
- Optionally Checkout a corresponding branch:
git checkout <BRANCH>
- Create or open a folder, which you would like to use as your TaPaSCo workspace.
Within this folder, run the TaPaSCo-Initialization-Script
tapasco-init.sh
which is located in the root-folder of your cloned repo. This will setup your current folder asTAPASCO_WORK_DIR
. It will also create the filetapasco-setup.sh
within your workdir. - Source
tapasco-setup.sh
to setup the TaPaSCo-Environment. - Build the TaPaSCo-Toolflow using
tapasco-build-libs
.
All of this is not necessary when using the prebuilt packages. In that case, the corresponding libraries and files are installed as usual for your OS.
- Import your kernels
- HDL flow:
tapasco import path/to/ZIP as <ID> -p <PLATFORM>
will import the corresponding ZIP file as a new HDL-based core. The Kernel-ID is set from and the optional flag-p <PLATFORM>
determines for which platform the kernel will be available. If it is omitted, it will be made available for all platforms which may take a lot of time. - HLS flow:
tapasco hls <KERNEL> -p <PLATFORM>
will perform hls according to thekernel.json
. The resulting HLS-based core will be made available for the platform given by-p <PLATFORM>
. Again,-p
can be omitted. HLS-Kernels are generally located in$TAPASCO_WORKDIR/kernel
. If you want to add kernels you can create either symlink or copy them into the folder. Additionally, the folder can be temporarily changed using the optional--kernelDir path/to/kernels
flag like this:tapasco --kernelDir path/to/kernels hls <KERNEL> -p <PLATFORM>
- HDL flow:
- Create a composition:
tapasco compose [<KERNEL> x <COUNT>] @ <NUM> MHz -p <PLATFORM>
- Load the bitstream:
tapasco-load-bitstream <BITSTREAM>
- Implement your host software
- C API
- C++ API
You can get more information about commands with tapasco --help
and the corresponding subpages with tapasco --help <TOPIC>
- Design your Accelerator using HLS/HDL according to the previous section.
- Load your bitstream:
tapasco-load-bitstream my-design.bit --reload-driver
. To do this, you have to sourcevivado
andtapasco-setup.sh
. - Write a C/C++ executable that interfaces with your design accordingly. To get a better understanding of this, you might want to refer to the collection of examples and the corresponding README which is located in
$TAPASCO_HOME/runtime/examples
- Build and Compile your Software.
TaPaSCo is based on ThreadPoolComposer, which was developed by us as part of the REPARA project, a Framework Seven (FP7) funded project by the European Union.
We would also like to thank Bluespec, Inc. for making their Bluespec SystemVerilog (BSV) tools available to us and their permission to distribute the Verilog code generated by the Bluespec Compiler (bsc).
A List of publications about TaPaSCo or TaPaSCo-related research can be found here.
If you want to cite TaPaSCo, please use the following information:
[Korinth2019] Korinth, Jens, Jaco Hofmann, Carsten Heinz, and Andreas Koch. 2019. The Tapasco Open-Source Toolflow for the Automated Composition of Task-Based Parallel Reconfigurable Computing Systems. In International Symposium on Applied Reconfigurable Computing (Arc).
We provided pre-compiled packages for many popular Linux distributions. All packages are build for the x86_64 variant.
Kernel Driver Kernel Driver Debug Runtime (DEB) Runtime Debug (DEB) Toolflow
Kernel Driver Kernel Driver Debug Runtime (DEB) Runtime Debug (DEB) Toolflow
Kernel Driver Kernel Driver Debug Runtime (RPM) Runtime Debug (RPM) Toolflow
Kernel Driver Kernel Driver Debug Runtime (RPM) Runtime Debug (RPM) Toolflow