I’ve done a number of projects involving Xilinx FPGAs and CPLDs, and honestly I’m frustrated with them enough to be interested in trying out one of their competitors. This is pretty rant-y, so take it with a grain of salt but some of my gripes include:
- Simply awful toolchain support. The standard approach is to reverse-engineer the Xilinx file formats and write your own tooling on top of them.
- Update — looks someone else posted a much lengthier blog post about this, which is a good read.
- Terrible software speed. I suppose they care much more about large design teams where the entire synthesis time will be measured in hours, but for a simple hobby project, it’s pretty infuriating that a syntax error still takes a 10 second edit-compile-debug cycle. This is not due to any complexities in the language they support (as opposed to C++ templates, for example), but is just plain old software overhead on their part: it takes 5 seconds for them to determine that the input file doesn’t exist. If you use their new 7-series chips, you can use their new Vivado software which may or may not be better, but rather than learn a new line and software I decided to try the competitor.
- Expensive prices. They don’t seem to feel like they need to compete on price — I’m sure they do for the large contracts, but for the “buy a single item on digikey” they seem to charge whatever the market will bear. And I was paying it, so I guess that’s their prerogative, but it makes me frustrated.
So anyway, I had gone with Xilinx, the #1 (in sales I believe) FPGA vendor, since when learning FPGAs I think that makes sense: there’s a lot of third-party dev boards for them, a lot of documentation, and a certain “safety in numbers” by going with the most common vendor. But now I feel ready to branch out and try the #2 vendor, Altera.
I saw a cheap little dev kit for Altera: the BeMicro CV. This is quite a bit less-featured than the Nexys 3 that I have been using, but it’s also quite a bit cheaper: it’s only $50. The FPGA it has is quite a bit beefier as well: it has “25,000 LEs [logic elements]”, which as far as I can tell is roughly equivalent to the Xilinx Spartan-6 LX75. The two companies keep inflating the way they measure the size of their FPGAs so it’s hard to be sure, and they put two totally different quantities in the sort fields in digikey (Xilinx’s being more inflated), but I picked the LX75 (a $100 part) by assuming that “1 Xilinx slice = 2 Altera LEs“, and the Cyclone V on this board has 25k LEs, and the LX75 has 11k slices.
My first experience with Altera was downloading and installing the software. They seem to have put some thought into this and have broken the download into multiple parts so that you can pick and choose what you want to download based on the features you want — a feature that sounds trivial but is nice when Xilinx just offers a monolithic 6GB download. I had some issue right off the bat though: the device file was judged to be invalid by the installer, so when I start up Quartus (their software), it tells me there are no devices installed. No problemo, let’s try to reinstall it — “devices already installed” it smugly informs me. Luckily the uninstaller lets you install specific components, so I was able to remove the half-installed device support, but since the software quality was supposed to be one of their main selling points, this was an ominous beginning.
Once I got that out of the way, I was actually pretty impressed with their software. Their “minimum synthesis time” isn’t much different from Xilinx’s, which I find pretty annoying, and it also takes them a while to spot syntax errors. So unfortunately that gripe isn’t fully satisfied. Overall the software feels snappier though — it doesn’t take forever to load the pin planner or any other window or view. There’s still an annoying separation between the synthesis and programming flows — the tools know exactly what file I just generated, but I have to figure out what it was so that I can tell the programmer what file to program. And then the programmer asks me even time if I would like to save my chain settings.
The documentation seems a bit lighter for Altera projects, especially with this dev board — I guess that’s one drawback of not buying from Digilent. Happily and surprisingly, the software was intuitive enough that I was able to take a project all the way through synthesis without reading any documentation! While it’s not perfect, I can definitely see why people say that Altera’s software is better. I had some issues with the programmer where the USB driver hadn’t installed, so I ended up having to search on how to do that, but once I got that set up I got my little test program on the board without any trouble.
So at this point, I have a simple test design that connects some of the switches to some of the LEDs. Cool! I got this up way faster than I did for my first FPGA board; that’s not really a comparison of the two vendors since there’s probably a large experience component, but it’s still cool to see. Next I’ll try to find some time to do a project on this new board — this FPGA is quite a bit bigger than my previous one, so it could possibly fit a reasonable Litecoin miner.
Overall it’s hard to not feel like the FPGA EDA tools are far behind where software build tools are. I guess it’s a much smaller market, but I hope that some day EDA tools catch up.