Setup Xilinx ISE 14.1 (Free Version) and Digilent’s Adept Utilities in Fedora 17 64-bit


Hello everybody! As promised in the previous post, I’m going to show you how to setup the tools you’ll need to work with Digilent’s FPGA boards. This tutorial is also helpful if you want to use Xilinx ISE in Fedora. It is possible to program a number of boards (including the Nexys3 which I have) directly from Xilinx.

There was no real problem for me for most of the installation phase. Things worked great till the cable drivers installation. No matter what I tried, it wouldn’t work. After searching a lot online, I saw that this is a problem on RedHat and Centos as well (please correct me if I am wrong). After more searching, I found out how I can get things to work. I’m actually redoing the entire installation so that I don’t miss any step. So lets get started! 🙂

The first thing you’ll need to do is download the Xilinx Package. Head over to The Download Page and select “Full Installer for Linux”

(Note: Click the screenshots to view them at full size)

You’ll get redirected to a log-in page. In case you don’t have an account, click Create Account on the left side to create a new account. This part should be fairly obvious so I won’t go over it here. Once you have an account, go back to this page (you might have to go to the downloads page again), enter your login information and sign in. You’ll be asked for more details. Fill them up and click Next. You should now get a download request. Begin the download and wait for it to complete. It’s a 6GB package so it will take a long time (one whole day in my case).

Lets assume you’ve downloaded the package to ~/Downloads/. Open the terminal and untar (unpackage or decompress) the file you downloaded (The name of the package may differ depending on the version).

cd ~/Downloads
tar xvf Xilinx_ISE_DS_Lin_14.1_P.15xf.0.1.tar

This should create a new directory called Xilinx_ISE_DS_Lin_14.1_P.15xf.0.1. This will contain the setup files you will need to install Xilinx ISE. To begin setup, go into this directory and run the installer.

cd Xilinx_ISE_DS_Lin_14.1_P.15xf.0.1
./xsetup

If the second command does not work, type

chmod a+x xsetup
./xsetup

You should be greeted with the following screen:

Hit Next. You’ll now see a license agreement. Accept it and click next. You’ll see one more license agreement as well. Accept this one as well and click Next again. In the next screen, select the ISE WebPACK option and click Next.

You’ll see another screen where you can select installation options. Go with the default. Make sure that “Install Cable Drivers” is not selected as it isn’t going to work (we’ll fix it later). Click Next. You will now get to choose the installation directory. The default is /opt/Xilinx. I changed to a place I find convenient: ~/bin/Xilinx. I have other software such as scilab and sagemath installed here as well so it’s nice to have everything in one place. Change the directory if you want or leave it at the default. It shouldn’t matter. Click Next one last time.

You’ll see an options summary. Click Install. The installer will now unpack the files to the target installation directory. This can take a while (time for some ice cream :-)). When the installation is almost done, you’ll see a license manager open up. Select the “Get Free ISE WebPack License” option and click Next. You’ll see a dialog pop-up. Click Connect now.

Your browser will open and go to the Xilinx Website. Log in if you need to and you’ll see a page asking you to fill in your details once again. Luckily, you won’t need to because Xilinx remembers the details you entered the last time (i.e. before downloading the installer).

At this point, I’m not sure what will happen because I already requested a license once. In my case I get an option to request the same license again. Follow the instructions you see and post a question in the comments section in case you’re stuck. Once you request for the license, you’ll receive an email with the license file attached. Download this file and store it in a place you will remember. I kept mine the same place I installed Xilinx ISE. Click Copy license and point to the place where you’ve stored the license file. Once the License Manager accepts the license, you’ll see another dialog box. Click OK.

Now click Close to close the License Manager. The installer will tell you that the Installation is complete. Click Finish to exit the installer. Xilinx ISE is now installed. Now you will be able to open the Project Navigator and create new projects. You can add Verilog or VHDL code and generate BIT files (the files used to program the FPGA).

However, you will not be able to program the board. Remember we made sure we didn’t install the cable drivers before? We’ll have to do that now. The drives that ship with Xilinx do not compile and hence won’t work. We’ll need an alternative. I found the instructions for installing the USB cable driver (libusb-driver) in the following article:

Xilinx 11.4 on Fedora 12; Playing with Spartan 3e starter kit

Now here’s what you need to do. We need an alternate JTAG cable driver so we use libusb-driver. First we need to make sure we have the dependencies. Run:

