-
Notifications
You must be signed in to change notification settings - Fork 55
Vitis
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.
-
axis.c: PipelineC main file
- Pipeline
the_pipeline()- Function is autopipelined to meet
MAIN_MHZspecified - Has input and output wires connected to the IO and Control logic
- Function is autopipelined to meet
- IO and Control
io_and_ctrl()- Has wires to and from the pipeline
- Inputs go directly into pipeline
- After being output from the pipeline, output data is stored in FIFO
- Output data FIFO is used to read data out as
out_readyis signaled
- Pipeline
-
build.sh: script to run
pipelinectool and produce VHDL -
vitis_scripts: All Vitis files
-
build_all.sh: Run all builds for specified
TARGET- Vivado: package_xo.tcl
- Vitis: vitis_compile.sh and vitis_link.sh
- gpp.sh C++ compile
- Runs tests: test.sh
- includes directory:
-
sources directory:
- xrt.ini Xilinx Runtime Config
- Vitis Config: vitis_hls.cfg and vitis_link.cfg
-
package_xo.tcl script used by Vivado to package VHDL files with an AXIS interface into an IP
.XOfile- utils.tcl has helpers for configuring clocks and AXIS signals
-
main.cpp:
- Based on Vitis Hello World demo
- TODO What does main.cpp do? Setup environment and transfer data?
- Uses helper conversions of streaming data to and from AXI bus access: maxi_to_stream.cpp and stream_to_maxi.cpp
-
build_all.sh: Run all builds for specified
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
- for example:
- Use build_all.sh to build and run example project.
- If you wish to build for
hwchangeTARGETin build_all.sh script.
- If you wish to build for
hw_emu TODO what is hardware emulation, xsim simulation? modelsim? how to run it?
TARGET=hw_emu and test.sh?
What does it do, also uses main.cpp?
TODO Tested on Alveo hardware , how to run it?
TARGET=hw and test.sh?
Runs main.cpp for test?