Xilinx ISE Design Suite Linux Installation Tips
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.
# read the xilinx settings script
source "$XILINX_HOME/$SETTINGS" $XILINX_HOME
if [[ "x$XILINX" = "x" ]]; then
echo "Settings script did not run!"
echo "Starting Xilinx application $APP"
# impact needs to preload digilent cable library
if [[ $APP = "impact" ]]; then
echo "Preloading Digilent communications library"
echo "path is now $PATH"
# run the command
- 25 May 2012