Prior to starting development, you must choose the Versal device that is best suited for your application and partition the design into functions targeted to the PS, AI Engine, and PL, depending on the application requirements. At this point, you must have an understanding of the following:
- System design considerations, such as throughput and latency
- Domain and inter-domain capabilities, including compute and bandwidth
- Dataflow and control flow throughout the entire system and the various subsystems
In addition, you must consider the type of platform to target. You must plan and design for the peripherals and interfaces on the board and the memory resources available on your custom board.
The following figure shows a subsystem that targets a custom hardware platform.
The Vitis design flow is an iterative process that might loop through each step multiple times, adding layers or elements to the processing system through subsequent iterations. Teams can iterate through the early steps more quickly and take more time with later steps, which provide more detailed performance data.
Following are the recommended steps for creating your design in the Vitis environment.
- Kernel and Graph Development
- This step includes the development and functional verification of application kernels. These kernels can run on the AI Engine domain or the PL domain.
- Assembly and Simulation Using Hardware Emulation
- This step includes assembling the AI Engine and PL kernels to create the processing system, integrating the processing system with a Xilinx standard platform, and simulating the processing system using the Vitis hardware emulation flow.
- Assembly and Verification on Hardware
- This step includes building the processing system against the Xilinx standard platform and testing in real hardware on a Xilinx standard board.
- Final Integration and Test on the Custom Platform
- This step includes building the processing system against your custom platform and testing using your custom board.
The Vitis environment design flow makes a distinction between platforms and processing systems. Xilinx recommends using Xilinx-provided platforms for the first three steps of the flow and then using a custom platform only in the final step. This approach makes it possible to start developing and testing the processing system prior to the completion of the custom platform. It also insulates developers of the processing system from internal platform details and allows them to build fully functional designs independently, using a known-good starting point. Overall, the platform-based flow promotes concurrent engineering of the different elements of the system and considerably reduces the development cycle.