There are multiple design flows for Versal adaptive SoC, including two flows targeting projects that contain software applications. Recommendations vary based on which design flow you are using. For more information, see the Versal Adaptive SoC System Software Developers Guide (UG1304).
Fixed Hardware Platform Recommendations
AMD recommends using custom Linux drivers when developing software applications for designs created with the fixed hardware platform design flow. These drivers manage interactions between the application and PL resources.
Extensible Hardware Platform Recommendations
When developing software applications for hardware built through the Vitis platform design flows and the v++ linker, you can use standard AMD embedded development flows. For ease-of-use
in developing Linux applications, AMD
recommends using the XRT APIs to manage PL kernels and AI Engine graphs.
For user-managed kernels, you can employ XRT C++ APIs to read/write into a kernel's AXI4-Lite control interface. The XRT APIs optimize interaction with these interfaces. They provide abstract methods for interacting with the accelerators. In addition, using the XRT APIs enables access to built-in profiling and debug capabilities.
Developers must explicitly manage PL resources directly included in the platform using custom drivers. This is because XRT APIs can only interact with PL and AI Engine accelerators linked to the platform through the Vitis environment.
AMD also recommends tailoring the design architecture to allow the application to reset the user-defined PL IP to a known good state. This helps handle errors effectively. It is necessary to reset PL state after an asynchronous soft reset and reloading of the AI Engine. For more information about the Vitis environment and XRT, refer to the Vitis Unified Software Platform Documentation Landing Page (UG1416).