Vitis Key Concepts - 2025.2 English - UG1701

Embedded Design Development Using Vitis User Guide (UG1701)

Document ID
UG1701
Release Date
2025-11-20
Version
2025.2 English

This topic introduces key concepts for understanding and using Vitis tools for embedded system design. The tools support a variety of development flows using either scripted execution or interactive design entry through the Vitis IDE. All of the development flows aim for the same outcome, but the designer's skill level and project requirements can influence the preference for a specific flow type. The design steps are described in the following table.

Table 1. Conceptual Design Steps
Step Comment
Select device Declared as part or board
Setup basic hardware infrastructure Referred to as the hardware platform created with AMD Vivado™ . A valid hardware platform consists of Vivado IP integrator components such as the CIPS, NoC, and at least one clock with associated reset. Optionally, the AI Engine, NoC DDRMC, AXI SmartConnect and AXI Interrupt controller can be added, in addition to clock domains, resets, and custom RTL IP. Within the block design, there will be PFM attributes on cells and ports that define potential attachment points for kernel control, accessing DDR and other memories, streaming input/output, clocks, resets, and interrupts. This initial design is exported to Vitis as an extensible hardware platform.
Add processing elements Referred to as Vitis components, which includes PL Kernels and AI Engine graphs.
Note: These components are developed and verified independently before being added. Component development is not in scope of this document.
Implement Hardware In Vitis terminology, this is the process of compiling and linking the hardware system. The Vitis implementation step leverages Vivado for PL synthesis and place and route.
Add Software Applications Control and/or processing applications running on processors like APU, RPU, and MicroBlaze.
Package Software and Hardware The process of combining loadable object and executable applications to a binary deliverable like SD Card, QSPI Flash, etc.
Deploy and Run on target This step involves loading a binary deliverable and running on hardware or in hardware emulation. The Vitis implementation step leverages Vivado for PL synthesis and place and route.

The following figure demonstrates a conceptual flow for designing and integrating an embedded system with AMD tools.

Figure 1. Vitis Conceptual Design Flow

Vitis tools support different design flows as described in Vitis Flows and Build Environment. The tools and techniques for creating and integrating these different components are the focus of the following sections.

Terminology for Embedded System Design

The following introduces some of the tools and terms you will encounter in this document.

Vitis core development kit
Provides a framework for designing, building, and debugging heterogeneous applications using standard programming languages for both software and hardware components.
Vivado Design Suite
An RTL language design, synthesis, and implementation tool that enables hardware designers to create and export hardware designs (.xsa).
Hardware Design File (.xsa)
Is a hardware container exported from the Vivado Design Suite for multiple uses, including in a fixed or extensible platform.
Fixed Platform (.xpfm)
Includes a completed hardware design (.xsa) and supporting software files defining the operating system, libraries, and boot files. In this context, "fixed" simply means that the hardware design is complete.
Extensible Platform (.xpfm)
The target platform of the Vitis heterogeneous system design flow. In this context, the "extensible" design can be further customized by adding programmable content such as PL kernels and AI Engine graph applications to the platform to build the embedded system. Extensible Platform can also be used to develop software like the fixed platform.
PL kernel (.xo)
A hardware function that can be added to the PL region of an extensible platform to define custom hardware. PL kernels can be defined using C++ code in Vitis HLS, or using RTL code and the IP packager feature of the Vivado Design Suite.
Vitis HLS
A high-level synthesis tool that translates C/C++ functions into RTL for implementation in the programmable logic (PL) region of a device. Vitis HLS generates a compiled object (.xo) file that can be imported into the Vitis environment.
Vitis Compiler
The v++ command used to compile PL kernels (.xo) from C++ code, and to link multiple PL kernels with hardware platforms and AI Engine graph applications to build the device binary.
PS Application
A user-defined software application to be run on an Arm processor in an AMD MPSoC or adaptive SoC device, that can control and interact with PL kernels and AI Engine graph.
Xilinx Runtime library (XRT)
Provides an API and drivers to let your software application control, transfer data to, and read the status of the PL kernels and AI Engine graph application in the hardware design.
AI Engine kernel and graph applications
Compiled by the Vitis aiecompiler and linked into the embedded system with v++. Kernels are functions that run on Versal AI Engines and form the fundamental building blocks of a data flow graph application. The AI Engine graph application is an adaptive dataflow graph with deterministic behavior.
aiecompiler/aiesimulator
Vitis tools for the compilation and simulation of AI Engine graph applications.
Vitis Subsystem (VSS)
A platform-independent, reusable design component that targets a specific part and combines AI Engine and/or programmable logic (PL) kernels, or other VSSs. It is compiled and linked with v++ into a .vss library component.
Vitis Functional Simulation (VFS)
Toolset for functional simulation and verification of AI Engine graphs and HLS PL kernels using MATLAB or Python environment.
Device Binary (.xclbin) file
Contains the programmable device image (PDI) for Versal adaptive SoC or the bitstream for Zynq MPSoC, and metadata needed to control the hardware design. Metadata-only .xclbin files can be used for runtime control of a loaded PDI image.