Platform Creation Basics - 2023.2 English

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

Document ID
Release Date
2023.2 English

In the AMD Vitis™ environment acceleration application development flow, the project is divided into two distinct elements: the platform and the processing subsystem. The platform contains essential IP blocks (such as PS for SoCs, NoC and AI Engine for AMD Versal™ adaptive SoCs) and board interface IP blocks (such as high-speed I/Os and memory controllers). The processing subsystem contains the application-specific part of the system and can be composed of both programmable logic and AI Engine blocks. This approach promotes separation of concerns, facilitates concurrent development, and encourages reusability. The application developer is insulated from the low-level details of the platform and can focus on the specifics of the processing subsystem. The platform developer can focus on system bring-up and tuning I/O performance without having to worry about the processing subsystem. This means that the application developer can integrate the subsystem on different platforms, and a platform can be reused with different processing subsystems.

AMD provides pre-built platforms for AMD Alveo™ cards and embedded evaluation boards. You can download these platforms from the Download Center. Efficiently leveraging the decoupling of platforms and subsystems is central to the methodology and the productivity gains offered by the Vitis environment. For embedded designs, AMD recommends a parallel development process where the application team starts working on the subsystem using an AMD pre-built platform while the platform team works independently on bringing-up the custom platform. Rapid progress can be made by working in this manner. Using a pre-built platform means that the subsystem can be developed, integrated, and tested independently using a pre-verified, known-good foundation. After the subsystem is in a sufficiently advanced and stable state, the subsystem can be integrated with appropriate versions of the custom platform. Overall, this approach greatly streamlines the system integration process.

The following figure shows how to create a customized embedded platform.

Figure 1. Platform Creation

To create a platform, you must have a base bootable design as a starting point. This design can be an AMD base platform design, an existing working design, or a design created from scratch. The following base components must be included in your base bootable design:

  • A base hardware design exported from AMD Vivado™ Design Suite
  • A base software design that includes Linux kernel, root file system, and device tree

After you have working hardware and board through a Vivado Design Suite design, converting it into a Vitis environment platform requires adding properties to the base components to meet the requirements of the Vitis environment. In general, platform creation consists of the following steps:

  1. Add hardware interface parameters and interrupt support in your Vivado Design Suite project and export the XSA.
  2. Update the software platform components to enable application acceleration software stacks (enable XRT, update device tree, and so on).
  3. Package and generate the platform using XSCT commands or the Vitis IDE.
Note: The platform creation process is usually iterative, and multiple versions of the platform are created throughout the course of the project. In the early phases of the project, you can create platforms with a reduced set of features to facilitate testing of the processing subsystem on the board. In the later phases of the project, you might need to iterate on the platform to respond to specification changes or to improve overall QoR.
Note: Users could also create a platform base on the existing repository platforms. This operation is actually a copy of the repository's platform to the local directory. But a DFX platform is not supported with GUI or XSCT tool.

The Vitis environment uses the properties in the hardware project to recognize the resources in the platforms and link kernels to the platforms. The Vitis environment uses the software stacks to take control of the kernels.

For details on Vitis environment embedded platform creation, see the Vitis Unified Software Platform Documentation: Embedded Software Development (UG1400). For step-by-step instructions, see the Vitis Platform Creation tutorial .