Installing Xilinx ISE and Altera Quartus II

for fun and profit because you need to.

I have just reinstalled my Linux computer and had to install both Xilinx and Altera Web edition tools.
The distribution is Mageia 5 (64bits). Most remarks here will certainly apply to many other distros.

Xilinx ISE


ISE is needed for Spartan 3 and 6 designs, as the SP605 board.
More recent FPGAs use Vivado.

  • Download the last version, ISE 14.7.
  • Before running "xinstall", type "unset QT_PLUGIN_PATH
  • Install ISE as a normal user (no root needed). Don’t try to install the cable drivers here.

To start Xilinx tools, type something like :
. /opt/Xilinx/14.7/ISE_DS/
then "ise" or "impact"

Make scripts or aliases to save a few keystrokes.

Cable driver

The SP605 board embeds a “Platform cable USB/II”

You will need to install "fxload" and "libusb"
You will need to create a symlink in /lib64 : "ln -s" (as root)

Windrv6 is not needed. You don’t have to compile any kernel driver for the USB download cables.

Most Linux distributions now use UDEV,
create (as root) the file "xusbdfwu.rules" in "/etc/udev/rules.d" with :

# version 0003
ATTRS{idVendor}=="10c4", MODE="666"
ATTRS{idVendor}=="03fd", MODE="666"
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="000d", RUN+="/sbin/fxload -v -t fx2 -I /opt/Xilinx/14.7/ISE_DS/ISE/bin/lin/xusbdfwu.hex -D $tempnode"

– The first line allows accesses to the usb-serial interface from any user. We use it for the debugger/monitor.
– The second line allows accesses to the cable driver from any user (so you don’t have to be root to run ‘impact’)
– The third line gives the rule for starting "fxload" and download the firmware.

This file may be different than the one usually found on the net. Maybe it is because the USB interface on the SP605 board is somewhat special. This is how it works on my computer.

You generally don’t have to reboot the computer to test udev rules. Just switch off the Xilinx hardware and type :

udevadm control --reload-rules
udevadm trigger

fxload can also be tried manually at first:
/sbin/fxload -v -t fx2 -I /opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/xusbdfwu.hex -D /dev/bus/usb/001/0xx

When it works, and the correct USB device is selected, you will see a long list of "write on-chip" messages, ending with :

write on-chip, addr 0x0000 len    3 (0x0003)
write on-chip, addr 0x14e2 len   12 (0x000c)
write on-chip, addr 0x09d2 len  555 (0x022b)
write on-chip, addr 0x14ee len  128 (0x0080)
write on-chip, addr 0x09d1 len    1 (0x0001)
write on-chip, addr 0x0bfd len   79 (0x004f)
... WROTE: 7443 bytes, 85 segments, avg 87

But, with the UDEV file, everything is configured automatically. You should get with "lsusb"

Bus xxx Device xxx: ID 03fd:0008 Xilinx, Inc. Platform Cable USB II

Altera Quartus

Download and install version 15 with updates (no root access needed)
Version 14.x is broken, don’t even try.

Quartus uses the Ethernet MAC address for the license, and expects an “eth0” device.
With UDEV (again), Ethernet interfaces have different names, generated automatically (which is both a good and a bad thing)

Default udev rules are in the directory "/usr/lib/udev/rules.d/", they can be overridden in "/etc/udev/rules.d"

To return to the old Ethernet naming scheme, type (as root) in "/etc/udev/rules.d"
"ln -s /dev/null 80-net-setup-link.rules"
(or find the corresponding net setup file for your distribution)

There are several other ways to change Ethernet naming with UDEV, you may need a more subtile method than just disabling it.
You may need to uninstall/remove the old Ethernet interface name (in Mageia control panel or equivalent).

Many thanks to the various tutorials online. A few links:

2 thoughts on “Installing Xilinx ISE and Altera Quartus II

  1. I like the Altera cables alot better… no driver required at all its quite nice.

    I’ll have to try your tips for Xilinx cable drivers I got stumped at that point last time I tried to use ISE on Linux. I run 64bit Funtoo… and the windrv6 stuff wouldn’t even build.

Leave a Reply

Your email address will not be published. Required fields are marked *