Packaging a Vitis Acceleration Platform - 2024.1 English

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

Document ID
UG1393
Release Date
2024-05-30
Version
2024.1 English

With all requirements prepared for Vitis acceleration platforms, you can package them together and generate the final Vitis acceleration platform. You can do this using either the Vitis Unified IDE or the Python CLI (command line) tool.

  • In the Vitis IDE, select File > New Component > Platform to create a Vitis platform.
  • Using Python CLI, you can use the platform related command to create a platform and the associated domains. For more information about XSCT, see Vitis Unified Software Platform Documentation: Embedded Software Development (UG1400).

The platform is an encapsulation of multiple hardware and software components. This capsulation makes it easier to hand off deliveries from hardware-oriented engineers to application developers.

The following files and information are packaged into the platform.

Hardware Specification
This is an extensible XSA file.
Software Components
These are added to the platform as a Linux domain that enables OpenCL runtime.
Software components include the following:
  • Boot components
    • BIF file that describes the boot components and their properties for Bootgen to generate the boot.bin file.
    • A boot components directory that includes all the files described in the BIF file.
  • Image directory (optional): Contents in this directory will be copied into the FAT32 partition of the final SD card image.
  • Linux domain: The platform requires a Linux domain. The kernel, RootFS, and sysroot info can be added when creating a platform, or when creating an application.
  • Emulation support files (optional)

Root Filesystem

FAT32 and Ext4 partition types are supported by Vitis. The root filesystem is optional in platform creation step because it can be assigned during Vitis application creation step.

An image directory needs to be set during platform creation. All contents in this directory will be packaged into final SD card image. If the target file system is FAT32, the files will be placed to SD card root directory; if the target file system is Ext4, the files will be placed to root directory of the first FAT32 partition.

Boot Components

A BIF file must be provided so that the application build process can package the boot image.

The following is an example of a BIF file for ZYNQMP:

/* linux */
the_ROM_image:
{
  [fsbl_config] a53_x64
  [bootloader] <fsbl.elf>
  [pmufw_image] <pmufw.elf>
  [destination_device=pl] <bitstream>
  [destination_cpu=a53-0, exception_level=el-3, trustzone] <bl31.elf>
  [destination_cpu=a53-0, exception_level=el-2] <u-boot.elf>
}

The following is an example of a BIF file for Versal:
the_ROM_image:
{
  image {
         { type=bootimage, file=vck190.pdi }
         { type=bootloader, file=plm.elf }
         { core=psm, file=psmfw.elf }
 
  }
  image {
         id = 0x1c000000, name = subsystem, delay_handoff
         { type=raw, load=0x00001000, file=system.dtb }
         { core = a72-0, exception_level=el-3, trustzone, file=bl31.elf }
         { core = a72-0, exception_level=el-2, file=u-boot.elf }
  }
}

A boot components directory, including all the files described in the BIF, should also be provided. In this example, the components directory provides fsbl.elf, pmufw.elf, bl31.elf, and u-boot.elf. These boot components can be generated by PetaLinux or from common images. AMD recommends that you use a common image if there is no system customization.

In the Vitis application building and packaging state, v++ looks for the files in the boot components directory and replaces the placeholders with real file names and paths. It then calls Bootgen to generate BOOT.BIN.