My FPGA development environment
When a developer wants to start to develop, the first they have to do is install the development environment. This usually is not a big deal, you just have to download the environment installation file and install it. Maybe, if you use Linux as your operating system, you will have to run some extra steps like packages installing, but in general, in a few minutes, 30 minutes in the worst case, you will have your development environment. Then you may want to improve your social status, and you want to start to develop designs for FPGA, and here is where the night comes, no matter if you want to develop for an AMD FPGA, Microchip or Intel, your hard disk will suffer.
A regular installation of Intel Quartus prime can take from 60 to 90 minutes. If we want to install AMD Vivado ML, it can be extended up to 120 to 180 minutes, depending on your internet speed. This huge amount of time makes sense if we realise that a minimal installation of Vivado uses almost 50 GB of our hard drive, so the amount of data that it has to download is huge.
A few days ago I asked on X how many versions of Vivado have you installed at the same time, and I am glad that I am not the only want that have several versions of Vivado installed. In my case, in the office, we work with two different versions, 2019.1 and 2020.2. In the home office, where I write the articles and use different devices and different software that has to communicate with Vivado, today I have installed 2020.1, 2020.2, 2021.2, 2022.1, 2022.2, and 2023.1. The reason is that I usually use Matlab with reference designs for the boards, and they have developed for a specific version of Vivado. Also, Matlab does not support the latest release of Vivado at the same time that they releese a Matlab version so that forces me to have different versions of Vivado for supporting different Matlab versions and different reference designs. Also, sometimes I have to run board examples designed in a specific Vivado version, so I need to have installed that version to be able to run the example.
Having all of these versions of Vivado on my computer at the same time is a hard task since each version of Vivado uses around 80 GB, and also we have to add the storage used by different Matlab versions. In this article I want to tell you how I manage all of this, trying also to make it most safely. My setup diagram is the next.
First of all, my host computer. I have a desktop computer with 32GB of RAM with a Ryzen 7 5800x processor, and a very very cheap GTX710, which is enough for me. This configuration is ideal for what I do because of the cost/power ratio. In this computer, I have three different hard disks, and each one has different uses according to its access speed. My motherboard has two M.2 slots, one of them with 4 PCI lanes, and the other one with just one PCI lane. In the fastest I have installed my operating system, Ubuntu 22.04, then in the one connected to the M.2 with just one PCI lane, I have installed the Vivado versions that I usually use, 2020.2, 2022.2, and 2023.1. Also, on the same hard disk I have the different Matlab versions as well as the latest Libero version.
In addition to the two M.2 SSDs, I have another SSD connected over a SATA connection. In this hard disk, I have several virtual machines (VM) because, do you know that Petalinux does not support the latest Ubuntu version? So, I need at least a VM with Ubuntu 20.04, and also I have some other VM with Ubuntu where I run courses and another golden VM that I use to be cloned. This golden VM has installed Petalinux, but not Vivado, so if I need to run Vivado in a VM, I mount the SSD where I have installed all the VIvado versions in the VM and I have access to them.
OK, and what happens with the projects, articles, and data in general? In my case, I use a NAS from Synology to store all the data. This NAS is connected over a Gigabit Ethernet network, which is enough to share data.
This structure could seem redundant, but it has saved me at least once of losing much time. A few weeks ago I had an issue with Linux with the result of a corrupted grub, so the computer does not even start. In that case, I reinstalled Ubuntu in the fastest SSD and then I already had all the Vivado and Matlab versions installed, as well as all my data.
Besides my desktop computer, I also have a laptop, with just one hard disk installed. This hard disk, like the desktop computer, just stores the operating system. In order to use Vivado on this computer, I have two different options. I can run Vivado from the desktop computer using X-server or remote desktop, or I can RUN Vivado in the laptop, but this time, Vivado is installed in an external SSD with USB3.0 connection, and this is the option that I usually use since sometimes I a not in home when I need to use Vivado.
Using a NAS to store all the data has advantages and disadvantages. One big disadvantage is that the data is only accessible from your local network. In my case, I don’t use the cloud service from Synology because a few years ago, another NAS brand had a security issue with its network, and many NAS from users were encrypted by the Qlocker ransomware. Instead, if I know that I will have to access data while I am not in home, I have a VPN server in my router that allows me to access my local network from the WAN. In addition, I have a folder in the NAS that is always updated in the three devices NAS, HOST PC, and Laptop, so if I am going to need some specific project, I only have to copy that project into the shared folder, wait for the synchronization, and then I will have that project in my laptop.
Finally, I also use Github to store my code, the blog and several projects.
If you have a start-up or a little company where you develop designs for FPGA, my setup is a good starting point, but it can be improved, for example, I didn’t mention license servers, which you will need if you are using floating licenses, or an FPGA farm if you are working with acceleration designs. Regarding the operating system, I can complain a lot about Ubuntu, but I don’t change it to any other OS. It is easy enough to use, allows me to use remote jobs in Vivado, so I can implement a design in my host computer that I am designing on my laptop, and also I can use many different tools designed just for Linux.