There are two distinct platform types as described below.
Fixed Platform Design
A fixed platform design is a completed hardware design developed in the Vivado Design Suite.
Once your design is complete, use the write_hw_platform -fixed command to generate a
Hardware Design (XSA) file. Within the Vitis
IDE, VitisPython API or XSDB, you can then
define a platform project, import the fixed .xsa, configure processor domains, and set up your board support
package (BSP). You can use PetaLinux or Yocto to create a Linux BSP, and the Vitis IDE to create bare metal BSPs. See
XSCT to Python
API migration in the
Vitis
Unified Software Platform Documentation: Embedded Software
Development (UG1400)
for
details.
Combining the fixed .xsa with the software BSPs generates a Vitis platform component (.xpfm) in the Vitis IDE.
This Vitis platform component can be used in a traditional embedded software design flow to create embedded applications for Versal adaptive SoC devices, Zynq MPSoC, Zynq 7000, or MicroBlaze devices.To develop software applications for embedded processors, you need to use the hardware drivers provided as part of the exported hardware container (.xsa) and manage them to access your hardware design from your software application.
This traditional embedded software design flow is fully documented in the Vitis Unified Software Platform Documentation: Embedded Software Development (UG1400).
Fixed platforms cannot be used to integrate AIE graphs and PL kernels using the v++ link command. However, they do support both bare-metal and Linux-based software development. Additionally, you can modify the AI Engine software while maintaining the AI Engine-PL interface. A fixed XSA can be generated from an extensible platform-based project during the Vitis linking process.
Extensible Platform Design
An extensible platform is built with the Vivado Design Suite. These platforms begin as initial hardware designs in the Vivado Design Suite (.xsa), but unlike fixed platforms, they are designed to evolve and grow. You can integrate programmable components like AI Engine and PL kernels to the platform using either the Vitis Integrated Flow or the Vitis Export to Vivado Flow. You can optionally use VitisPython API or XSDB to create a Vitis platform component .xpfm platform that includes a software BSP for the extensible hardware platform, or defer until you have implemented fixed platform hardware.
Extensible platforms enable a parallel development process,
allowing different teams to work concurrently. The application team can initiate
their work on an AMD base platform like
VCK190 or ZCU104 to develop the system's programmable components. This parallel
approach enables independent development and testing on a verified ready-to-use
system context, while the platform team focuses on creating and validating a custom
hardware platform. AMD base platforms can
be found in the Vitis installation, and their
source code can be found in the Vitis Embedded Platform Source
repository on GitHub.
Extensible platform designs are required to contain a processing system, memory controllers, and clock sources, and typically also include an interrupt controller. More information on building custom platforms and their interface requirements can be found at Building Custom Platforms and Adding Hardware Interfaces.
In essence, extensible platforms offer a flexible approach to hardware design, allowing you to start simple and gradually evolve your design using Vitis workflows. At any stage of development, you can implement your design using the Vitis Integrated Flow or the Vitis Export to Vivado Flow to obtain a Fixed XSA against which you can create a software platform and develop software.