Skip to content
Julian Kemmerer edited this page Dec 31, 2022 · 31 revisions

WORK IN PROGRESS


This page describes the current state of PipelineC+Xilinx Vitis integration. It primarily consists of a demo showing a PipelineC pipeline in a Vitis AXIS based design.

Beginning in PR 127, the primary person behind this fantastic work is @bartokon. If you have any Vitis-related questions or comments they are likely the best person to contact.

The files discussed here are in the PipelineC repo at examples/vitis_import.

Files

Build

Tested with Vivado/Vitis tools version 2022.2

Scripts are used to generate Vitis HLS IPs that transfer data to/from PipelineC generated IP.

Streaming interfaces are used as communication channel.

PipelineC IP is packaged as an .XO and connected with Vitis at linking stage.

  • Source Xilinx env first
    • for example: source /tools/Xilinx/Vitis/2022.2/settings64.sh
  • Use build_all.sh to build and run example project.
    • If you wish to build for hw change TARGET in build_all.sh script.

Hardware Emulation (Simulation)

Setting TARGET=hw_emu in the Makefile will cause test.sh to run main.cpp configured to do the following:

  • Reads xrt.ini file that specifies that hw_emu should be run with xsim and gui
  • Can monitor debug ports
  • Data received from simulation is stored and checked against expected results.

Hardware Test

Tested on Alveo hardware.

Setting TARGET=hw in the Makefile will cause test.sh to run main.cpp configured to do the following:

  • Programs the programmable logic
  • Creates IO buffers in the HBM memory.
  • Runs the hardware kernel that sends and receives streams to-from the FPGA.
  • Data received is stored and checked against expected results.
Clone this wiki locally