Xilinx ISE 14.7

ISE is a program from Xilinx that is a program suite to synthesize FPGA firmware. Algorithms can be written with VHDL or/and Verilog language which are converted to a file which can be loaded to a FPGA using ISE. ISE supports Windows XP and Windows 7. It also supports Linux.
image: https://lifetrg.wordpress.com/wp-content/uploads/2014/08/0_users_jbkim_dropbox_hobby_blog_isecentos_ise-21.png
image: https://lifetrg.wordpress.com/wp-content/uploads/2014/08/1_users_jbkim_dropbox_hobby_blog_isecentos_centos-logo-300x801.png
Linux ISE pros(?)

 

  • No large GUI difference between Window ISE.
  • I have experienced some crashes with Windows 7 (64bit) iSim. But they do not happen with Linux (64bit) iSim.
  • When synthesizing with same VHDL, Linux showed 10% increase in speed. (But it was tested only once.)
Linux ISE cons

 

  • It is hard to install (Especially Drivers)
  • I have only tested Chipscope, ISE, IPCore, iSim. I am not sure about other programs.
So, I plan to explain how to install ISE 14.7 on CentOS 6.5.

How to install and run Xilinx ISE 14.7

1. Installing Linux Xilinx ISE 14.7

1. Go to http://www.xilinx.com/ and download Linux ISE.
2. untar the downloaded file.
tar -xvf Xilinx_ISE_DS_Lin_14.7_*.tar
3. Run the install program.
If you do not want to install using the root account, you can make the /opt/Xilinx folder and change the permission to your account and then install as bellow.
sudo ./xsetup
sudo mkdir /opt/Xilinx
sudo chown <user name>:<group> /opt/Xilinx
./xsetup
At the last part of the installation, it asks if you want to install the Xilinx driver. But it will fail, so just skip this step.
If you are using a network license key, you will not be able to set it in the installation. Please looks a the setting environment below if you are using a network license key.

2. Installing Xilinx driver

I had a lot of trouble installing the driver. I followed a few steps on this site to get it to work.
1. Install fxload
fxload is in the atrpms repository, so set the atrpms-repo and then install fxload.
 wget http://dl.atrpms.net/el6-x86_64/atrpms/stable/atrpms-repo-6-7.el6.x86_64.rpm
sudo rpm -Uvh atrpms-repo*rpm
sudo yum install fxload
2. Make /etc/udev/rules.d/xusbdfwu.rules
sudo /opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/install_script/install_drivers/linux_drivers/pcusb/setup_pcusb /opt/Xilinx/14.7/ISE_DS/ISE
3. Edit /etc/udev/rules.d/xusbdfwu.rules.
sudo sed -i -e 's/TEMPNODE/tempnode/' -e 's/SYSFS/ATTRS/g' -e 's/BUS/SUBSYSTEMS/' /etc/udev/rules.d/xusbdfwu.rules
4. Install CentOS Development Tools to install Linux kernel source and gcc.
sudo yum groupinstall 'Development Tools' 
5. There is a bug in the Xilinx install_drivers script. So it needs to be edited. Due to the bug the Linux kernel version is not set correctly. To fix the bug, a line containing 2.4 should be changed to 2/.4
Change line 369 of /opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/install_script/install_drivers/install_drivers from 2.4 to 2\.4.
6. Install the driver
sudo /opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/install_script/install_drivers/install_drivers
7. Change the permission of the driver so that a normal user can use it.
sudo chmod 666 /dev/windrvr6

3. Setting the ISE environment

Several things should be done to set the ISE environment.
1. Due to selinux, every time the computer reboots, the permission of /dev/windrvr6 gets reset so that it needs to be set again. If the permission is not set then the computer will not be able to communicate with the FPGA.
sudo chmod 666 /dev/windrvr6
2. The ISE program needs several environment variables which can be set using the below script.
source /opt/Xilinx/14.7/ISE_DS/settings64.sh
3. If you are using a network license key, set the environment variable as below.
export XILINXD_LICENSE_FILE=<location>
Write the network license key in <location>.

4. Running ISE

If the environment is all set, to run ISE
/opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/ise
to run coregen
/opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/coregen
to run Chipscope analyzer
/opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/analyzer
to run Impact
/opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/impact

5. Convenience script

If setting the environment every time is tiresome, make a script as below and set a launcher to it. At the last part of the script, it uses zenity which makes it possible to make an error message GUI. Please install zenity if you want to use it.
If you want to run another programs other than ISE, then edit the /opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/ise line.
#!/bin/bash 
# Find if /dev/windrvr6 permission is 666 
b_permission=`ls -l /dev/windrvr6 | grep -c rw-rw-rw` 
if [ $b_permission -eq 1 ] ; then
  # Find if Xilinx environment is set
  b_xilinxEnvironment=`echo $PATH | grep -c Xilinx`
  if [ $b_xilinxEnvironment -eq 0 ] ; then
    source /opt/Xilinx/14.7/ISE_DS/settings64.sh
  fi
  /opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/ise 
else
  zenity --error --text="xilinxDriver permission is not set. Change permission for /dev/windrvr6" 
fi