Skip to content
The Task Parallel System Composer (TaPaSCo)
Verilog Scala C Tcl C++ Shell Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin Add script to show progress of Vivado run Jan 24, 2019
boot Adds missing interrupts to device tree for zynq. Closes #171 Nov 6, 2018
examples Remove deprecated INTC0 info, fixes #22 Jun 12, 2019
project Update all dependencies (addresses #141) Nov 15, 2017
.gitignore Modify ProcessIO to capture output instead of closing pipe; Oct 29, 2018
.gitlab-ci.yml Generalize version number for CI artifacts Jun 13, 2019
CMakeLists.txt Bump version to 2019.6 Jun 12, 2019
COPYING Squashed commit of the following: Jul 14, 2017

The Task Parallel System Composer (TaPaSCo)

Tapasco logo

Master Branch Status: pipeline status Dev Branch Status: pipeline status

System Requirements

TaPaSCo is known to work in this environment:

  • Intel x86_64 arch
  • Linux kernel 4.4+
  • Fedora 26+, 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
  • sbt 0.13.x or newer (use SDKMAN! for easy installation)
  • git
  • python
  • GCC newer than 5.x.x for C++11 support
  • OPTIONAL: libncurses for the tapasco-debug application
  • Ubuntu
    sudo apt-get -y update && sudo apt-get -y install unzip git zip findutils curl build-essential \
        linux-headers-generic python cmake libelf-dev libncurses-dev rpm
    curl -s "" | bash
    source "$HOME/.sdkman/bin/"
    sdk install java
    sdk install sbt
  • Fedora
    sudo dnf -y install which unzip git zip tar findutils kernel-devel make gcc gcc-c++ \
        elfutils-libelf-devel cmake ncurses-devel python libatomic rpm-build
    curl -s "" | bash
    source "$HOME/.sdkman/bin/"
    sdk install java
    sdk install sbt

If you want to use the High-Level Synthesis flow for generating custom IP cores, you'll also need:

  • Vivado HLS 2017.4+

Check that at least the following are in your $PATH:

  • sbt
  • vivado
  • git
  • bash
  • [vivado_hls]

Basic Setup

  1. Open a terminal in the main directory of the repository and source the TaPaSCo setup script via . You need to do this every time you use TaPaSCo (or put it into your ~/.bashrc or ~/.profile).
  2. Build TaPaSCo: sbt compile (this may take a while, sbt needs to fetch all dependencies etc. once).
  3. Create the necessary jar files with sbt assembly.
  4. Optional: Run TaPaSCo unit tests: sbt test
  5. Optional: Generate sample configuration file: tapasco -n config.json TaPaSCo should exit immediately and config.json will include a full configuration that can be read with --configFile, including one example for each kind of job.
  6. Build libraries and tlkm kernel module: tapasco-build-libs

When everything completed successfully, TaPaSCo is ready to use!

Build a TaPaSCo design

  1. Import your kernels
    • HDL flow: tapasco import <ZIP> as <ID>
    • HLS flow: tapasco hls <KERNELS>
  2. Create a composition: tapasco compose [<KERNEL> x <COUNT>] @ <NUM> MHz -p <PLATFORM>
  3. Load the bitstream: tapasco-load-bitstream <BITSTREAM>
  4. Implement your host software
    • C API
    • C++ API

You can get more information about commands with tapasco help <COMMAND>.


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).


We provided pre-compiled packages for many popular Linux distributions. All packages are build for the x86_64 variant.

Ubuntu 16.04

Kernel Driver Kernel Driver Debug Runtime (DEB) Runtime Debug (DEB)

Ubuntu 18.04

Kernel Driver Kernel Driver Debug Runtime (DEB) Runtime Debug (DEB)

Fedora 27

Kernel Driver Kernel Driver Debug Runtime (RPM) Runtime Debug (RPM)

Fedora 28

Kernel Driver Kernel Driver Debug Runtime (RPM) Runtime Debug (RPM)

Fedora 29

Kernel Driver Kernel Driver Debug Runtime (RPM) Runtime Debug (RPM)

You can’t perform that action at this time.