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!

AR# 30403

Spartan-3A Configuration - Platform Flash will not load the Spartan-3A device in Parallel Mode


The Spartan-3A device can be configured from the XCFxxP devices in SelectMAP mode. This configuration method uses the BPI mode pin setting for the Spartan-3A device.

When the PROM is loaded with an ".mcs" file from iMPACT, configuration fails, and the GHIGH bit in the Status Register reads out in iMPACT after a configuration attempt is 0.


The problem is that the Spartan-3A configuration interface will ignore the first 38 data bytes read into the device when in BPI mode. This is due to a timing limitation of BPI Flash devices where the first few bytes read out of the device are not valid data.

This design consideration for the BPI Flash devices causes a problem when loading from a Platform Flash where data is presented as soon as CCLK arrives at the PROM.

In this scenario, the configuration fails because the first 38 bytes read into the FPGA are not registered into the configuration logic and the device misses the sync word. At this point, the Spartan-3A device will not see the rest of the bitstream and configuration will fail.

The failure can be diagnosed in iMPACT by reading the Status Register of the FPGA after the configuration has been attempted. If this is the problem, the GHIGH bit in the FPGA will still be 0, as well as DONE, GTS, and GWE (components in the start up sequence).

To work around this problem, the PROM data file and ".mcs" file need to be padded with FFs to ensure the devices do not see the sync work until data inputs are being registered. There will need to be a minimum of 76 "F" characters added to the file.

To do this in the tools, change the ".mcs" file to a hex file, manually add 100 Fs to the beginning of the hex file, and translate this file back to the ".mcs" file format. 100 Fs can be added as extra padding.

Translation from MCS to HEX:

promgen -p hex -r input.mcs -o out.hex

Translation from HEX to MCS:

promgen -p mcs -r out.hex -o out_mod.mcs

AR# 30403
Date Created 02/27/2008
Last Updated 12/15/2012
Status Active
Type General Article