UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Visitor dfjulien
Visitor
104 Views
Registered: ‎01-08-2019

iMPACT "Cable connection failed."

Jump to solution

 

 

Summary

I am using iMPACT with the old ISE IDE. I know this is old software, however it's unfortunately required as the particular FPGA dev board we are using does not work with Vivado. After getting through the installation and licensing process, I found I was unable to upload any bit files to the FPGA.

To be more specific I am currently using Ubuntu 17.10, with iMPACT 14.7 (64-bit). I am connecting to an Opal Kelly XEM6010 dev board which runs a XC6SLX150-2FGG484 Spartan-6 FPGA.

There have been many forum posts with the similar issues as my own that I have found. In this post I go through my setup and run process using tricks I found in these other forum posts, however the device still isn't found. The main difference between my set up and others is that others are using some standard Xilinx programmers, while I am using the on board programmer that came from the vendor. 


 

Initial Setup

We are specifically using this setup to interface with a NIST digital servo box, so I was following the setup steps in their documentation with some modifications. To set up my environment, I followed this process:
1. Downloaded and install the Xilinx ISE Design Suite.

2. Generated a license from the official Xilinx website. 

3. Installed the Opal Kelly software by downloading and running the install script. This created a .rules folder in /etc/udev/rules.d, puts a special driver in /usr/local/lib/ for connecting FPGA firmware with PC software (unused for uploading firmware), and copies a tree of bit files and wav files to /usr/local/share/.


Then I followed some extra steps that I heard online would help fix the issues I'm facing outlined here:
1. Installed the "fxload" and "libusb-1.0-0" and "libusb-1.0-0-dev" packages.

2. Copied all the hex files from ISE_DS/ISE/bin/lin64 to /usr/share (I believe this is only required for different types of programming methods but I did this anyway).

3. Created a symbolic link to the libusb driver as outlined on the site I linked to. Note that I believe the usblib driver is being found fine as later console output shows that it's found by iMPACT.

4. Rebooted.

Note that I skipped the page's step 4 because I am using a different .rules file as my programmer is abnormal. I share this .rules file later down.



Attempted Upload Steps

To start up up iMPACT I go through the following process:
1. Set environment variable XIL_IMPACT_USE_LIBUSB=1 and LD_PRELOAD to /usr/lib/x86_64-linux-gnu/libusb.so, the latter of which is a symbolic link to /usr/lib/x86_64-linux-gnu/libusb-1.0.so, which is libusb driver. I can tell this step is at least doing what I think it is as both of these appear in my list of environment variables when I printenv in bash. 

2. next I run exec /home/julien/opt/14.7/ISE_DS/ISE/bin/lin64/ise as superuser to start up the ISE. Note superuser just in case.

3. From here I go Tools->iMPACT and create a new project. I click Boundary Scan then right click the Click to Add Device... message box, select Add Xilinx Device and add my earlier compiled .bit file. Finally, I click on IC icon that appears, click Program, and then the warnings and failures hit.


 

Failiure Output

Here is a dump of the console output of iMPACT from top to bottom (note my install folder is /home/julien/opt/14.7/):

'1': Loading file '/home/julien/Documents/work/servo_clone_4/digital-servo-master/firmware/SuperLaserLand.bit' ...
done.
INFO:iMPACT:1777 - 
Reading /home/julien/opt/14.7/ISE_DS/ISE/spartan6/data/xc6slx150.bsd...
INFO:iMPACT:2257 - Startup Clock has been changed to 'JtagClk' in the bitstream stored in memory,
but the original bitstream file remains unchanged.
UserID read from the bitstream file = 0xFFFFFFFF.
Data width read from the bitstream file = 1.
INFO:iMPACT:501 - '1': Added Device xc6slx150 successfully.
----------------------------------------------------------------------
----------------------------------------------------------------------
GUI --- Auto connect to cable...
AutoDetecting cable. Please wait.
*** WARNING ***: When port is set to auto detect mode, cable speed is set to default 6 MHz regardless of explicit arguments supplied for setting the baud rates
PROGRESS_START - Starting Operation.
Connecting to cable (Usb Port - USB21).
Checking cable driver.
File version of /home/julien/opt/14.7/ISE_DS/ISE/bin/lin64/xusbdfwu.hex = 1030.
File version of /etc/hotplug/usb/xusbdfwu.fw/xusbdfwu.hex = 1030.
 Using libusb.
 Kernel release = 4.13.0-32-generic.
Cable connection failed.
Connecting to cable (Parallel Port - parport0).

It's at this time that it seems to decide it can't connect to the USB using libusb and gives up and tries the parallel ports. I don't think this next portion is super useful but just for completeness I included it.

