The last page of the New Application Project wizard in the Vitis IDE (shown in the following figure), displays a list of application templates that can be used for your design. Selecting a template creates a sample AI Engine graph application, and imports the necessary source code to let you build and examine different elements of the application simulation design.
The template projects illustrate the basic features of AI Engine programming. You can study these templates, use them as a starting point for your own projects, or mix and match the features to create your own complex computation graphs. The following table describes some of the templates.
|AI Engine, PL and PS System Design
|This design demonstrates integrating the AI Engine array with the Programmable Logic and the Processing System in a system. It performs hardware co-simulation and hardware implementation.
|Integrating the Application Using the Vitis Tools Flow
|A graph to demonstrate asynchronous window APIs.
|Asynchronous Window Access
|Async RTP Control Iterative
|A graph to demonstrate simple use of asynchronous RTP update and run with specified test iterations.
|Graph Execution Control
|C++ template example
|An example demonstrating C++ templated data types and state encapsulation.
|C++ Template Support
|A graph to demonstrate GMIO performance profiling.
|A templated graph with relocatable mapping and location constraints for kernels.
|A graph to demonstrate physical channel allocation constraints on the AI Engine to PL interface boundary.
|AI Engine/Programmable Logic Integration
|A simple 2-kernel graph with window based data communication.
|Simple 128 Bit Interface
|A graph to demonstrate 128-bit interface between the AI Engine and PL.
|Simple 64 Bit Interface
|A graph to demonstrate 64-bit interface between the AI Engine and PL.
|A graph demonstrating the use of bypass for kernels.
|A graph demonstrating the use of margin in windows (overlapping windows).
|Simple Packet Split Merge
|A graph to demonstrate simple split and merge of packet stream data.
|Explicit Packet Switching
|A simple 1-kernel graph with scalar parameter update using external trigger.
|Specifying Run-Time Data Parameters
|Simple Single Buffer
|A graph demonstrating single buffer constraint on connections.
|Buffer Allocation Control
|Single Node Graph
|A simple single node graph with demonstration window (single buffer and double buffer), stream and RTP array connections.
|Single Kernel Development
|Stream Switch FIFO
|A graph to demonstrate use of stream switch FIFO to avoid deadlocks with reconvergent streams.