Getting Started with the Vitis Software Platform
Vitis Unified Software Platform Overview
The Vitis™ unified software platform is a new tool that combines all aspects of Xilinx® software development into one unified environment. The Vitis software platform supports both the Vitis embedded software development flow, for Xilinx Software Development Kit (SDK) users looking to move into the next generation technology, and the Vitis application acceleration development flow, for software developers looking to use the latest in Xilinx FPGA-based software acceleration. This document discusses the embedded software development flow and use of Vitis core development kit.
The Vitis integrated development environment (IDE) is part of the Vitis unified software platform. The Vitis IDE is designed to be used for the development of embedded software applications targeted towards Xilinx® embedded processors. The Vitis IDE works with hardware designs created with Vivado® Design Suite. The Vitis IDE is based on the Eclipse open source standard. The features for software developers include:
- Feature-rich C/C++ code editor and compilation environment
- Project management
- Application build configuration and automatic Makefile generation
- Error navigation
- Integrated environment for seamless debugging and profiling of embedded targets
- Source code version control
- System-level performance analysis
- Focused special tools to configure FPGA
- Bootable image creation
- Flash programming
- Script-based command-line tool
Vitis Software Development Workflow
The following figure shows the embedded software application development workflow for the Vitis unified software platform.
- Hardware engineers design the logic and export information required by software development from the Vivado® Design Suite to an XSA archive file.
- Software developers import XSA into the Vitis software platform by creating a platform. Platform was heavily used by application acceleration projects. To unify the Vitis workspace architecture for all kinds of applications, software development projects now migrate to platform and application architecture. A platform includes hardware specification and software environment settings.
- The software environment settings are called domains, which are also a part of a platform.
- Software developers create applications based on the platform and domains.
- Applications can be debugged in the Vitis IDE.
- In a complex system, several applications may run at the same time and communicate with each other. So the system level verification needs to be done as well.
- After everything is ready, the Vitis IDE can help to create boot images which initialize the system and launch applications.
Workspace Structure in the Vitis Software Platform
There are two project types in Vitis workspace:
- Workspace
- When you open the Vitis software platform, you create a workspace. A workspace is a directory location used by the Vitis software platform to store project data and metadata. An initial workspace location must be provided when the Vitis software platform is launched.
- XSA
- XSAs are exported from the Vivado Design Suite. It has the hardware specifications like processor configuration properties, peripheral connection information, address map, and device initialization code. You have to provide the XSA when creating a platform project.
- Platform
- The target platform or platform is a combination of hardware components (XSA) and software components (domains/BSPs, boot components such as FSBL, and so on). Platforms in the repository are not editable. Platforms in the workspace are editable, and are referred to as platform projects.
- Platform Project
- A platform project provides hardware information and a software runtime environment. It is customizable; you can add domains and modify domain settings. A platform project can be created by importing an XSA, or by importing an existing platform. Several system projects can be built on the same platform project so that hardware and software environment settings can be shared.
- Domain
- A domain is a board support package (BSP) or the operating system (OS) with a collection of software drivers on which to build your application. The created software image contains only the portions of the Xilinx library you use in your embedded design. You can create multiple applications to run on the domain. A domain is tied to a single processor or a cluster of isomorphic processors (for example: A53_0 or A53) in the platform.
- System project
- A system project groups together applications that run simultaneously on a device. Two standalone applications for the same processor cannot sit together in a system project. Two Linux applications can sit together in a system project. A workspace can contain multiple system projects.
- Application (Software Project)
- A software project contains one or more source files, along with the necessary header files, to allow compilation and generation of a binary output (ELF) file. A system project can contain multiple application projects. Each software project must have a corresponding domain.
- Embedded
- This platform supports embedded software development for Arm® processors and MicroBlaze™ processors.
- Embedded Acceleration
- Besides embedded software development, application acceleration is also supported on this type of platform. The platform provides clocks, bus interfaces, and interrupt controllers for the acceleration kernel to use.
- Data Center Acceleration
- Acceleration kernels and x86 host applications can be developed on this platform. The kernel is controlled using a PCIe® bus.
The following is an example of a typical Vitis software development workspace for Zynq UltraScale+ MPSoC.
- Linux domains can be created for Arm®
Cortex®-A53 SMP clusters. Linux applications
can be compiled and linked against the libraries provided by the
sysroot
of the Linux domain. - Arm Cortex-A53 core 0 and Arm Cortex®-R5F core 0 can run hello world application at the same time, these two applications can be grouped into one system project.
- The bare metal build-in-self-test application on Arm Cortex-A53 core 0 can work in its own system project and have its own BSP settings.
- These system projects run at a different time on the Zynq UltraScale+ MPSoC device. Applications in one system project run at the same time.
- Boot components such as FSBL and PMU firmware can be created in platform projects automatically. Boot components have their own BSP settings.
Migrating to the Vitis Software Platform from Xilinx SDK
If you are a Xilinx® Software Development Kit (SDK) user and are migrating to the Vitis™ software platform, the Develop and Run, Debug, and Optimize sections list a set of use cases that show you how to perform some of the regular tasks like working with platforms, applications, domains, debugging, flash programming, and so on. The steps required for Migrating an SDK Project to the Vitis Software Platform are also explained.
Comparing Workflows in the Vitis Software Platform and SDK
The following table compares the key concepts and flows in the Vitis software platform covered in this document with their equivalents in SDK, if applicable.
Vitis Software Platform | SDK |
---|---|
Creating a Platform Project from XSA | Import hardware specification and create a BSP. |
Adding a Domain to an Existing Platform | Create a BSP. |
Customizing a Pre-Built Platform | There is no corresponding concept in SDK. |
Adding a Domain to an Existing Platform | Create multiple BSPs for a single hardware configuration. |
Creating a Standalone Application Project | Create a standalone application from standalone BSP. |
Creating a Linux Application Project | Same concept. |
Managing Multiple Applications in a System Project | There is no corresponding concept in SDK. |
Creating and Building Applications for XSA Exported from the Vivado Design Suite | Create an application from XSA exported from Vivado Design Suite. |
Changing a Referenced Domain | Change referenced BSP. |
Updating the Hardware Specification | The concept is the same, but the details of the workflow might have some minor changes. |
System Debugger Supported Design Flows | The concept is the same, but the details of the workflow might have some minor changes. |
Using the Standalone Debug Flow | This is a new feature in the Vitis software platform. SDK does not have this feature. |
Running and Debugging Applications under a System Project Together | This is a new feature in the Vitis software platform. SDK does not have this feature. |
Creating a Boot Image | The concept is the same. |