Linux release = 4.13.0-32-generic.
WARNING:iMPACT -  Module windrvr6 is not loaded. Please reinstall the cable drivers. See Answer Record 22648.
Cable connection failed.
Connecting to cable (Parallel Port - parport1).
 Linux release = 4.13.0-32-generic.
WARNING:iMPACT -  Module windrvr6 is not loaded. Please reinstall the cable drivers. See Answer Record 22648.
Cable connection failed.
Connecting to cable (Parallel Port - parport2).
 Linux release = 4.13.0-32-generic.
WARNING:iMPACT -  Module windrvr6 is not loaded. Please reinstall the cable drivers. See Answer Record 22648.
Cable connection failed.
Connecting to cable (Parallel Port - parport3).
 Linux release = 4.13.0-32-generic.
WARNING:iMPACT -  Module windrvr6 is not loaded. Please reinstall the cable drivers. See Answer Record 22648.
Cable connection failed.
PROGRESS_END - End Operation.
Elapsed time =      1 sec.
Cable autodetection failed.
WARNING:iMPACT:923 - Can not find cable, check cable setup



Other Useful Output

Some notable command outputs run directly after starting and closing ISE and iMPACT (with USB still connected):

$> lsusb
Bus 001 Device 002: ID 8087:8001 Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 002: ID 8087:07dc Intel Corp. 
Bus 002 Device 022: ID 151f:002e  
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Note that the "USB21" from the iMPACT console output doesn't quite match with USB device number here. I'm not sure if this means anything. Also note that the "151f" ID matches the ID given in the .rules file by the vendor:

 

$> tail /etc/udev/rules.d/60-opalkelly.rules 
# This file allows udev to change the mode to 666 (all read/write)
# for any Opal Kelly VID.
#

# For FedoraCore 5 and similar:
SUBSYSTEM=="usb_device", SYSFS{idVendor}=="151f", MODE="0666"

# For FedoraCore 7 and similar:
SUBSYSTEM=="usb", ATTRS{idVendor}=="151f", MODE="0666"

 

Lastly,

$> ls /dev/*USB*
ls: cannot access '/dev/*USB*': No such file or directory

So there's no USB devices under /dev/.

 

If there are any other commands I could run or information I could give to help figure this out, please let me know.



0 Kudos
1 Solution

Accepted Solutions
Visitor dfjulien
Visitor
21 Views
Registered: ‎01-08-2019

Re: iMPACT "Cable connection failed."

Jump to solution

I figured out my issue (however it's sadly very specific to my setup): as it turns out Opal Kelly (the XEM6010 board's vendor), has their own custom tools for programming the device. This can be read about in their generic "getting started" guide for all their FPGAs. Note that one thing they don't mention in "getting started" is that most boards (including the XEM6010) have a hardware switch on them you must throw in order to program them over USB. 

As stfarley suggested, I did end up actually using a Windows 7 machine, however iMPACT of course still didn't work on it with the same error, which is what made me realize this was more than just a driver issue. I'm still currently using the windows machine with Opal Kelly's Front Panel software as the programmer, but I may experiment with other (potentially easier) setups such as getting the Front Panel software on Linux (which should be doable). I will update this thread if I manage to get something better to work.


0 Kudos
2 Replies
Visitor stfarley
Visitor
28 Views
Registered: ‎05-09-2018

Re: iMPACT "Cable connection failed."

Jump to solution

Sounds much like the issue that I was seeing. In the end I took a Windows 7 Laptop and loaded the ISE lab tools on it. You can then connect the cable to it and launch the cable server on it. From linux just use a remote cable connection. Perhaps not the solution you are looking for, but it does work.

0 Kudos
Visitor dfjulien
Visitor
22 Views
Registered: ‎01-08-2019

Re: iMPACT "Cable connection failed."

Jump to solution

I figured out my issue (however it's sadly very specific to my setup): as it turns out Opal Kelly (the XEM6010 board's vendor), has their own custom tools for programming the device. This can be read about in their generic "getting started" guide for all their FPGAs. Note that one thing they don't mention in "getting started" is that most boards (including the XEM6010) have a hardware switch on them you must throw in order to program them over USB. 

As stfarley suggested, I did end up actually using a Windows 7 machine, however iMPACT of course still didn't work on it with the same error, which is what made me realize this was more than just a driver issue. I'm still currently using the windows machine with Opal Kelly's Front Panel software as the programmer, but I may experiment with other (potentially easier) setups such as getting the Front Panel software on Linux (which should be doable). I will update this thread if I manage to get something better to work.


0 Kudos