sudo yum -y install fxload libusb-devel

Next we are going to get the driver’s source code and compile it. Run the following commands in the terminal:

git clone git://git.zerfleddert.de/usb-driver
cd usb-driver
make

Now copy the driver to your Xilinx installation. I used the command below. Remember that you’ll have to change it depending on where you installed Xilinx in the beginning.

cp libusb-driver.so ~/bin/Xilinx/14.1/ISE_DS/common/lib/lin64/

Now for the driver to work, you’ll need to copy udev rules and the firmware for the JTAG.

cd ~/bin/Xilinx/14.1/ISE_DS/common/bin/lin64/install_script/install_drivers/linux_drivers/pcusb/
sudo cp xusbdfwu.rules /etc/udev/rules.d/
sudo cp *.hex /usr/share/

Now that the cable drivers are installed, we need to install the required plug-ins and utilities to get the Nexys3 to work. Run the following commands:

~/bin/Xilinx/14.1/ISE_DS/ISE/bin/lin64/digilent/
sudo ./install_digilent.sh

Hit the enter key each time the installation script asks you to confirm a directory (you can alternatively choose to change the directory. I used the defaults to be safe).

There is still one more problem we need to fix. Digilent’s script was written for an older version of udev (Linux’s device manager).  So by default, you’ll be able to use Digilent’s tools only as root. The script creates a udev rules file in /etc/udev/rules.d/. In my case the file was called 52-digilent-usb.rules.  Run the following  command:

sudo sed -i 's/SYSFS/ATTR/g' /etc/udev/rules.d/52-digilent-usb.rules

Please do check the name of the file. I’m not sure if it is 52-digilent-usb.rules for everyone. I got the above fix after contacting Digilent’s support.

Finally reload udev using the following command so that all these drivers work.

sudo udevadm control --reload-rules

We’re nearly done. To use Xilinx ISE, we need to set a few environment variables and source a settings file. Open your favourite text editor and add the following:

#!/bin/sh
# Xilinx Webpack 14.1
XILINX_BASE="/home/ashwith/bin/Xilinx"
XILINX_VERSION="14.1"
DISPLAY=:0
export XIL_IMPACT_USE_LIBUSB=1
source ${XILINX_BASE}/${XILINX_VERSION}/ISE_DS/settings64.sh
${XILINX_BASE}/${XILINX_VERSION}/ISE_DS/ISE/bin/lin64/ise

Again, remember that your installation path will not be the same. Change the “XILINX_BASE” line accordingly. Save the file as startise (or any other name you like) and close the editor. We need to make this file an executable. Run the following:

chmod a+x startise

Now whenever you want to open the Xilinx ISE Project navigator, just run startise like so:

./startise

So that’s how you setup the environment for the Nexys3 FPGA board on Fedora 17 64-bit. I’m guessing this should work on other Digilent boards as well. Do let me know if you face any issues by posting in the comments section below. I’m no expert on this but I’ll try my best to help you out. Hope this was helpful. For my next post, we will program the board and see it in action! Keep checking back for that. Thanks for reading! 🙂

