The tutorials under the AI Engine Development help you learn how to target, develop, and deploy advanced algorithms using a Versal AI Engine array in conjunction with PL IP/kernels and software applications running on the embedded processors. To successfully deploy AI Engine applications in hardware, you need to be aware of the Vitis and AI Engine tools and flows.
Feature Tutorials highlight specific features and flows that help develop AI Engine applications.
Design Tutorials showcase the two major phases of AI Engine application development: architecting the application and developing the kernels. Both phases are demonstrated in these tutorials.
Tutorials target the VCK190 board. The table below lists the tutorials available, and the features and flows showcased in all of these tutorials. The various columns correspond to specific features/flows supported in these tutorials and will help you identify tutorials that showcase specific flows and features that you are interested in.
Getting Started
AI Engine Documentation
To easily find the right documentation corresponding to the development stage you are at, we recommend you use the AI Engine Design Process Hub.
The major documentation for AI Engine includes:
AI Engine Training
If you are new with AI Engine, the following training courses can help you understand the architecture and design flow.
Environment Settings
Important
Before beginning a tutorial, read and follow the Vitis Software Platform Release Notes (v2024.1) for setting up software and installing the VCK190 base platform.
Run the following steps to set up the environment (do NOT apply to tutorials that do not use the VCK190 base platform):
Set up your platform by running the
xilinx-versal-common-v2024.1/environment-setup-cortexa72-cortexa53-xilinx-linux
script as provided in the platform download. This script sets up theSYSROOT
andCXX
variables. If the script is not present, you must run thexilinx-versal-common-v2024.1/sdk.sh
.Set up your
ROOTFS
to point to thexilinx-versal-common-v2024.1/rootfs.ext4
.Set up your
IMAGE
to point toxilinx-versal-common-v2024.1/Image
.Set up your
PLATFORM_REPO_PATHS
environment variable based upon where you downloaded the platform.
Getting Started with AI Engine Development Using the AI Engine Tutorials
If you are new with the AI Engine Architecture and tools, we recommend that you start with the A to Z Bare-metal Flow, which will guide you through the entire flow from platform creation in AMD Vivado™ to AI Engine application creation, system integration, and testing on Hardware using the Vitis IDE.
AI Engine Application Development
To get started with AI Engine application development, we recommend that you look at the following tutorials:
DSP Library Tutorial which will guide you to create an AI Engine using application using the AMD provided DSP library
AIE DSPLib and Model Composer which will also guide you to create an AI Engine using application using the AMD provided DSP library but using the ModelComposer tool which enables easy designs through a MATLAB Simulink environment.
Using GMIO with AIE which goes through using the GMIOs for connectivity between the AI Engine and the DDR (through the NoC)
Implementing an IIR Filter on the AIE will guide you into custom kernel coding using a IIR application
The following tutorials describe some features of the AI Engine, which might be useful for your application:
AI Engine Application Debug and Optimization
After you have written your first AI Engine application you might want to verify the correct functionality of your graphs and kernels using x86 simulation and AI Engine simulation. In this regards, the following tutorials will be useful for you:
Debug Walkthrough Tutorial will guide you to analyze the performance of your AI Engine application and help you with debugging functional issues.
AIE Performance and Deadlock Analysis which introduces you to performance analysis and optimization methods, and shows you how synchronization works in graph execution.
Python and C++ External Traffic Generators for AI Engine Simulation and Emulation Flows: This tutorial demonstrates how to create external traffic generators as Python scripts or C++ applications to exercise the AI Engine kernels in the x86 simulator, AI Engine simulator, and in hardware emulation.
System Integration
When your AI Engine Application meets your expectation (in terms of functionality and performances), it will be the right time to integrate it with the rest of the Versal System. At this stage, the following tutorials will be useful for you:
AIE Versal Integration demonstrates creating a system design running on the AI Engine, PS, and Programmable Logic (PL).
Versal System Design Clocking teaches clocking concepts for the Vitis compiler and how to define clocking for an ADF Graph, as well as PL kernels using clocking automation functionality.
Versal Emulation Waveform Analysis demonstrates how you can use the AMD Vivado Design Suite logic simulator (XSIM) waveform GUI, and the Vitis analyzer to debug and analyze your design.
Feature Tutorials
These tutorials target the VCK190 board. The table below lists the tutorials available, and the features and flows showcased in all of these tutorials. The various columns correspond to specific features/flows supported in these tutorials and will help you identify tutorials that showcase specific flows and features that you are interested in.
Tutorial |
Platform |
OS |
IDE Flow |
Libraries Used |
HLS Kernel |
x86 simulator |
aie simulator |
SW Emu |
HW Emu |
HW |
Event Trace in HW |
Profile in HW |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Base / Custom |
Linux |
MM2S / S2MM |
Yes |
Yes |
Yes |
Yes |
Yes |
|||||
Custom |
Baremetal |
Vivado, Vitis IDE |
MM2S / S2MM |
Yes |
Yes |
Yes |
||||||
Base |
Linux |
Yes |
Yes |
Yes |
Yes |
|||||||
Base |
Linux |
MM2S / S2MM |
Yes |
Yes |
Yes |
|||||||
Base |
Linux |
MM2S / S2MM |
Yes |
Yes |
Yes |
|||||||
Base |
Linux |
CLI, Vitis Unified IDE |
MM2S / S2MM |
Yes |
Yes |
Yes |
Yes |
Yes |
||||
Base |
Linux |
MM2S / S2MM |
Yes |
Yes |
Yes |
|||||||
Base |
Linux |
Yes |
||||||||||
Base |
Linux |
DSPLib |
MM2S / S2MM Variant |
Yes |
||||||||
Base |
Linux |
Vitis IDE |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
|||
Base |
Linux |
Simulink |
DSPLib |
MM2S / S2MM |
Yes |
Yes |
||||||
Base |
Linux |
Traffic Generators |
Yes |
|||||||||
Base |
Linux |
DSPLib |
MM2S / S2MM |
Yes |
Yes |
|||||||
Base |
Linux |
Yes |
Yes |
Yes |
Yes |
|||||||
Base |
Linux |
Vitis IDE |
Yes |
Yes |
||||||||
Base |
Linux |
MM2S / S2MM |
Yes |
Yes |
Yes |
|||||||
Python and C++ External Traffic Generators for AI Engine Simulation and Emulation Flows |
Base |
Linux |
MM2S / S2MM / PolarClip |
Yes |
Yes |
Yes |
Yes |
|||||
Custom |
Linux |
MM2S / S2MM |
Yes |
Yes |
||||||||
Base |
Linux |
Vivado |
Yes |
Yes |
||||||||
Base |
Linux |
MM2S / S2MM |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
||||
Base |
Linux |
Yes |
DSPLib |
Yes |
Yes |
|||||||
Base |
Linux |
MM2S / S2MM |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
||||
Custom |
N/A |
Vivado & Vitis IDE |
Yes |
Design Tutorials
These tutorials target the VCK190 board. The table below lists the tutorials available, and the features and flows showcased in all of these tutorials. The various columns correspond to specific features/flows supported in these tutorials and will help you identify tutorials that showcase specific flows and features that you are interested in.
Tutorial |
Platform |
OS |
IDE Flow |
Libraries Used |
HLS Kernel |
x86 simulator |
aie simulator |
SW Emu |
HW Emu |
HW |
Event Trace in HW |
Profile in HW |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Base |
Linux |
MM2S / S2MM |
Yes |
Yes |
Yes |
Yes |
||||||
Base |
Linux |
Yes |
||||||||||
Base |
Linux |
Yes |
Yes |
Yes |
Yes |
|||||||
Base |
Linux |
MM2S / S2MM |
Yes |
Yes |
||||||||
Base |
Linux |
MM2S / S2MM |
Yes |
Yes |
||||||||
Base |
Linux |
DSPLib |
PL Data Generator and Checker |
Yes |
Yes |
Yes |
Yes |
|||||
Base |
Linux |
DSPLib |
PL Data Generator and Checker |
Yes |
Yes |
Yes |
Yes |
|||||
Base |
Linux |
PL Datamover |
Yes |
Yes |
Yes |
|||||||
Base |
Linux |
Yes |
Yes |
|||||||||
Base |
Linux |
DSPLib |
Datamover |
Yes |
Yes |
Yes |
Yes |
|||||
Base |
Linux |
Yes |
Yes |
|||||||||
Base |
Linux |
Yes |
Yes |
|||||||||
Base |
Linux |
Yes |
Yes |
|||||||||
Base |
Linux |
Yes |
Yes |
|||||||||
Base |
Linux |
Yes |
Yes |
|||||||||
Base |
Linux |
Yes |
Yes |
|||||||||
Base |
Linux |
Yes |
Yes |
|||||||||
Base |
Linux |
MM2S / S2MM |
Yes |
|||||||||
Base |
Linux |
Yes |
Yes |