This chapter is intended for Embedded System Designers who are developing systems using heterogeneous compute elements supported by AMD Vitis™ tools. The chapter introduces key concepts for understanding and using Vitis tools for embedded system design. The elements of the embedded system can include AMD Vivado™ exported hardware designs, Vitis extensible platforms, Arm processor applications, PL kernels, and AI Engine graph applications. Refer to Terminology for Embedded System Design for definitions of these terms.
As shown in the figure below, Vitis tools support two different embedded design flows.
The traditional embedded software development flow relies on a fixed hardware design, processor domains and OS, boot files, software drivers, and Arm processor based software applications. This traditional design flow is described briefly in Fixed Platforms versus Extensible Platforms, and is documented with more detail in the Vitis Unified Software Platform Documentation: Embedded Software Development (UG1400). Refer to that document for more information on the traditional embedded software flow.
The Vitis heterogeneous system design flow enables designing and building embedded system designs using AMD Versal™ adaptive SoC devices, AMD Kria™ SOM, and AMD Zynq™ MPSoC devices. The Embedded Software flow is part of the Vitis Heterogeneous System Design flow. The heterogeneous system design flow is the primary focus of this Introduction, highlighting the elements from four different disciplines included in the flow:
- Hardware design and custom platform development
- Embedded processor software design
- Programmable-logic (PL) kernel design
- Versal AI Engine graph design
The tools and techniques for creating and integrating these different components are the focus of the following sections, beginning with some terminology for a common understanding.