Hi all,


In preparation for my next Vitis blog, "Learning Vitis 5 Getting started with a custom Vitis Platform" we had been wrapping our heads around Vitis and what it means for you!

Taking feedback from the field and trying to consider what an end user needs, we have made additional changes to the Vitis make files since my series started.  That is one reason my 5th blog was held up!


Like with our other repositories, we like to give you a straightforward answer to your support needs.

As seen by previous posts to Element 14:

Updated Designed By Avnet BSP SURL 2019.1: http://avnet.me/DBA_BSPS_PLATFORMS_2019p1

Updated Designed By Avnet BSP SURL 2019.2: http://avnet.me/DBA_BSPS_PLATFORMS_2019p2

[I will add the link for the 2020.1 tags once they are posted!]


We like to provide a BSP, a Platform and a working example.  This helps get you up and running as quickly as possible with a sanity check on your tools/flow/custom solutions.  It also was suggested by an E14 member to add in the tag names.  It was a great suggestion and helps you get to where you need as quickly as you can without needing to hunt around for details!


Lets get right into the blog!


First, if you are not familiar with Avnet's build flow, please go back and check out these blogs by my colleague narrucmot.  He put these together to quickly and easily to get people a fast understanding of our basic repositories.  They will help you understand how we leverage our 3 main repositories (BDF, HDL, PetaLinux).  Knowing that, you will better understand how the Vitis repository is really a puppet-master for those repositories.


I suggest you view them in order, HDL, PetaLinux, then How to speed up PetaLinux builds:

Avnet HDL git HOWTO

Using Avnet Build Scripts to Build a PetaLinux BSP

Accelerating PetaLinux BSP Build Time


From there, I have my Vitis series I have been working on:

Learning Vitis: 1 Setting up a Virtual Machine


The first 4 blogs takes you through using an existing platform (which we provide) and use that to generate an application.  There are also 5 Quickie Tips type blogs to help reduce your effort using the tools.


Here are the largest 2020.1 changes!

  1. Can now build example application from scratch using 1 command!
    1. For example Vector Add for UltraZed-EV EVCC: make UZ7EV_EVCC 'step=xsa plnx sysroot pfm app'
    2. The idea is that you can leverage the each generated step (XSA, PLNX, etc.) and then the app path to generate your own custom application and flow!
    3. Leveraging a clean and then an app build also allows for easier iterative builds without needing to rebuild the entirety of the platform flow!
    4. Takes the place of the previously mentioned 4 blogs - assuming you understand them, you would not need to use the GUI any longer!
  2. Can now build a DPU-TRD enabled platform from scratch with 1 command!
    1. Allows you to more easily layer on DPU functions
    2. This is the base for the Vitis AI 1.2 images as seen on Hackster.IO
    3. https://www.hackster.io/AlbertaBeef/vitis-ai-1-2-flow-for-avnet-vitis-platforms-7cb3aa
    4. For example to build the DPU-TRD for UltraZed-EV EVCC AND UltraZed-EG with IOCC:
      1. make UZ7EV_EVCC UZ3EG_IOCC 'step=xsa plnx sysroot pfm dpu'
  3. Cleaning in typical make methodology
    1. make UZ7EV_EVCC step=cleanxsa then follow that step with make UZ7EV_EVCC step=xsa
    2. (it seems Ubuntu 18 sometimes has issues releasing a file link after being deleted, so make UZ7EV_EVCC 'step=cleanxsa xsa' DOES work under Ubuntu 16, under Ubuntu 18, you will need to execute 2 commands)
  4. When building an application, a .IMG is generated
    1. a simple DD to get you up and running as that is now all auto-packaged up for you!
    2. sudo dd bs=4M if={platformIMGname}.img of=/dev/sd{X} status=progress conv=fsync
  5. Better help messaging
  6. Emulation steps added into the build flow
    1. Now you can choose one of THREE options for building: SW-Emulation, HW-Emulation, Hardware
    2. Build times grow exponentially (especially at the first build) for each in order
    3. My testing has shown, ~5 minutes, ~15 minutes, ~45 minutes respectively ** again this was for the FIRST build just after a clean, times are much less depending on application, build, changes, etc.
  7. Note that we are continuing to default the build to generate the XSA, PetaLinux project, SysRoot, and Platform.  It seems most users have asked for that since they want to customize this later.

For those not seeing the advantage, you can, in true make methodology, add the step= command, OR you can certainly modify the make flow by a simple edit of projectMakefile.mk


For example, to automatically build the Vector Addition Application, change the all: line from

all: xsa plnx sysroot pfm


all: xsa plnx sysroot pfm app


Now when you run:



You will get the XSA, PetaLinux BSP, SysRoot, Vitis Platform, AND the Vector Add Application.  As mentioned in point 1, you can leverage that application step to generate your own custom accelerator!


If you have a suggestion, let us know below!   Feedback is always welcome - especially since the point of this is to help you!

Buy Ultra96-V2Buy Ultra96-V2
Buy Ultra96-V2 I-gradeBuy Ultra96-V2 I-grade
Buy Ultra96-V2 4A Power SupplyBuy Ultra96-V2 4A Power Supply
Buy Ultra96-V2 JTAG/UART PodBuy Ultra96-V2 JTAG/UART Pod
Buy UltraZed-EG Starter KitBuy UltraZed-EG Starter Kit
Buy UltraZed-EV Starter KitBuy UltraZed-EV Starter Kit