Setting up a Xilinx FPGA development system

I’ve been trying to use the latest Xilinx FPGA development software (Foundation ISE 7.1i) under Linux. It’s been a huge hassle getting it set up, but it’s finally working.

Unfortunately Xilinx only officially supports Red Hat Enterprise Linux 3, which is one major release back, uses a 2.4 kernel, and (worst of all) costs around $300. Being a Cheap Bastardâ„¢, I naturally don’t want to buy it. Most of my computers are running Fedora Core 3 or 4, so I first tried to run it on those.

Attempt 1:

Xilinx supplies both a 32-bit and a 64-bit Linux version of ISE. My main desktop computer at home has an AMD Athlon 64 3500+ processor running FC4, so I tried the 64-bit version first. Since ISE is built on RHEL3, it uses older versions of some shared libraries such as and I was able to get those from Fedora Core 2. But RHEL3 also uses an older linker (part of binutils) that produces 64-bit executables that work fine on older systems, but have problems with dynamic linking on newer systems. That’s not really Xilinx’s fault, but I hope their next release, which is due out fairly soon, will support RHEL4.

Attempt 2:

I installed the 32-bit version of ISE, along with the 32 bit versions of the older shared libraries. The 32-bit version of ISE actually mostly works on FC3 and FC4. When compile errors occur, there’s some problem with a Tcl script such that you can’t just double-click the error message and get to the right place in the source file. Annoying, but not fatal. The big problem is that the Xilinx drivers for the Parallel Cable IV and the Platform Cable USB, either of which can be used to actually download the resulting FPGA bitstream, only work with a 2.4 kernel, and FC3 and FC4 use a 2.6 kernel.

There are some free download programs that will work with a Parallel Cable III or equivalent, as supplied with the Digilent Spartan 3 Starter Board. (Xilinx also sells this board as the Spartan 3 Starter Kit. If you buy from Xilinx, you get evaluation copies of ISE and EDK with it, but if you buy from Digilent you can get larger Spartan 3 chips for a little bit more money.)

Anyhow, one of the free programs, xc3sprog, works fine with the Spartan 3 Starter Board. I haven’t tried it with the Avnet Virtex-4 FX Evaluation Kit; I suspect that some hacking will be needed to support the Virtex-4 and or XCF08 chips.

In any case, I really want to use the Platform Cable USB, as it should be able to download much faster than the Parallel Cable III. Besides which, I spent $150 on the thing, and don’t want it just sitting around looking pretty.

Attempt 3:

I may as well run the ISE under a version of Linux that it will be happy with. I decided to try CentOS 3.5, which is essentially RHEL3 with the trademarks filed off. Not wanting to have to dual-boot to use ISE, I installed the 64-bit version of CentOS 3.5 in a virtual machine through the use of a beta version of VMware Workstation 5.5.

I spent about six hours setting up VMware, creating the virtual machine, installing CentOS, ISE 7.1, SP4 for ISE 7.1, the Xilinx EDK, and the EDK service pack. When I was finished, ISE ran just fine. Until I tried to download to the FPGA. Impact, the Xilinx programming software, informed me that the cable drivers were not available for 64-bit Linux. Sigh. If I’d researched it more I could have found that out before installing the 64-bit version.

Attempt 4:

I created another virtual machine, and installed the 32-bit version of Centos 3.5. Then installed ISE, SP4, EDK, and the EDK service pack. Five hours later, with everything installed, I tried to download to the FPGA. Impact recognized the Platform Cable USB, and said that it needed to upgrade the CPLD in the cable, which would take about 10 minutes with high-speed USB, or 30 minutes with full-speed USB. So I went away for a while and worked on something else.

An hour later I took a look at it. The progress bar was less than 20% complete. I left it running overnight.

