Can all registered uses please login, even just for a few minutes..
It helps build a picture where our "good traffic" is coming from..
Thanks :)

Ditching iMPACT: a short tale of a long evening

Blogs & guides and tales of woo by forum members.
Post Reply
User avatar
exxos
Site Admin
Site Admin
Posts: 29622
Joined: Wed Aug 16, 2017 11:19 pm
Location: UK
Contact:

Ditching iMPACT: a short tale of a long evening

Post by exxos »

I wanted an alternative to Xilinx iMPACT for programming the XC95288XL that works on both Windows and Linux. Simple enough job, I thought. Famous last words.

Round 1: Windows 7 laptop
The obvious candidate is openFPGALoader, which is open source, actively developed and already supports the XC9500XL family. The catch is that the normal Windows builds no longer run on Windows 7, so I cross-compiled a static Win7 build on the server. That bit actually worked first time, which should have been my warning.

Then came the cable. My Xilinx Platform Cable USB is the older DLC9 type (USB ID 03FD:0007). openFPGALoader only officially knows the newer DLC10 type, so that needed patching in. You also have to swap the driver over to WinUSB with Zadig, which I'd fought with years ago and had happily forgotten about.

Result: the firmware loaded into the cable, then nothing. The cable is supposed to restart and come back as 03FD:0008 once its firmware is loaded, and mine just sat there looking at me.

Somewhere along the way Chrome decided it needed most of the laptop's RAM as well, so the laptop is now getting a memory upgrade. Not quite the hardware purchase I had in mind when I started this.

Round 2: MX Linux
Same again on Linux, using both openFPGALoader and fxload (the standard tool for loading these Cypress USB chips). The firmware loads fine, the CPU resets, and the cable still won't budge from 0007. So it wasn't openFPGALoader's fault, and it wasn't a Windows thing either.

Round 3: going through Xilinx's bins
I dug the driver files out of Windows. The INF showed the Xilinx driver for this cable (xusbdfwu.sys) doesn't use the xusbdfwu.hex file from ISE at all. It has its own firmware built inside it, and that turned out to be a different build. Once that was extracted and loaded with fxload, the cable finally came up as 0008. First proper progress of the night.

It still couldn't talk JTAG though. The iMPACT log on my Windows PC explained why: it's a two-stage load. The driver loads its own firmware (version 1027), then iMPACT loads xusbdfwu.hex (version 1100) on top. Only then does the cable's internal CPLD wake up and report a version (0012h). Nobody mentions that anywhere, of course.

Round 4: the breakthrough
I let Claude Code loose on the Linux PC with the cable plugged in, which saved me a lot of copy and pasting. It found that the ISE firmware does run when loaded straight onto the blank 0007 cable. It just never does the "restart as 0008" bit. If you carry on talking to it as 0007 and switch to the cable's second interface setting, the JTAG side works.

The result, read back from my board:

Code: Select all

IDCODE 0x59616093  Xilinx XC95288XL, version 5
That's exactly what iMPACT reports, so the old cable now works on Linux.

Where it's at now
  • Chain detection works on Linux with the old DLC9 cable.
  • I've got a simple Linux GUI on the go (cable, JED file, Detect, Program, Verify, and a log you can actually copy from). It also has a Find cable button that hunts for the cable and picks the right firmware file for you.
  • Next step is a fixed, patched copy of openFPGALoader bundled in the installer, so future updates can't break it.
  • Programming hasn't been tested yet. I'm not letting anything near my CPLDs until detect is rock solid.
If you're buying one of these cables for this, go for a DLC10 / "Platform Cable USB II" (USB ID 03FD:0013). That's the one openFPGALoader supports out of the box. Or get a Digilent JTAG-HS2 and skip the firmware palaver altogether. Only the DLC10 is 3x the cost !

All this to replace one bit of software that already worked. Still, it's cheaper than therapy, apart from the RAM.
Post Reply

Return to “MEMBER BLOGS”