This tutorial will walk you through the steps required to enhance your existing Hardware Platform in Vivado and make it Acceleration Ready. The Acceleration Ready Viavdo hardware platform, together with Vitis GUI and Vitis-AI framework (discussed in Vitis-AI Tutorials Part 2, Part 3 and Part 4), will help you offload specialized intensive software functions (related to AI, ML, Deep Learning etc) to an Acceleration Kernel in the PL. We will be using the OSDZU3-REF’s Vivado Hardware Platform as an example starting point.
This tutorial can be used standalone or as Part 1 of a 4-part Acceleration tutorial series that will help you run Vitis-AI DPU-TRD based Face Detection demo, ADAS Detection demo (and other AI demos) on the OSDZU3-REF board. An overview of the flow is shown below:
This tutorial assumes the user is already familiar with the OSDZU3-REF Vivado and Vitis Design Flow by going through:
To make the existing Vivado Hardware Platform Acceleration Ready, the user needs to create and make the following available to be used later by PL Acceleration Kernel:
This tutorial will require the following software setup.
Notice: All the steps in this tutorial have been validated using Vivado 2021.2 running on Ubuntu 20.04.LTS. However, the overall design flow should be similar for other Vivado versions as well
The following sections will describe the various steps required to make the existing Vivado Hardware Platform Acceleration ready.
Before proceeding with new IP additions:
The processor’s pl_clk output can provide a maximum of 4 clock outputs and their phase is not aligned. To have the flexibility of multiple phase aligned clock outputs, add Clocking Wizard to the block diagram as follows:
Among the above output clocks, we will be using 150MHz and 300MHz clock outputs as DPU AXI interface clock and DPU core clock respectively as part of Vitis-AI Tutorial Part – 4 (TBD link). Other clocks are made available for future flexibility.
Note: Feel free to modify the number of clock outputs and their frequencies to match your target design.
Add Processor System Reset blocks for each of the clock outputs of the clock wizard. This is required for Platform Setup discussed later in this tutorial.
| Processor System Reset IP | Clock source |
|---|---|
| proc_sys_reset_1 | /clk_wiz_0/clk_out1 (150MHz) |
| proc_sys_reset_2 | /clk_wiz_0/clk_out2 (300MHz) |
| proc_sys_reset_3 | /clk_wiz_0/clk_out3 (75MHz) |
| proc_sys_reset_4 | /clk_wiz_0/clk_out4 (100MHz) |
| proc_sys_reset_5 | /clk_wiz_0/clk_out5 (200MHz) |
| proc_sys_reset_6 | /clk_wiz_0/clk_out6 (400MHz) |
| proc_sys_reset_7 | /clk_wiz_0/clk_out7 (600MHz) |
The processor’s pl_ps_irq can provide a maximum of 16 interrupts. To be able to handle more interrupt signals, add AXI Interrupt Controller as described below.
Note: The Platform Setup window option appears only if the project is declared as an Extensible Vitis Platform as shown above.
Note:
PS AXI Slave Interfaces will allow PL Acceleration Kernel to access DDR memory.
Under Platform Setup:
Under Platform Setup:
Continue the OSDZU3 Acceleration journey and generate a Petalinux image with Vitis-AI 2.0 and Xilinx Real Time (XRT) support by reading Part 2 of the 4-part Acceleration Tutorial series.
Get notified of updates to this Application Note and all of our Technical Documentation.
“*” indicates required fields
| Revision Number | Revision Date | Changes | Author |
|---|---|---|---|
| 1 | 11/13/2023 | Initial Revision | Eshtaartha Basu |
There has been multiple revisions to the OSDZU3-REF and some of the documentation is for specific revisions.
The revision of your OSDZU3-REF is printed under the fan next to the Octavo Systems logo. See the image below.
If there are multiple versions of a document make sure you select the one that matches your revision.