16 Oct 2017

FPGAs: Xilinx Tools on Linux

Historically the "free" tool from Xilinx to work with Xilinx FPGAs is ISE Webpack (or just ISE). That tool is still around, is still "free", and still works in Linux (I'll explain later why I write "free" in quotes). For the past few years, however, Xilinx has created a newer tool, Vivado, for working with Xilinx products. Although ISE is still available, it hasn't received any updates for the past couple years (since 2013). But here's the funny part: Vivado doesn't support the older chips. So if you're working with older Xilinx chips (Spartan 3 or Spartan 6) you have to use the old, hasn't been updated since 2013, ISE. If you want to play with any of Xilinx's newer chips (Zynq, Artix, or UltraScale) you'll need to use Vivado. So if you happen to have projects involving both chips, you'll need to download and install two separate tools.

One small issue that messed me up occurred while I was trying to download the install package for ISE. The 14.7 version of the ISE Linux installer is 6.1GB. I live way out in a rural area, so my internet connection is slow. In order to download the installer, I had to be logged into the Xilinx site for the entire duration of the download. After a period of inactivity, Xilinx's site will log out out automatically. Since my download hadn't completed before the website automatically logged me out, my download would fail. One solution is to start the download early in the morning and to make sure you play around on the Xilinx website throughout the day to keep yourself from getting logged out automatically. Another possibility is to just let it download as long as possible, when it fails, re-login to Xilinx's site, then restart the download. Firefox's downloader is smart enough to continue the download (as opposed to requiring the entire download to be started again from scratch).

In contrast, the download for installing Vivado is only about 85MB which is easier to download over a slow connection before getting logged out. However, during the installation you'll need to make sure you stay logged in because the remainder of the download occurs during the installation itself, which could cause it to fail if you get automatically logged out.

Whether you're installing ISE or Vivado, one of the biggest headaches is the licensing. If you want to unlock features above-and-beyond the base, "free" features you'll need to pay for a license. This gives you a file you need to install, which unlocks the features for which you've paid. That all makes sense. However, even if you don't want any of those fancy paid features and are only using the "free" things, you still need to generate a license file and install it. In theory the installer is supposed to handle all the licensing for you. In practice it doesn't seem to work that well on Linux. Therefore a special trip to Xilinx's website is required to create the license file and download it. Then it has to be installed manually after the install itself has completed before you can hope to run the application.

Installing and running ISE can succeed, but only with a fair amount of work. Rob Landley has an excellent, detailed, step-by-step post on how to get ISE installed and running on a Linux host. I won't bother reproducing it here, but simply point you to it.

Installing and running Vivado on Linux follows, roughly, the same steps. Once you've done one, the other will be familiar. It appears as though there are no issues having both installed and running on the same host at the same time. The Vivado install also didn't require any libc files to be manually deleted, so that's a good thing. But all the same license shenanigans are still required to unlock the "free" features.

So why do I keep writing "free" in quotes? Xilinx's definition of "free" means "no money exchanged". But in exchange for not paying money Xilinx does want to collect information about you and your projects... lots of information.

First off, in order to download ISE or Vivado, you need to register an account on their website. I know that many (most?) people don't consider providing a name and such other information as much of a "cost". But data is worth a lot of money, and I wish more people would stop thinking that providing information doesn't have an associated cost. I've downloaded the Linux kernel, Linux-based distributions, and other GNU/Linux software thousands of times in the past and never needed a registration in order to do so. Besides, the fact Xilinx requires a registration has been the cause of my download headaches (as I've pointed out above).

Secondly, and more to the point, whenever you use their "free" tools, those tools communicate information about your machine and your project back to the "mother ship". Although Xilinx tries to provide full information about this feature (called WebTalk), it does seem rather insidious to me. They have a page that answers most questions about WebTalk, but since the communication is all proprietary, I guess we'll just have to take their word when they say they're not being evil.

Finally, all this license nonsense requires a lot of fiddling and so forth should you ever want to move to a different machine.

All this effort wasted on handling and managing licensing, plus all the gobs of data that is provided to Xilinx (both explicitly and implicitly) does not feel "free" to me!

Oh well, I guess I should be grateful I can work with Xilinx parts using an all-Linux environment. Yay!


  1. I'm playing the same game with Altera tools, where different releases support different chips and the free versions supporting various feature subsets. It's not quite as bad in that the free version doesn't require a license file, but the rest of your story sounds very familiar. And don't get me started on text-based installers for graphical apps, total ignorance of platform packaging standards, the application being unable to find a web browser, and 32-bit library requirements (in 2017!).

    1. Hey Chris, I'm thrilled to hear you're doing FPGA stuff too!

      I'm no Altera expert, but I'm wondering which chips you're using? Release 17 and 16 of Quartus Prime Lite support: Arria II, Cyclone IV, Cyclone V, MAX II, MAX V, and MAX 10. I guess the "Lite" version is missing Stratix support?