The next morning it was done; IMPACT reported that the upgrade took almost six hours. If it was only the cable CPLD upgrade that was slow, it wouldn’t be a problem, since that will only need to be done when installing ISE updates. But all cable operations were slow. Much slower than using the Parallel Cable III with xc3sprog on FC4. Apparently the USB virtualization in VMware has quite a performance penalty. Back to the drawing board.

Attempt 5:

Before I purchased the Athlon 64 system, I had a dual processor Athlon XP 1900 system (yes, “XP”, not “MP”). I had retired the system and scavenged some parts from it for use in other systems, but I decided that I should just run CentOS 3.5 on it so that I can run the Xilinx tools natively.

I pieced it back together and installed CentOS 3.5 on it. Unfortunately after the boot process CentOS had a lot of problems on it. The SMP kernel was hanging just after it tried to configure CPU 1. I tried the single-processor kernel, and it was hanging while trying to sort out module dependencies with depmod. After some fiddling around with BIOS settings (changing from MPS 1.4 to MPS 1.1), I got the SMP kernel to boot, but CentOS had various other problems. I got tired of fighting it.

Attempt 6:

A few days ago, Fry’s offered an AMD Sempron 2800 (64-bit enabled) CPU with an ECS nForce3-A motherboard for $90. ECS is not my favorite brand of motherboards; I prefer Asus or Tyan. But the price seemed quite attractive, so I bought it and set up another system to dedicate to FPGA development.

Went through the whole installation process (CentOS, ISE, EDK, service packs) again. This time everything works. ISE is happy, Impact is happy, it finds the Platform Cable USB, and downloads are fast.

But I’m still annoyed with having to use a separate machine for FPGA development, rather than doing it on my main desktop machine and my laptop. So I really hope that the next Xilinx software will run on RHEL4, including supporting the Platform Cable USB on 64-bit systems. Only time will tell.

This entry was posted in Fedora, FPGA. Bookmark the permalink.

9 Responses to Setting up a Xilinx FPGA development system

  1. Rainier says:

    Thanks for your experience sharing ^_^

  2. Hubert Bahr says:

    I run ise and xps on RHEL4 with the platform USB both versions; the built in on the XUP board and the actual cable. The main problem I have is that the console window doesn’t display progress. warnings and errors are shown however. A work around for this is to run tail -f on the log file in a seperate termingal window. The soulution for the driver was to obtain a demo kit of the WinDriver and compile it for you kernel. I don’t remember where I found it, but google search provided the leads. The other point is you need adjust the xusbdfwu device code to match the correct version of the cable. See xilinx answer database.

    I am hoping to find a cleaner solution for the console window.

  3. Paula says:

    Hi all!
    Thanks for the indications.

    I am using Ubuntu (2.6.xx kernel), and I have installed the ISE and EDK environments, but my problem is the Xilinx Parallel Cable IV. Did you finally get it working? If so, it would make me feel happy for the rest of my life!!

  4. eric says:

    I was only able to get the PCIV and USB cable working with a 2.4 kernel. Some people report that they’ve been able to get a copy of the Jungo WinDriver demo kit and build a suitable 2.6 driver using that.

    Reportedly 8.1i will include support for the 2.6 kernel. It’s expected that 8.1i will likely be released by year end, though I don’t think Xilinx has made any public commitment to it.

  5. Dotnetter says:

    We are working in Xilinx Virtex II Pro and we need help on setting the virtual platform using XPS7.1.Can you help us out?

  6. eric says:

    Dotnetter: I’m afraid I can’t help you. I don’t really know anything about XPS, and between work and classes I don’t really have any spare time right now. I’d recommend asking more specific questions on the Usenet newsgroup comp.arch.fpga.

  7. Eric says:

    Inisyn has released xup, a Free Software (GPL) tool to allow programming of the XC3S500E on the Xilinx Spartan 3E Starter Kit, using the kit’s built-in USB programmer. The starter kit uses hardware very similar to the Xilinx Platform Cable USB, so it might work with that as well.

  8. Pingback: My Goblog » Blog Archive » XILINX di Linux

Leave a Reply