50 Responses to Setup Xilinx ISE 14.1 (Free Version) and Digilent’s Adept Utilities in Fedora 17 64-bit

  1. You may find FPGALink useful as an alternative to Adept:

    http://www.makestuff.eu/wordpress/?page_id=1400

    • Ashwith says:

      Hey that looks quite neat. Thanks!

      • Actually, I notice you have a Raspberry Pi too. If you get the time I would really appreciate it if you could test programming your Nexys3 from your RPi. I doubt the RPi would be able to supply enough power to run the Nexys3 though so the two boards would need to be powered separately.

        Once connected, you *should* be able to do something like this on the RPi:

        http://www.swaton.ukfsn.org/temp/ashwith/try_1.txt

        …which will result in the Nexys3 displaying “0114” on its 7-seg display (0x12 + 0x34 + 0x56 + 0x78 = 0x0114).

      • Ashwith says:

        Worked exactly like you said. Here is a pic:

        Raspberry Pi + FPGA

        This is really cool Chris! You should tell Liz about this!

        Can I use .bit files as well? Do you mind if I mention this (I will obviously credit this to you) when I post more about the Raspberry Pi?

  2. Excellent! Can I use your photo (with credit obviously)? I would like to post it to the RPi forum, to G+ and to my blog!

    Please do mention it, the more people using it the better as far as I’m concerned!

    You cannot use .bit files because I wanted to keep it vendor-neutral (FPGALink supports Altera as well as Xilinx FPGAs). I seem to remember the .bit programming algorithm is slightly different for different FPGA families (i.e Spartan3 slightly different from Spartan6, slightly different from Virtex etc) so it would be a lot of extra maintainance for no real gain. Also there are several other features on the TODO list that I think are higher priority. To be honest I just use emacs for editing VHDL/Verilog anyway and a Makefile for building, so it makes little difference that there’s a two-second .bit -> .xsvf step at the end of the build process:

    http://www.swaton.ukfsn.org/temp/ashwith/build_1.txt

    Of course you could continue to edit the VHDL with ISE, but there are far better HDL editors out there IMHO.

    • Ashwith says:

      Sure. Go ahead! 🙂

      I asked about bit files because that’s the only format I’ve used so far. I’ll explore these formats too.

      I agree that ISE’s editor isn’t too useful. I write my code in vim and then add the files to the ISE project. I do plan on using Makefiles in the future so thanks for pointing me to your Makefiles!

  3. Pingback: Hardware Mode: Raspberry Pi Case & Solder Spool Stand. « Ashwith

  4. Hello,

    I followed the steps but I always get this message even I tried the and gate in VHDL and verilog. I use Fedora 16 and ISE 14.2.
    Process “Synthesize – XST” failed

    kind regards

    • Hello,

      I hope you can answer me. I think the problem is related to glibc, I always get:

      *** glibc detected *** /media/Extension/Xilinx/14.2/ISE_DS/ISE/bin/lin/unwrapped/xst: double free or corruption (!prev): 0x094dfc68 ***

      regards, zain

      • Ashwith says:

        I’m not sure what the problem is.

        Which version of fedora are you using? Also is it the 32-bit edition or 64-bit? Did you download the corresponding version of ISE?

        Anyways, on my setup, I use Fedora 17 64-bit. For other reasons, I have both 32-bit and 64-bit versions of glibc installed. In case you are using a 64-bit OS, could you see if installing 32-bit glibc works?

        Beyond that I don’t know what could be wrong. My knowledge of Linux administration is very minimal. You might have better luck at the Xilinx forums.

      • Thank you for your reply.
        I use fedora 16 32-bit and ISE 14.2
        Unfortunately in Xilinx forums there is no response to my questions!

      • Ashwith says:

        Which version of glibc are you using? Can you give me the output of

        rpm -q glibc

      • glibc-2.14.90-24.fc16.9.i686

        Dankeschön 🙂

      • Ashwith says:

        You are welcome! 🙂

        So that is probably the problem. I have version 2.15 installed while you have 2.14. Since this is the latest version of ISE, it may require a newer version of glibc. Does Fedora 16 have an update to the latest version of glibc? If not you’ll either have to upgrade to Fedora 17 or use an older version of ISE (or somehow install glibc v 2.15).

  5. OK, I’ll upgrade to fedora 17.
    Thank you very much!

    • Hi Zain,

      Ashwith is almost certainly right about the glibc version, but if you have time to do a little bit of investigation before upgrading to Fedora 17, it would be interesting to see what is actually doing this double-free.

      If you do this:

      grep xst *.cmd_log

      …you should see the actual xst command-line that was run. It will be of the form “xst “. If you run this command-line on its own, does it fail in the same way? You will have to source the settings64.sh script first to setup the environment (Ashwith’s startise script does it inline, but you have to source it directly in your interactive shell).

      If you run it in the debugger (you may have to install it with “sudo yum install gdb”):

      gdb xst
      run
      where

      …what do you get?

  6. The output of LD_PRELOAD=/libdpcomm.so.2 impact:

    ERROR: ld.so: object ‘/libdpcomm.so.2’ from LD_PRELOAD cannot be preloaded: ignored.
    Release 14.2 – iMPACT P.28xd (lin)
    Copyright (c) 1995-2012 Xilinx, Inc. All rights reserved.
    ERROR: ld.so: object ‘/libdpcomm.so.2’ from LD_PRELOAD cannot be preloaded: ignored.
    Qt: Session management error: None of the authentication protocols specified are supported

    (process:4284): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
    Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.

  7. Shireesha says:

    Hi Ashwith,
    I was trying to program the bitstream file onto the Basys2 Spartan3E board. But it says “ERROR: could not open xyz.bit for reading”. I have Xilinx ISE 14.2 running on Ubuntu 12.04 LTS. Could you please tell what am I doing wrong here?
    Thanks,

  8. mithun says:

    Hi all,

    I’m trying to run Xilinx on Fedora.But Impact crashing every time after selecting”configure devices using Boundary-scan(JTAG)”.
    I am using Xilinx ISE 13.4 on fedora 14.

    output after running LD_PRELOAD=/usr/local/digilent/blah/lib/libdpcomm.so.2 impact
    [root@ssl ~]# LD_PRELOAD=/usr/local/digilent/blah/lib/libdpcomm.so.2 impact
    ERROR: ld.so: object ‘/usr/local/digilent/blah/lib/libdpcomm.so.2’ from LD_PRELOAD cannot be preloaded: ignored.
    ERROR: ld.so: object ‘/usr/local/digilent/blah/lib/libdpcomm.so.2’ from LD_PRELOAD cannot be preloaded: ignored.
    ERROR: ld.so: object ‘/usr/local/digilent/blah/lib/libdpcomm.so.2’ from LD_PRELOAD cannot be preloaded: ignored.
    Release 13.4 – iMPACT O.87xd (lin64)
    Copyright (c) 1995-2011 Xilinx, Inc. All rights reserved.
    ERROR: ld.so: object ‘/usr/local/digilent/blah/lib/libdpcomm.so.2’ from LD_PRELOAD cannot be preloaded: ignored.

    But,if I use the following commands impact crashing without an error.
    source /opt/Xilinx/13.4/ISE_DS/settings64.sh
    impact &

    • Ashwith says:

      I’m not sure what the problem is here. Sorry 😦

      Have you installed the Digilent plug-in as well? I thought the script does it (so didn’t mention it in the instructions) but when I installed ISE 14.4 on Fedora 18 last week, it didn’t and I had to do it manually. I don’t know how to use the it (the plug-in) via command line but it works for me on the GUI. I currently use ISE 14.4 on Fedora 18 but this would work on ISE 14.1 on Fedora 17 as well.

      Also sorry for the really late reply.

    • mithun, is your libdpcomm.so.2 file really installed in /usr/local/digilent/blah/lib? I used the word “blah” in my previous comment as a placeholder, not to be taken literally.

  9. Anupam says:

    Thanks man ! This was really helpful !

  10. maulik says:

    after installing when i run through terminal ise& command it shows command not found….!!

    • Ashwith says:

      Did you follow all my instructions? You need to create a script that sets up the required environment variables. Read through my tutorial. Just

      ise

      will not work because your computer will not know where to look for it.

  11. ifra says:

    kindly help me
    tell me the free dowloading limk of xilinx ise suit

  12. Chiropractor says:

    I’m no longer certain where you are getting your information, but great topic. I needs to spend some time studying much more or understanding more. Thanks for magnificent info I used to be looking for this info for my mission.

  13. Pearl says:

    Peculiar article, totally whst I needed.

  14. Hi,
    I have a doubt.
    Which is the most useful & widely used version of Xilinx ISE Design & is there any crack for it to use its full functionality ?

    • Ashwith says:

      I’m not sure what is the most widely used. I install the latest whenever I need to re install (which is every time I upgrade fedora).

      I don’t support or indulge in software (or any other form of) piracy so I can’t tell you about cracks.

      • Hi,
        What logic should i use for a 4 digit 7 segment display ?
        I should get display 0-9999 in LED of Spartan 3 FPGA kit by connecting it to a Xilinx VHDL ISE environment ?
        I am not getting the exact logic,truth table for this !

      • Ashwith says:

        You’ll need to write down the truth table the hard way (but it should be there online). Each 7-segment uses the same truth table (4 inputs and 8 outputs if you want to use BCD). Write down the truth table by seeing which LEDs should be ON for a particular number. Then use that truth table 4 times.

      • Thank you for efforts, dear Ashwith
        Let me put it very simple. I can do 4 input-8 outputs by BCD 7 segment display decoder for a single digit alone. But for example after 9 in decimal, how will i link such that I get the 1 in tens place & 0 in ones place, which is followed by 1 in tens & 1 in ones…..it has to go on likethis

        How should I connect the sequence. Likewise is for the entire flow of successive digits?

  15. Pingback: Rashmi Patel Torrington

Leave a comment