The software-defined system-on-chip SDSoC™ environment provides the tools necessary to implement heterogeneous embedded systems for Zynq® UltraScale+™ MPSoC and Zynq®-7000 SoC devices. This document describes how to create an SDSoC platform using the Eclipse-based SDx™ integrated development environment (IDE) with a hardware design generated by the Vivado® Design Suite.

Figure: Platform Components

The concept of a platform is integral to the SDSoC environment, as it defines the hardware and software components as well as the meta-data on which SDSoC applications are built. The above figure illustrates the platform and its components. An SDSoC platform defines a base hardware/software architecture and an application context including the processing system, external memory interfaces, custom input/output, a software runtime with an operating system (possibly "bare-metal"), boot-loaders, drivers for platform peripherals and a root file system. Every project created with the SDx IDE targets a specific platform and is customized with application-specific hardware accelerators and data motion networks.

A platform developer designs the platform's hardware component by first implementing a hardware design using the Vivado Design Suite and its IP integrator design canvas. The IP integrator block design is created with platform interfaces that are enabled for use by the sds++/sdscc (referred to as sds++) system compiler as attachment points for generated hardware accelerators and data movers. This hardware design component along with its meta-data are encapsulated into a Device Support Archive (DSA). The DSA contains the Vivado IP integrator design as well as the required processor and memory system configuration, all board interfaces and I/O connections. Platform properties are also defined in the DSA for platform identification and interface configuration.

The platform developer must also provide any boot loaders and target operating systems used to bring-up the platform. A platform optionally includes software libraries for linking with applications. If a platform supports a Linux target operating system, the Petalinux tools can be used to configure and build the Linux kernel, produce a U-Boot bootloader and a root file system. The Xilinx SDK provides code templates for developing software components for a platform and can be customized. The SDx IDE can also be used to generate software components but for customization it is recommended that developers use the SDK or PetaLinux tools directly.

Creating a platform is accomplished by generating or gathering together the hardware and software components for use in an SDx Platform project. The SDx tools can use an existing platform as a basis for a new platform or use the hardware defined by a user-provided input DSA. In a similar manner, the SDx environment can use a set of existing software objects created by the developer prior to invoking the SDx tools, or generate the software objects as part of the SDSoC platform creation process.

The example platform that is described and built in this document uses the hardware and software components that are provided as part of the ZCU102 platform included with the SDx tools. After going through the steps of using the SDx Platform project flow to assemble a platform, this document describes how to build the hardware and software components that make up a custom platform.