Having previously gone through my previous blogs, you now have an output and want to test it!

Learning Vitis: 1 Setting up a Virtual Machine

Learning Vitis: 2 How to Download and "install" a pre-built platform

Learning Vitis: 3 How to build an Example Application


For the UltraZed-EG IOCC, UltraZed-EG PCIeCC, and the UltraZed-EV, it is a rather straightforward process!

Using a compatible card reader, insert the card and associate it with your Virtual Machine


Copy the following files to the SDCARD root




README.txt (optional)



Note: recall from the previous blog, exclude the rootfs.tar.gz.  If you copy this over, the file will not be needed so it will be a waste of time.

In the case of this test, I am using the UltraZed-EG PCIeCC




For the purposes of this blog, I will not be talking about the details of setting up an Ultra96V2 SDCARD, but having two partitions, you will want to copy the following files to the BOOT partition and then extract the rootfs.tar.gz to the root partition:

After that is complete, make certain to run SYNC!



ENSURE you click the eject arrow and do NOT have a terminal with that folder open.  We need to ensure that Ubuntu has had time to SYNC the SDCARD.  Yes, you can FORCE this to run faster by actually running SYNC!


Place the card into your SDCARD slot on the UUT.

Ensure your device is set for SDCARD Boot (check user manual), then login


U/P: root/root


cd /run/media/mmcblk0p1 #(Ultra96)

cd /run/media/mmcblk1p1 #(UltraZed-EG/UltraZed-EV)


export XILINX_XRT=/usr


./u96v2vadd.exe binary_container_1.xclbin #(Ultra96)

./uzegpcieccvadd.exe binary_container_1.xclbin #(UltraZed-EG PCIeCC)

./uzegioccvadd.exe binary_container_1.xclbin #(UltraZed-EG IOCC)

./uzevevccvadd.exe binary_container_1.xclbin #(UltraZed-EV)


The result will be something along the lines of this:

The great part is, the Avnet Vitis platforms are AI/ML enabled.  Previous tools (SDSoC) used SOFT Polling.  That is, once the application made a call into the hardware, the application would wait for the return - like any normal C-like call into a function.

As AI/ML requires so much MORE of the system, Vitis now supports the ability to perform a HARD interrupt.  That is the "polling(0)" message.  The great part about this, it is transparent to the end user!  Except you now get a small boost in performance for processing heavy accelerators such as resnet50.


For more information on this, my colleague Mario Bergeron did a great Hackster.IO project on using Vitis AI 1.0 with our platforms!



Buy Ultra96V2Buy Ultra96V2
Buy Ultra96V2 I-gradeBuy Ultra96V2 I-grade
Buy Ultra96v2 4A Power SupplyBuy Ultra96v2 4A Power Supply
Buy Ultra96V2 J-TAG PodBuy Ultra96V2 J-TAG Pod
Buy UltraZed-EG Starter KitBuy UltraZed-EG Starter Kit
Buy UltraZed-EV Starter KitBuy UltraZed-EV Starter Kit