Skip to content

Talks and Tutorials

Carsten edited this page Dec 6, 2022 · 4 revisions

During ARC2019, we gave a tutorial on TaPaSCo, introducing the most important concepts as well as the design flow for composing and interfacing with an FPGA-based accelerator SoC.

The slides are available for download.

We also recorded the whole tutorial, a playlist with videos on the different steps of the TaPaSCo design flow and the setup of TaPaSCo itself is available on our Youtube channel.

We used the Docker image sommerlukas/tapasco-tutorial:arc2019 for the tasks, it's still available for download on Dockerhub.

Arrayinit example (Bitstream + runtime)

Here, we provide the commands for creating a bitstream of the arrayinit HLS core for the Alveo U280. After bitstream creation, we build the runtime example application.

Requirements: Rocky Linux 8, vivado and vitis_hls on the path, FPGA inserted and cable driver installed.

# setup
# install requirements
dnf -y install which java-openjdk findutils kernel-devel make gcc gcc-c++ elfutils-libelf-devel cmake python3 libatomic git rpm-build ncurses-compat-libs
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o /tmp/rustup.sh && sh /tmp/rustup.sh -y
source ~/.cargo/env
git clone https://github.com/esa-tu-darmstadt/tapasco.git
mkdir workspace
cd workspace
../tapasco/tapasco-init.sh
source tapasco-setup.sh
tapasco-build-toolflow

# bitstream creation (inside workspace)
source tapasco-setup.sh
tapasco hls arrayinit -p AU280 --skipEvaluation
tapasco -v --maxThreads 3 compose [arrayinit x 1] @ 100 MHz -p AU280
# wait for synthesis to finish (a bit over one hour on my machine)
tapasco-load-bitstream compose/axi4mm/AU280/arrayinit/001/100.0/axi4mm-AU280--arrayinit_1--100.0.bit
reboot # reboot required because PCIe enumeration does not work after the first load

# runtime
cd workspace
source tapasco-setup.sh
tapasco-build-libs # compile kernel module and runtime (including examples)
tapasco-load-bitstream compose/axi4mm/AU280/arrayinit/001/100.0/axi4mm-AU280--arrayinit_1--100.0.bit --mode hotplug # load tlkm kernel module
./build/examples/C++/arrayinit/arrayinit-cpp # this is the compiled C++ runtime example
# done!