While Arch Linux is not one of the officially supported distributions, many features are known to work on Arch Linux.

−

The ISE WebPACK version is downloadable at: http://www.xilinx.com/support/download/index.htm

+

−

The download requires registration and licensing agreement, but there is no charge, i.e. it's free as in "Free Beer", but not free as in "Free Speech".

+

== Prerequisites ==

−

Make sure you select the Linux version.

+

=== Dependencies ===

+

If you plan to develop software for an embedded ARM core (e.g. for Xilinx Zynq SoC devices), you will want to install the GCC cross-compiler bundled included with the Xilinx Embedded Development Kit (EDK). This compiler requires the {{Pkg|glibc}} and {{Pkg|ncurses}} packages. For i686 installations, these will most likely be already present.

−

There are a couple of very helpful HOWTO's at Gentoo:

+

If you are on a 64-bit Arch installation, you need to install them from the [[multilib]] repository ({{Pkg|lib32-glibc}} and {{Pkg|lib32-ncurses}}).

and this is a Xilinx tip for usb install on Linux: http://www.xilinx.com/support/answers/22648.htm

+

=== Default Shell ===

+

During the installation, the Mentor CodeSourcery toolchains for embedded processors can be installed along with the Xilinx tools. This installation silently fails when the default shell is set to "dash". Make sure {{ic|/usr/bin/sh}} points to {{ic|/usr/bin/bash}}.

Once ready to download I used, and recommend, the "Download Files Individually" option, once you reach the download page. This downloads the entire installer and installation is performed afterward via:

+

If the output looks like this:

−

tar xf webpack_SFD.tar

+

{{ic|lrwxrwxrwx 1 root root 15 13 Mar 06:47 /usr/bin/sh -> bash}}

−

cd webpack

+

then {{ic|/usr/bin/sh}} already points to {{ic|/usr/bin/bash}} (the default in Arch Linux).

−

./setup

+

−

Xilinx only provides official support for redhat and suse distributions, but I found the initial install of ISE to go smoothly on Arch Linux with kernel-headers 2.6.24.3-1.

+

If not, run the following commands as root:

+

$ rm /usr/bin/sh

+

$ ln -s bash /usr/bin/sh

−

I first installed ISE WebPACK for Linux version 9.2i, but 10.1 was released shortly thereafter. I was pleased to see this updated version was available for linux at the same time as 10.1 for windoze.

+

== Installation ==

−

+

{{Note|The installation is last known to work with Xilinx ISE 14.6, requiring the dynamic library fix described below.}}

−

After installation, ISE worked fine for design capture, synthesis and simulation. However once I reached the point of trying to download a design to a target device I ran into some trouble. Installing the cable drivers for talking to the target interface cable yielded errors.

yields a directory named install_drivers/. When I attempted to build the drivers from this file I encountered the following errors:

+

−

'''linux_wrappers.c:48:31: error: linux/ioctl32.h: No such file or directory'''

+

−

and

+

−

'''linux_wrappers.c:1398: error: ‘struct scatterlist’ has no member named ‘page’'''

+

−

+

−

Reading in the Gentoo HOWTO's listed above led me to download the latest Jungo source code, which is the core of the Xilinix linux USB support. I modified the link after reading that the latest Jungo driver was 9.20. I got WinDriver 9.20 from: http://www.jungo.com/st/download/WD920LN.tgz

+

−

+

−

$ tar xzf WD920LN.tgz

+

−

yields a directory named WinDriver/ Within this directory you'll find:

The ISE Design Tools can be downloaded from [http://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/design-tools.html the official download page]. It requires registration and licensing agreement, but there is no charge, i.e. it's free as in "free beer", but not free as in "free speech".

This corrected the compile errors in the Jungo USB driver and produced the windrvr6.ko kernel module. However there was still a nagging error in the compilation of install_drivers/linux_drivers/xpc4drvr2_6/xpc4drvr/

+

The ISE design tools installer is a Qt application. If you are running the KDE desktop environment, the installer may try to load the "Oxygen" widget theme, which will fail due to the older Qt framework bundled with the Xilinx ISE design tools. You need to remove the {{ic|QT_PLUGIN_PATH}} environment variable before executing the installer:

+

$ unset QT_PLUGIN_PATH

−

scripts/Makefile.build:46: *** CFLAGS was changed in "/home/johnea/src/before/install_drivers/linux_drivers/xpc4drvr2_6/xpc4drvr/Makefile". Fix it to use EXTRA_CFLAGS. Stop.

Follow the instructions to install the ISE. By default, the whole application is installed to {{ic|/opt/Xilinx/}}, so make sure the user running the installer has permissions to write to this directory.

During installation, uncheck the "Install Cable Drivers" option. Leaving it checked will cause errors during the installation.

−

after/install_drivers/linux_drivers/xpc4drvr2_6/xpc4drvr/Makefile

+

−

+

−

25c25

+

−

< ifeq ($(GET_USER_SIZE_SYM),0)

+

−

---

+

−

> #ifeq ($(GET_USER_SIZE_SYM),)

+

−

27c27

+

−

< endif

+

−

---

+

−

> #endif

+

−

This corrected all compilation errors, but the xpc4drvr.ko still yielded the following error in /var/log/everything.log whenever it was attempted to be loaded:

+

=== Launching the ISE design tools ===

−

xpc4drvr: Unknown symbol get_user_size

+

The ISE design tools include a shell script that modifies the environment variables (mostly PATH and LD_LIBRARY_PATH). This script must be sourced before starting the ISE tools:

+

$ source /opt/Xilinx/14.6/ISE_DS/settings64.sh

+

or, for a 32-bit installation:

+

$ source /opt/Xilinx/14.6/ISE_DS/settings32.sh

−

However this did allow compilation of the entire driver tree and the install script was able to successfully install the drivers via:

+

Then, the ISE design tools will be found in your PATH and can be started by typing their name in the terminal (e.g. {{ic|ise}}, {{ic|planAhead}}, {{ic|xsdk}}, ...)

−

cd install_drivers/

+

−

./install_drivers

+

−

There is also a udev rule entry that will make the driver accessible to all users after each reboot. (Which I haven't yet applied)

+

=== License Installation ===

+

After requesting a WebPACK license from Xilinx using their [http://www.xilinx.com/getlicense/ Licensing Site], you will be e-mailed a license file. This file can be imported with the Xilinx License Manager (run {{ic|xlcm -manage}} from the terminal).

−

So after this brief modification, I am able to successfully run ISE on Arch Linux (kernel26 2.6.24) with full USB cable support.

+

Another way to import the license is to simply copy it to the {{ic|~/.Xilinx}} directory.

−

There is a GPL'd libusb based driver mentioned in the Gentoo HOWTO: http://www.rmdir.de/~michael/xilinx/ that I was particularly interested in using. However while the source built without error, I continued to receive runtime errors when attempting to run it in ISE.

+

=== Node-Locked Licenses ===

+

Arch Linux by default uses systemd's [[Network_Configuration#Device_names|Predictable Network Interface Names]]. This means that your system will most likely not have its network interfaces named "eth0", "eth1" and so forth.

−

I never attempted to use the Xup driver.

+

However, the Xilinx License Manager looks for these names to find out the system's MAC addresses, which are used for node-locked licenses. If you require node-locked licenses, you might have to disable this feature to re-gain the kernel naming scheme for network interfaces. The [http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames systemd wiki] describes how to do this.

−

There were quite a few pertinent facts along the way that I'm failing to capture here. Such as the fact that I discovered the same directory:

+

== Post-Installation Fixes and Tweaks ==

−

install_drivers/

+

After installation, a few manual fixes are required to work around problems caused by running the Xilinx tools on a Linux distribution that is not officially supported by Xilinx. Some of these fixes are taken from [http://zedboard.org/content/ise-142-bug-reports this forum post.]

−

in the base install of the entire ISE package under:

+

=== Dynamic Library Fix (libstdc++.so) ===

−

/opt/Xilinx/10.1/common/bin/lin/install_script/install_drivers/

+

The ISE tools supply an outdated version of the libstdc++.so library, which may cause segfaults when using the Xilinx Microprocessor Debugger and prevents the usage of the oxygen-gtk theme. This outdated version is located in two directories within the installation tree: {{ic|/opt/Xilinx/14.6/ISE_DS/ISE/lib/lin64/}} and {{ic|/opt/Xilinx/14.6/ISE_DS/common/lib/lin64}}. To use Arch's newer version of libstdc++, rename or delete the original files and replace them with symlinks:

+

# cd /opt/Xilinx/14.6/ISE_DS/ISE/lib/lin64/

+

# mv libstdc++.so libstdc++.so-orig

+

# mv libstdc++.so.6 libstdc++.so.6-orig

+

# mv libstdc++.so.6.0.8 libstdc++.so.6.0.8-orig

+

# ln -s /usr/lib/libstdc++.so

+

# ln -s libstdc++.so libstdc++.so.6

+

# ln -s libstdc++.so libstdc++.so.6.0.8

−

I would expect that this procedure could be applied directly to that without the additional step of downloading the install_drivers.tar.gz but I haven't tried this.

+

Then, repeat this process in the {{ic|/opt/Xilinx/14.6/ISE_DS/common/lib/lin64}} directory.

−

Additionally, as a housekeeping note, the commands above expect all files to be downloaded and untared in the same working directory.

+

=== Digilent USB-JTAG Drivers ===

+

To use Digilent Adept USB-JTAG adapters (e.g. the onboard JTAG adapter on the [http://www.zedboard.org ZedBoard]) from within the Xilinx design tools, you need to install the Digilent [http://www.digilentinc.com/Products/Detail.cfm?Prod=ADEPT2 Adept Runtime] and [http://www.digilentinc.com/Products/Detail.cfm?Prod=DIGILENT-PLUGIN Plugin].

−

All in all this is the crux of what was necessary for me to get the USB support running on Arch.

+

To install the Digilent Adept Runtime, it is recommended to build and install {{AUR|adept-runtime-xilinx}} and its dependencies {{AUR|libftd2xx-digilent}} and {{AUR|usbdrv}} from the [[Arch User Repository]].

−

Sorry for the somewhat fragmented description, but hopefully this allows others to get this great tool for linux users running on the post 2.6.23 kernels.

+

To install the Digilent plugin, you have to copy two files to the ISE plugin directory. Run the following commands as root:

The problem seems to come from the bundled JRE as described [http://forums.xilinx.com/t5/Installation-and-Licensing/RHEL5-64-bit-ISE-13-1-PlanAhead-launch-from-w-in-ISE-fails/td-p/148624/page/2 here]. To fix the issue, symlink the OpenJDK libjvm.so into the Xilinx's installation directory.

+

# cd /opt/Xilinx/14.6/ISE_DS/PlanAhead/tps/lnx64/jre/lib/amd64/server

+

# mv libjvm.so{,-orig}

+

# ln -s /usr/lib/jvm/java-7-openjdk/jre/lib/amd64/server/libjvm.so

−

This is the upstream source for non-proprietary Xilinx USB drivers using libusb. This is now the Xilinx recommended linux usb interface and is shipped with new versions of Xilinx ISE WebPack.

+

=== GNU make ===

+

XSDK looks for the {{ic|gmake}} executable, which is not present in Arch Linux by default. Create a symlink somewhere in your path, e.g.

+

$ ln -s /usr/bin/make /home/<user>/bin/gmake

−

Per a note on the rmdir.de website, newer versions of udev no longer support the older syntax of the /etc/udev/rules.d/xusbdfwu.rules file:

+

Make sure this directory is in your PATH variable.

−

<pre>

+

−

* 2010-03-15: If you are using newer udev-versions (like the version included in Debian Squeeze and Ubuntu 9.10), then the file /etc/udev/rules.d/xusbdfwu.rules is incompatible with this udev version. The effect of this is that the cable-firmware gets never loaded and the cable led never lights up.

KDE by default defines the QT_PLUGIN_PATH shell variable. Some of the Xilinx ISE tools (ISE, Impact, XPS) are Qt applications, which means that they will search for Qt plugins in the locations defined by this shell variable.

−

You may have to reboot for this change to take effect.

+

−

</pre>

+

−

I didn't require a reboot for this patch to take affect while running:

+

Because the Xilinx tools are compiled against and ship with an older version of the Qt framework which cannot use these plugins, they will crash when launched with this environment variable present.

−

<pre>

+

−

[root@vhost pcusb]# pacman -Q udev

+

−

udev 151-3

+

−

[root@vhost pcusb]# pacman -Q kernel26

+

−

kernel26 2.6.33.4-1

+

−

</pre>

+

−

In both the x86_64 host and the i686 chroot.

+

−

android

+

To fix this issue, run the following command before launching the tools:

−

p.s. The previous name of this page included the version of arch in order to provide context to the era in which this information was accurate. The removal of this contextual information causes the title to imply that this article is timeless, when in fact it is quite temporal.

Prerequisites

Dependencies

If you plan to develop software for an embedded ARM core (e.g. for Xilinx Zynq SoC devices), you will want to install the GCC cross-compiler bundled included with the Xilinx Embedded Development Kit (EDK). This compiler requires the glibc and ncurses packages. For i686 installations, these will most likely be already present.

Default Shell

During the installation, the Mentor CodeSourcery toolchains for embedded processors can be installed along with the Xilinx tools. This installation silently fails when the default shell is set to "dash". Make sure /usr/bin/sh points to /usr/bin/bash.

This can be checked by running this command:

$ ls -l /usr/bin/sh

If the output looks like this:

lrwxrwxrwx 1 root root 15 13 Mar 06:47 /usr/bin/sh -> bash

then /usr/bin/sh already points to /usr/bin/bash (the default in Arch Linux).

If not, run the following commands as root:

$ rm /usr/bin/sh
$ ln -s bash /usr/bin/sh

Installation

Note: The installation is last known to work with Xilinx ISE 14.6, requiring the dynamic library fix described below.

The ISE Design Tools can be downloaded from the official download page. It requires registration and licensing agreement, but there is no charge, i.e. it's free as in "free beer", but not free as in "free speech".

Once the tarballs has been downloaded, unpack it:

$ tar -xvf Xilinx_ISE_DS_14.6_P.68d_3.tar

The ISE design tools installer is a Qt application. If you are running the KDE desktop environment, the installer may try to load the "Oxygen" widget theme, which will fail due to the older Qt framework bundled with the Xilinx ISE design tools. You need to remove the QT_PLUGIN_PATH environment variable before executing the installer:

$ unset QT_PLUGIN_PATH

Then, install the ISE Design Tools:

$ cd Xilinx_ISE_DS_14.6_P.68d_3
$ ./xsetup

Follow the instructions to install the ISE. By default, the whole application is installed to /opt/Xilinx/, so make sure the user running the installer has permissions to write to this directory.

During installation, uncheck the "Install Cable Drivers" option. Leaving it checked will cause errors during the installation.

Launching the ISE design tools

The ISE design tools include a shell script that modifies the environment variables (mostly PATH and LD_LIBRARY_PATH). This script must be sourced before starting the ISE tools:

$ source /opt/Xilinx/14.6/ISE_DS/settings64.sh

or, for a 32-bit installation:

$ source /opt/Xilinx/14.6/ISE_DS/settings32.sh

Then, the ISE design tools will be found in your PATH and can be started by typing their name in the terminal (e.g. ise, planAhead, xsdk, ...)

License Installation

After requesting a WebPACK license from Xilinx using their Licensing Site, you will be e-mailed a license file. This file can be imported with the Xilinx License Manager (run xlcm -manage from the terminal).

Another way to import the license is to simply copy it to the ~/.Xilinx directory.

Node-Locked Licenses

Arch Linux by default uses systemd's Predictable Network Interface Names. This means that your system will most likely not have its network interfaces named "eth0", "eth1" and so forth.

However, the Xilinx License Manager looks for these names to find out the system's MAC addresses, which are used for node-locked licenses. If you require node-locked licenses, you might have to disable this feature to re-gain the kernel naming scheme for network interfaces. The systemd wiki describes how to do this.

Post-Installation Fixes and Tweaks

After installation, a few manual fixes are required to work around problems caused by running the Xilinx tools on a Linux distribution that is not officially supported by Xilinx. Some of these fixes are taken from this forum post.

Dynamic Library Fix (libstdc++.so)

The ISE tools supply an outdated version of the libstdc++.so library, which may cause segfaults when using the Xilinx Microprocessor Debugger and prevents the usage of the oxygen-gtk theme. This outdated version is located in two directories within the installation tree: /opt/Xilinx/14.6/ISE_DS/ISE/lib/lin64/ and /opt/Xilinx/14.6/ISE_DS/common/lib/lin64. To use Arch's newer version of libstdc++, rename or delete the original files and replace them with symlinks:

GNU make

XSDK looks for the gmake executable, which is not present in Arch Linux by default. Create a symlink somewhere in your path, e.g.

$ ln -s /usr/bin/make /home/<user>/bin/gmake

Make sure this directory is in your PATH variable.

Running Xilinx tools from within KDE

KDE by default defines the QT_PLUGIN_PATH shell variable. Some of the Xilinx ISE tools (ISE, Impact, XPS) are Qt applications, which means that they will search for Qt plugins in the locations defined by this shell variable.

Because the Xilinx tools are compiled against and ship with an older version of the Qt framework which cannot use these plugins, they will crash when launched with this environment variable present.

To fix this issue, run the following command before launching the tools: