Question

I'm using Xilinx ISE suite to design, test and program the Cmod S6 board.
At this point I am able to configure the Spartan6 FPGA with a bit file over
the USB connection (although I have not verified functionality), but I'm
having a problem programming the serial PROM. Here is the report I get from
the iMPACT tool:

INFO:iMPACT - Current time: 5 Jul 2018 14:00:55
// *** BATCH CMD : Program -p 1 -dataWidth 1 -spionly -e -v -loadfpga
PROGRESS_START - Starting Operation.
Maximum TCK operating frequency for this device chain: 25000000.
Validating chain...
Boundary-scan chain validated successfully.
'1': IDCODE is 'ffffff' (in hex).
'1': ID Check failed.
INFO:iMPACT:2488 - The operation did not complete successfully.
INFO:iMPACT - SPI Device not found.
INFO:iMPACT:2488 - The operation did not complete successfully.
INFO:iMPACT - '1': Flash was not programmed successfully.
PROGRESS_END - End Operation.
Elapsed time =      4 sec.

It seems to fail the ID Check, whatever that is. When I selected the PROM device,
I chose S25FL128S from the available list. I think that is the correct one.

Also, if I try to erase the PROM or do anything else with it,  I get a similar error.

I tried following instructions posted on this forum, but nothing seems to work.

Share this post


Link to post
Share on other sites

11 answers to this question

Recommended Posts

  • 0

@Victor McKeighan

Welcome to the forums!  I've always programmed my own CMod S6 using the Digilent Adept utilities.

If you look at my own Spartan S6 project, you can find the scripts I use for this purpose in the master make file.  One make target, "xload" loads the Xilinx configuration for my project into the chip (not necessarily the ROM).

Alternatively, if you are interested in programming the flash, there's another design program there that I run using "make axload".  This loads a configuration onto the device, one with full read/erase/program to the flash, that I can then program using the zipload program found in the sw/host directory.

I'm sure the Digilent staff will join this conversation shortly and tell you how to use their tools, but consider this .... the ones cited above are open source (except for Digilent's Adept).  ;)

Dan

Share this post


Link to post
Share on other sites
  • 0
Posted (edited)

Dan, thanks for responding. Yes indeed I want to program the Quad SPI memory so the Spartan6 can configure itself on power up. I did download the latest Adept for Windows. Like iMPACT, it allows me to configure the FPGA, but does not do anything for the PROM.

I'm beginning to see a little clearer about the SPI PROM - On the CMod S6 it is not connected to JTAG, but only to the FPGA - so the FPGA has to be configured to talk to the microprocessor on JTAG and then program the SPI PROM. iMPACT is supposed to do this, but it's not working. It might be done through Adept, but apparently it's not a built in function and I'm not a software guru.

One thing to note - when I first tried it using iMPACT, it did not fail immediately, but just got hung up at 0% for several minutes. I hit ABORT because I figured it was hung up. Could I have inadvertently hosed up the SPI memory? iMPACT cannot recognize the PROM anymore, it fails ID Check.

Also, the demo design does not seem to be working.

I hope someone on the Digilent staff can chime in and provide some help.

 

Edited by Victor McKeighan

Share this post


Link to post
Share on other sites
  • 0
Posted (edited)

As mentioned by Dan, you can also use Adept application to accomplish this task.

The other option is to use Xilinx tools. 

Adept has the advantage of being able to use the bit file, while Xilinx tools (iMPACT) requires the step of creating the mcs file. Still, our advice is to try to use the iMPACT, as this is the recomended Xilinx way. So please try to use the tutorial that Bogdan just sent.

Edited by Cristian.Fatu

Share this post


Link to post
Share on other sites
  • 0

Hi Bogdan and Christian,

Thanks for your attention and the very detailed instructions for iMPACT. I did follow the instructions,
but I'm having the same problem. Everything went exactly as shown in the document, but when I initiated
programming I got the 'Program Failed' message -

The transcript from the Console window is shown below. It seems to indicate that the SPI access core was
configured, but then an 'ID Check' failed, and the SPI memory was not found.

Additional note: I am able to configure the Spartan 6 with my own project and have verified functionality
(it only uses a few pins however). Also, the demo design that is supposed to be loaded in the SPI memory
never worked, all four green LEDs lit, no flashing.

Is it possible the SPI memory got in a state where it cannot be recovered? I would not think this would be
the case.

At this point I'm leaning toward the possibility that the board is defective in some way, possibly a bad
serial device, or board assembly defect.

Please let me know your thoughts.

GUI --- Auto connect to cable...
INFO:iMPACT - Digilent Plugin: Plugin Version: 2.5.2
INFO:iMPACT - Digilent Plugin: found 1 device(s).
INFO:iMPACT - Digilent Plugin: opening device: "CmodS6", SN:210282A5AE32
INFO:iMPACT - Digilent Plugin: User Name: CmodS6
INFO:iMPACT - Digilent Plugin: Product Name: Digilent CmodS6
INFO:iMPACT - Digilent Plugin: Serial Number: 210282A5AE32
INFO:iMPACT - Digilent Plugin: Product ID: 0140012F
INFO:iMPACT - Digilent Plugin: Firmware Version: 011D
INFO:iMPACT - Digilent Plugin: JTAG Port Number: 0
INFO:iMPACT - Digilent Plugin: JTAG Clock Frequency: 4000000 Hz
GUI --- Auto connect to cable...
INFO:iMPACT - Digilent Plugin: Plugin Version: 2.5.2
INFO:iMPACT - Digilent Plugin: found 1 device(s).
INFO:iMPACT - Digilent Plugin: opening device: "CmodS6", SN:210282A5AE32
INFO:iMPACT - Digilent Plugin: User Name: CmodS6
INFO:iMPACT - Digilent Plugin: Product Name: Digilent CmodS6
INFO:iMPACT - Digilent Plugin: Serial Number: 210282A5AE32
INFO:iMPACT - Digilent Plugin: Product ID: 0140012F
INFO:iMPACT - Digilent Plugin: Firmware Version: 011D
INFO:iMPACT - Digilent Plugin: JTAG Port Number: 0
INFO:iMPACT - Digilent Plugin: JTAG Clock Frequency: 4000000 Hz
Attempting to identify devices in the boundary-scan chain configuration...
INFO:iMPACT - Current time: 7/5/18 5:57 PM
PROGRESS_START - Starting Operation.
Identifying chain contents...'0': : Manufacturer's ID = Xilinx xc6slx4, Version : 2
INFO:iMPACT:1777 -
Reading /opt/Xilinx/14.7/ISE_DS/ISE/spartan6/data/xc6slx4.bsd...
INFO:iMPACT:501 - '1': Added Device xc6slx4 successfully.
----------------------------------------------------------------------
----------------------------------------------------------------------
done.
PROGRESS_END - End Operation.
Elapsed time =      0 sec.
Override chain at index 0.
Overriding chain at index 0.
'1': Added Device 2M successfully.
----------------------------------------------------------------------
Override chain at index 0.
Overriding chain at index 0.
Override chain at index 0.
Overriding chain at index 0.

------------------------  GUI: Wizard Data Report  ---------------------------
      Compression : false
      Fill Value : FF
      Output Format : mcs
      Swap Bits : false
      LoadDirection : UP
      PROM Basename : Serial_Mon
      File Location : /home/ise/Xilinx/SerialMonitor/
      Auto Select : false
      Number of Revisions : 1
      Number of PROMs : 1
      PROM Name : 2M   PROM Size : 2097152 bits
-------------------------- END of Report ----------------------------
'1': Loading file '/home/ise/Xilinx/SerialMonitor/Top_Level.bit' ...
INFO:iMPACT - Elapsed time =      0 sec.
done.
INFO:iMPACT:501 - '1': Added Device xc6slx4 successfully.
----------------------------------------------------------------------
----------------------------------------------------------------------
Add one device.5341dINFO:iMPACT - Current time: 7/5/18 6:03 PM
Total configuration bit size = 2727616  bits.
Total configuration byte size = 340952 bytes.
0x533d8 (340952) bytes loaded up from 0x0
Using user-specified prom size of 2048K
Writing file "/home/ise/Xilinx/SerialMonitor/Serial_Mon.mcs".
Writing file "/home/ise/Xilinx/SerialMonitor/Serial_Mon.prm".
Writing file "/home/ise/Xilinx/SerialMonitor/Serial_Mon.cfi".
INFO:iMPACT - One or more bitstream may have the data width set to a value other than '1',
if the targeted device is not designed for the specified data width,
the generated PROM file will not work properly.
Selected part: S25FL128S
Unprotect sectors: FALSE
INFO:iMPACT - Current time: 7/5/18 6:06 PM
PROGRESS_START - Starting Operation.
Maximum TCK operating frequency for this device chain: 25000000.
Validating chain...
Boundary-scan chain validated successfully.
'1': SPI access core not detected. SPI access core will be downloaded to the device to enable operations.
INFO:iMPACT - Downloading core file /opt/Xilinx/14.7/ISE_DS/ISE/spartan6/data/xc6slx4_spi.cor.
'1': Downloading core...
 LCK_cycle = NoWait.
LCK cycle: NoWait
done.
'1': Reading status register contents...
INFO:iMPACT:2219 - Status register values:
INFO:iMPACT - 0011 1100 1110 1100
INFO:iMPACT:2492 - '1': Completed downloading core to device.
'1': IDCODE is 'ffffff' (in hex).
'1': ID Check failed.
INFO:iMPACT:2488 - The operation did not complete successfully.
INFO:iMPACT - SPI Device not found.
INFO:iMPACT:2488 - The operation did not complete successfully.
INFO:iMPACT - '1': Flash was not programmed successfully.
PROGRESS_END - End Operation.
Elapsed time =     11 sec.

Program_Failed.PNG

Share this post


Link to post
Share on other sites
  • 0
Posted (edited)

@Victor McKeighan

I'm truly sorry for you. In this moment I'm suspecting an hardware issue. In order to be absolutely sure of that, please send me your Impact project, and also the bit file and MCS file. Thank you.

Best Regards,

Bogdan Vanca

Edited by BogdanVanca

Share this post


Link to post
Share on other sites
  • 0

I have an update -

A new Cmod S6 (ordered directly from Digilent ) was received today. I verified the demo was working when power was applied.

I followed the instructions given by Bogdan to program the serial PROM using iMPACT. Everything went correctly, except the time it took to program the device was almost a full hour! The progress bar on the screen indicated 0% for about 20 minutes, then went to 1%. Got to 3% after about 50 minutes. Then the 'Program Successful' message was displayed. I verified the design was working.

I chose to verify the programming (with iMPACT) - This also took a very long time, about 25 minutes.

Question: Why are these operations taking so long? I do have Adept installed, but there is no built in  support for programming the serial device. I think there is a way with Adept, but I don't want to have to compile open source code and create make files in order to do this (unless the steps can be made clear). I'm not a software guru. Is there a documented way using Adept? I'm willing to try almost anything.

In the meantime, I'm returning the first Cmod S6 (to Digikey) for a refund. It's serial PROM can no longer be detected by either iMPACT or Adept.

Share this post


Link to post
Share on other sites
  • 0
Posted (edited)

Hello @Victor McKeighan,

Sorry for my late response. Thank you for the files. I succeed to program the flash memory using your files and the elapsed time was 157 sec. I also verify it and the elapsed time in this case was 70 sec.  What I would have to add in here is that I'm using Windows 10. Impact is not compatible with this windows version and I had to use this workaround :http://www.eevblog.com/forum/microcontrollers/guide-getting-xilinx-ise-to-work-with-windows-8-64-bit/ in order to actually make it work. If you are also using windows 10 please fallow the steps from there. Even if your project uses all the fpga resources, the programming shouldn't take that much. Please try another USB cable, or reinstall ISE and Impact.

Best Regards,

Bogdan Vanca   

Edited by BogdanVanca

Share this post


Link to post
Share on other sites
  • 0

Bogdan,

Thanks for the reply. It's good to know you got it working there with very reasonable programming and verify speed. I am using Windows 10, but I have the version of ISE (14.7) that runs under Oracle VM VirtualBox. The workaround you pointed to seems to apply to some earlier Windows version that does not need the VM. The file and folder names mentioned there do not exist in my installation.

Also - the issues and problems described in the workaround are not at all what I'm seeing. Everything works properly, no problem opening files, it just takes a very long time to program the PROM.

There was a similar posting on this same issue about a month ago. In that case it took about 20 minutes to program the design, not as long as mine, but I think it is the same problem. Please see the posting here -

https://forum.digilentinc.com/topic/13873-cmod-s6-need-a-guide-to-program-cmod-s6-spi-flash/?page=0#comment-35651

Regards,

Victor

Share this post


Link to post
Share on other sites
  • 0

@Victor McKeighan

Because I couldn't replicate your issue, the only logical explanation would be that VB affects somehow the JTAG programming speed. On Xilinx forum, it seems that there are other guys who faced similar issues. Please check the fallowing link : https://forums.xilinx.com/t5/Design-Tools-Others/Impact-TCK-frequency-to-low/td-p/128180. You can also look into your log file and see if TCK suffers some modifications.

Best Regards,

Bogdan Vanca

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now