Xilinx ISE 14.7 - IMPACT is a disaster - Page 1
Forum section: electronics / general

author: SiliconWizard
author_rank: Super Contributor
timestamp: March 26, 2023, 02:20:57 am
content: I am using ISE 14.7 for a project using a Spartan 6 (not supported in Vivado), and using IMPACT to program the Flash memory (configuration memory). The Flash chip is connected via SPI to the FPGA but not directly accessible via JTAG. But IMPACT can deal with it.My problem is that IMPACT is a freaking disaster. While using it for configuring the FPGA works without hiccups, using it for programing the Flash is a nightmare.It keeps giving errors. If you select the wrong kind of Flash chip, it will keep giving errors and will render the IMPACT file unusable, so you have to start it all over again.If you select the right kind of Flash chip, it does work. While IMPACT is open. But save the IMPACT file and reopen it later, it gives the same type of error as above and renders the file unusable.So you have to redo it all over again - extremely frustrating.Having searched on the topic, it appears that it is a very common issue. It also appears that there is apparently no cure that works. If you run into that, you're screwed.Running ISE 14.7 on Win 7/64 btw. ISE itself has never given me any trouble. Only IMPACT.Xilinx have decided to burry ISE for good, not supporting it whatsoever anymore, leaving a bunch of bugs uncorrected. You're supposed to have trashed all your previous projects using the 6 series. Nice job, Xilinx!As I'm not holding my breath about anyone here having run into this and having solved it, does anyone know of any third-party tool that can program the Flash for a Spartan 6?I have used OpenOCD for this in the past (with another series of FPGA), and it worked.I tried with this board, and it fails. It doesn't recognize the Flash chip for some reason.(I know how to do it - using this:https://github.com/quartiq/bscan_spi_bitstreams- and have used it before on another board. But with this one, no luck. The Flash chip is a W25Q80.I also have Digilent Adept (with an HS2 adapter), it works fine for configuring the FPGA, but not for programming the Flash. This is a known limitation, they only support their own boards for Flash programming.So, does anyone know of another tool than OpenOCD that could do this? That would be helpful.

author: coromonadalix
author_rank: Super Contributor
timestamp: March 26, 2023, 02:40:48 am
content: some talk in the past ?https://support.xilinx.com/s/question/0D52E00006hpZkzSAE/spartan-6-spi-flash-programming-failed-with-strange-scenario?language=en_UShttps://support.xilinx.com/s/article/70681?language=en_UShttps://www.fpga-cores.com/software/fpga-programmer/

author: SiliconWizard
author_rank: Super Contributor
timestamp: March 26, 2023, 03:38:56 am
content: As I said, programming the Flash works in iMPACT, but it just can't re-open a previously saved file without giving an error or crashing. It's a pile of junk.So at the moment I have to re-configure iMPACT everytime I want to program the Flash.I have tried xc3sprog in the meantime - which supports the 6 series. But using the same .bit file as in :https://github.com/quartiq/bscan_spi_bitstreams, it also fails to recognize the Flash chip.Starting to wonder whether the files inhttps://github.com/quartiq/bscan_spi_bitstreamsall work. I have made it work before with a xc6slx45 but this one is a xc6slx16. Dunno.Haven't tried urtag though, something to try indeed.As to the last link you gave (https://www.fpga-cores.com/software/fpga-programmer/), it looks good if it actually works. But can this be trusted?

author: james_s
author_rank: Super Contributor
timestamp: March 26, 2023, 03:54:37 am
content: I've been using ISE 14.7 for years, it's a bit clunky but I haven't had the issues you're having. Programming the FPGA and flash works fine. Quartus is a bit more polished but ISE does have a better simulator IMO.

author: iMo
author_rank: Super Contributor
timestamp: March 26, 2023, 08:05:18 am
content: In past I used to use 14.7 a lot with spartan 6 + impact + jtag (the clone). Never seen that kind of issues (win7). I fired it up in this winter again and it even works with my virtex 6 ML605 as well.

author: nctnico
author_rank: Super Contributor
timestamp: March 26, 2023, 05:43:05 pm
content: I have experienced similar issues with Impact myself. Only fix is to re-do the configuration. If you have the chance, make sure to program an FPGA from a microcontroller over SPI. Way better compared to flash. Many years ago I have developed a JTAG programmer for Xilinx FPGAs. What a nightmare that was. I even managed to wreck a Xilinx FPGA.

author: SiliconWizard
author_rank: Super Contributor
timestamp: March 26, 2023, 06:54:01 pm
content: Quote from: nctnico on March 26, 2023, 05:43:05 pmNot surprised you encountered the same issue. It's a very common, and long-standing problem. Those that have never run into this probably had the stars aligned, or use iMPACT in a different way.A quick search shows numerous links, one of them that exactly shows the issue is this:https://support.xilinx.com/s/question/0D52E00006iI3p6SAC/cannot-launch-impact-from-ise-works-from-command-line?language=en_US8 years old, with a last post with the exact same problem dating 2021. With absolutely no solution or workaround, apart from redoing the configuration every time, as I also noted. Good lord.This above thread mentions the command line though - without details - so maybe there's a way of using the command line instead (which would be fine). I'll have to figure it out.As to using a MCU to configure the FPGA, that's another thing. Why not if you actually have some use for the MCU, but otherwise it just adds another layer of stuff. One benefit would be reduced configuration time though - while the Spartan 6 takes only a few tens of ms to get configured via JTAG, it takes over 1 s using a SPI flash. Crazy.But anyway, that's another story. I have to use an existing board here.Still haven't figured out why OpenOCD didn't work here. I had it work before, but that was with an older version of OpenOCD. Maybe they have changed things and the bscan files I am using are not up to date, but I can't find anything newer and it seems like OpenOCD still doesn't include these files, so I wouldn't know where else to find them. The link I gave was pretty much the "official" files.

author: nctnico
author_rank: Super Contributor
timestamp: March 26, 2023, 07:25:44 pm
content: From what I remember programming a Xilinx FPGA over JTAG from third party software isn't trivial. You have to give it the right init sequence which differs between FPGAs as well. So I'm not surprised OpenOCD isn't working. IMHO choosing JTAG to program FPGAs on a board is by far the worst design choice a co-worker of mine has ever made.Using IMPACT through a command line is likely the best option to follow. At least it will allow some automation. Maybe that is how IMPACT is supposed to be used.

author: SiliconWizard
author_rank: Super Contributor
timestamp: March 26, 2023, 08:15:08 pm
content: Quote from: nctnico on March 26, 2023, 07:25:44 pmUh, not really. Maybe you haven't quite understood what I said.Actually OpenOCD works absolutely fine accessing Xilinx FPGAs via JTAG. I can configure them with zero problem and it takes only a fraction of a second. Crazy fast. And it works.And configuring Xilinx FPGAs via JTAG is not *that* complicated.The part that I can't get to work (but have managed to in the past) is to program the Flash via the FPGA, which OpenOCDdefinitely does support. For that, it does just like iMPACT does, it first configures the FPGA with a specific configuration (in one of those bscan files) that implements programming the attached Flash chip, and then it uploads the Flash content via JTAG, the configured "runtime" does the actual programming. It works fine when it works, and I don't know why recent versions do not work, or maybe the Flash chip I have here is not supported, as they are not quite universal from a programming POV. The error I get is that it doesn't recognize the Flash chip and gives an ID of 0. Probably I should open a ticket for this on the OpenOCD project. I was just hoping to spend a little less time on this. But OTOH, if I can set up something that works both for the 6 and 7 series without having to use Xilinx tools, I'm all for it.

author: SiliconWizard
author_rank: Super Contributor
timestamp: March 27, 2023, 02:28:31 am
content: OK, I managed to use xc3sprog.For Windows, I downloaded the prebuilt binaries there:https://sourceforge.net/projects/xc3sprog/files/( build-win32_rev780_stripped.tar.gz )I'm using a Digilent HS2 interface here, but it supports a bunch of others.To just configure the FPGA with some .bit file:Code:xc3sprog.exe -L -c jtaghs2 <xxxx.bit>You can add the '-v' option for the verbose mode. It takes:QuoteNot bad.To program the attached SPI Flash with some .bit file (no need to create an intermediate .mcs file, contrary to iMPACT):1. First, you need to upload the programming 'runtime' (see the 'bscan_spi' subdirectory of the xc3sprog project):Code:xc3sprog.exe -L -c jtaghs2 xc6slx16_cs324.bitFor the xc6slx16, the prebuilt runtime is made for the cs324 package but it works fine with my package which is a ftg256, I guess the SPI pins map to the same pins from the config file POV.Once that's done, you program the Flash with your own .bit file with this:Code:xc3sprog.exe -L -v -c jtaghs2 -I <xxxx.bit>(the verbose option here will show the progression of the programming, otherwise it's silent until it's completed.)The '-L' option is for Windows only when you use a FTDI device, it bypasses the use of libusb. Otherwise the same should work on Linux.It also supports the Xilinx 7 series, although I haven't tried it yet. But there is no prebuilt "runtime" .bit file for the 7 series, so you'll have to build your own. Source code is provided in the 'bscan_spi' subdirectory, should not be hard to build using Vivado. Something I'll have to try one of these days.Finally, while the Sourceforge page seems to host the official project, this fork on github seems to be (slightly) more "up-to-date":https://github.com/matrix-io/xc3sprog

author: james_s
author_rank: Super Contributor
timestamp: March 27, 2023, 02:29:31 am
content: I don't know what I've been doing that is so special. I've used ISE 14.7 on Windows 7 with a clone Xilinx USB cable. I've programmed CPLDs, Spartan 3, Spartan 6 and Virtex 5 parts in various sizes, various flash chips, it's not the most intuitive interface but it has always worked.

author: pbernardi
author_rank: Contributor
timestamp: March 27, 2023, 02:42:19 am
content: I have not find most of the issues you posted. May be a different way to use the program, as you have pointed out.In fact, I miss the simplicity from Impact. You could just open Impact and program the device, without opening ISE. For Vivado, there isn´t this kind of option.QuoteISE 14.7 will not receive any updates, it is an EoL software without support. Xilinx clearly states this.About you issues, I wonder if this is not related to newer Windows versions.

author: asmi
author_rank: Super Contributor
timestamp: March 27, 2023, 02:42:28 pm
content: Have you tried it in Linux? I heard that ISE works better in there. I know that Vivado/Vitis do work better in Linux, which is why I moved my HW/FW development to Ubuntu.

author: SiliconWizard
author_rank: Super Contributor
timestamp: March 27, 2023, 06:51:25 pm
content: Quote from: asmi on March 27, 2023, 02:42:28 pmI've tried ISE in Linux a while back and it works fine, but it also works fine on my Win 7 workstation anyway. But I'm also in the process of moving almost everything to Linux.Haven't tried iMPACT on Linux yet though.Anyway, I'm pretty happy with xc3sprog in the end. It's ultra lightweight, it just works, it's fast, it's command-line so can be easily automated. I highly recommend it.And it runs both on Windows and Linux. So what's not to like.

author: hugo
author_rank: Regular Contributor
timestamp: May 25, 2024, 03:56:25 pm
content: QuoteI would like to program an old Xilinx CPLD (XCR3032XL), however I do not have a .bit file but rather an ipf/jed one.How would you use xc3sprog with such files? Can I use Xilinx platform cable usb II?Thank you

author: SiliconWizard
author_rank: Super Contributor
timestamp: May 26, 2024, 12:03:59 am
content: It doesn't seem to be explicitely supported, so I can't guarantee anything. But to program a .jed file to a CPLD with it, see there:https://anastas.io/hardware/2020/09/29/xc9500-cpld-raspberry-pi-xc3sprog.html(xc3sprog can take a .jed file too.) Something you can try.If it fails, I would suggest trying urjtag instead for this part:http://urjtag.org/book/UrJTAG.htmlwhich lists it as supported. But not sure what platform you use. If Linux, it'll be easy to find a package for, or compile urjtag. If Windows, that's possible but a mess. Unless you can find binaries.