Note: This is one alternative for adding board definitions to the Xilinx tools the other option is documented here.
Xilinx BoardStore to Automate Vivado Board Definitions for Avnet Boards
For anyone just getting started with Xilinx Vivado, a good place to start is UG895
Vivado Design Suite User Guide
System-Level Design Entry
It is 128 pages long, and sometimes it's easier to dive in and do something rather than reading the manual. I think one of the easiest ways to get started with a project is to use an existing board along with a preconfigured board definition or preset (often referred to as "Board Definition File" or BDF). I also really like Avnet's GitHub flow, which allows me to create a really complex design from Tcl scripts. However, sometimes I really like using the Vivado GUI to get a better view of what's going on. This blog will show how to start with the Avnet GitHub flow to retrieve the Avnet BDFs, but then transition to using the Vivado GUI to access the BDFs. If you prefer to use the Xilinx BoardStore, refer to this blog instead: Xilinx BoardStore to Automate Vivado Board Definitions for Avnet Boards
To get on some common ground, I am already utilizing a VirtualBox Ubuntu 18.04.1 Virtual Machine as described in Avnet's VM Install Guide, located at https://avnet.me/zedsupport à 2020.2 à VM_Install_Guide à VirtualBox_Installation_Guide_2020_2_v1p0.pdf. I also have Vivado 2020.2 installed. I have the Xilinx tools' settings scripts set to automatically run in my .bashrc as described in the Install Guide.
Now follow a few steps from narrucmot's blog Avnet HDL git HOWTO (Vivado 2020.1 and earlier) :
$ cd ~
$ mkdir -p git/avnet
$ cd git/avnet
$ git clone https://github.com/avnet/bdf.git
In this BDF archive that was just cloned, you can see folders for each one of the Avnet boards:
If you dig down into one of these folders, you will see different versions, and for each version, you will see a few XML files. It's beyond the scope of this blog to explain what is in those XML files except to summarize that it contains the default definition or "preset" to make the board work. For example, such things as clocking setup and DDR controller parameters to make that specific board work are embedded in those XMLs. There is detailed information about the XMLs in Appendix A of UG895. We've also discussed the possibility of running a training webinar to explain how to create your own BDFs, so if that is something that interests you, please put a comment below!
My next job is to make sure that Vivado can "see" my Avnet BDFs. There are multiple ways to do this. The brute force method (which I am NOT going to do) is to copy the BDF archive to the Xilinx tool installation, which for me is located at /tools/Xilinx/Vivado/2020.2/data/boards/board_files/. You can see that the default Xilinx tool installation populates a bunch of Xilinx boards here already.
A much more elegant and cleaner way to allow Vivado to see my Avnet BDFs is to set the board.repoPaths parameter in Vivado. UG895 Chapter 2 says:
So, long-term, setting this in Vivado_init.tcl is the most efficient way to go, but for now, I will enter the tcl command manually after opening Vivado, remembering that I just cloned all the Avnet BDFs at location /home/training/git/avnet/bdf.
set_param board.repoPaths {/home/training/git/avnet/bdf}
With that parameter now set, I can Create Project, chose Boards from Vendor avnet.com or em.avnet.com, and you'll be able to select an Avnet board. Incidentally, the vendor is based on the company URL. When Avnet started doing BDFs many years ago, our URL was em.avnet.com, which is why you see some of the older boards with that as the vendor. We are in the process of cleaning them all up and making them consistent, so you should only see "avnet.com" as the vendor here in the near future.
At this point, I can now create my project with Vivado understanding some of the base functionality of my board. While this is all very basic, it is essential to getting started with Vivado and an Avnet board. The rest of creating the project and applying the preset is a subject for another blog! Once you have your board definitions in place, move on to this blog:
Developing Simple Applications in Xilinx Vitis for Ultra96-V2