Intermittent problems can occur if multiple Virtex/-E or Spartan-II/-E devices are in a serial daisy chain with multiple Virtex-II or later devices in the front of the chain. When this problem occurs, the DONE pin will not go high. A verify on the Virtex-II or later devices should allow the DONE pins to be released and the chain to function as normal.
This problem is due to a known issue with the Virtex/-E and Spartan-II/-E silicon. These devices can pull the INIT line Low after the devices comes out of the LOUT instruction and DONE has been released but held Low on the board. When this occurs, the INIT line, connected to the OE/RESET line of the PROM, will reset the PROM and the first devices in the chain will not see their START or DESYNC commands. At this point, the data for the Virtex/-E or Spartan-II/-E devices has been fully loaded and the devices are waiting for DONE to go High to proceed in the start-up sequence.
There are 3 different ways this issue can be resolved:
1. Disconnect the DONE lines from the different families in the chain. This will allow the Virtex/-E and Spartan-II/-E devices to come up first and be operational. These devices will be functioning before the subsequent devices in the chain are, and this will need to be accommodated for at a system level. When the DONE line is not tied together across all of the devices the device never pulls the INIT line Low causing the PROM to be reset.
2. Disconnect the INIT lines from the different families in the chain. This will stop the Virtex/-E or Spartan-II/-E behavior of pulling the INIT line Low from affecting the PROM, and the full ".mcs" file will be played to the daisy chain. In this scenario, all of the devices will start up at the same time. The configuration from the PROM will not be stopped if a CRC error occurs, but the CRC error will stop GHIGH from being released and the device will not turn on. If a CRC error occurs, the devices will not be affected by this work-around.
3. If the DONE and INIT lines cannot be removed, a fix can be implemented from a file structure stand point. This work-around is two-fold.
The first part of the work-around is to adjust the BitGen settings for the devices upstream of the Virtex/-E or Spartan-II/-E devices. This is done by selecting the Properties for the Generate Programming File process in ISE. Select the Startup Options and change Enable Outputs and Release Write Enable to the DONE state.
Next, the SHUTDOWN command needs to be removed from the ".mcs" file. To do this, first generate a hex file via PROMGen to target the chain with the desired design files. Next search for the string containing the SHUTDOWN command (5599AA660C0001800000000D) and replace this command with the following string containing a NOOP (5599AA660C00018000000000). After this change has been made to the hex files, use PROMGen to generate an ".mcs" file with the following options: -p mcs -r input.hex.
If further assistance is required with this, please contact Xilinx Technical Support: