Xilinx ISE Design Suite Linux Installation Tips

USB Drivers

Legacy versions of ISE used a proprietary kernel module called "Windriver" (windrvr6) to communicate with Xilinx programming cables. Newer releases contain a libusb-based driver that eliminates the need for building any kernel drivers. iMPACT will use this driver automatically as of version 14, but will still complain a runtime about the missing kernel module, as well as the parallel port module if that doesn't exist.

For Digilent cables, the Adept runtime, FTDI D2XX driver, and cable plugin installers are available in ISE_DS/common/bin/lin64/digilent. Run the install_digilent.sh script as root. However, this will install the cable plugin into $HOME/.cse, which is probably not the use you want to run iMPACT as, so it needs to be copied. As soon as iMPACT loads the Digilent library at runtime, it will crash. Solve this by LD_PRELOADing libdpcomm.so.2. Do not preload it for any other processes as it may hold a lock file as soon as it starts, preventing iMPACT from using the cable.

If other FTDI devices such as a standard serial converter are connected, the cable driver will segfault if it tries to open that device before the programming cable. The backtrace suggests it's a bug in FTDI's code.

Running ISE components

To run any of the Xilinx applications, first source the settings32.sh or settings64.sh script. The following wrapper script will handle this and run the program named as the first argument, and set LD_PRELOAD if running impact.
#!/bin/sh

# paths
XILINX_HOME="/opt/Xilinx/14.1/ISE_DS"
OS="lin64"
SETTINGS="settings64.sh"
DIGILENT_LIB="/usr/local/lib64/digilent/adept/libdpcomm.so.2"

# read the xilinx settings script
source "$XILINX_HOME/$SETTINGS" $XILINX_HOME

if [[ "x$XILINX" = "x" ]]; then
    echo "Settings script did not run!"
fi

APP=$1

echo "Starting Xilinx application $APP"

# impact needs to preload digilent cable library
if [[ $APP = "impact" ]]; then
    echo "Preloading Digilent communications library"
    export LD_PRELOAD=$DIGILENT_LIB
fi

echo "path is now $PATH"

# run the command
exec "$@"

-- StephenCavilia - 25 May 2012
Topic revision: r1 - 25 May 2012, StephenCavilia
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding CodenamePending? Send feedback