System Project Structure - 2023.2 English

Vitis Unified Software Platform Documentation: Application Acceleration Development (UG1393)

Document ID
Release Date
2023.2 English

The Vitis IDE System project contains components: platforms derived from Platform components, HLS components, AI Engine components, Application components. The System project refers to the components, defines and stores the linking configuration required to build the system, and defines and stores the packaging configuration required to package the system. In the figure below you can see the elements of the System project under the System Project Settings.

Figure 1. Project Structure

Application Component
Software applications that run on x86 CPU for data center acceleration, or on Arm® processors for embedded systems. The host program interacts with the AI Engine kernels and kernels in the PL region.
HLS Component
Programmable logic (PL) kernels that run on FPGA fabric written with C/C++ code and synthesized into RTL code. HLS components are compiled for implementation in the PL region of the target platform using the v++ --compile --mode hls command.
AI Engine Component
Asynchronous dataflow graphs and kernels that run on AI Engines of specific Versal devices. AI Engine components are compiled into libadf.a files using the v++ --compile --mode aie command.
Platform Component
Defines a custom platform for use in embedded system designs. The acceleration flow also supports the inclusion of predefined platforms installed with the system, or downloaded separately. Custom platforms can be created as described in Creating a Platform Component.
HW Linker Settings
The hardware link process connects the PL kernels and/or AI Engine graph with the platform and builds the hardware system device binary. The hw_link/binary_container.cfg file defines the configuration settings for the linking process.
Package Settings
The Package settings define the files required to package the finished system for use. The system package process uses the v++ --package command to gather the required files to configure and boot the system, to load and run the application, including the AI Engine graph and PL kernels. This builds the necessary package to run emulation and debug, or run your application on hardware.

Files for project settings are stored in the top directory.

vitis-sys.json and vitis-comp.json
This is the top level settings file for applications and components. It defines the components of the application, their source code and the compiler settings file.
The Vitis IDE uses CMake to manage the project. The top level CMakeList.txt defines the global build parameters and adds the component level of the build settings CmakeList.txt as sub-modules. You can modify the settings in CMakeList.txt by editing content defined between START OF USER SETTINGS START and END OF USER SETTINGS
The auto-generated file to enable IntelliSense support using Clang.
The configuration file for PL kernel compilation. It is passed to v++ compiler.

Build output for each target is stored in its own folder under the ./build directory. For example,

  • project/build/sw_emu
  • aie_component/build/x86sim

The runtime configuration fle (xrt.ini) is stored in <project>/<application_component>/runtime/<target>_xrt.ini. Where <target> is software emulation, hardware emulation, or hardware.