Is it possible to load a Virtex device with a bitstream that is targeted to another Virtex device? Will the device configure?
If a Virtex device is configured with another Virtex device of a different size, it is possible for the device to configure and for the DONE pin to go High.
One of the advantages to the Virtex configuration logic from an IC design and production standpoint is that it is essentially modular. The processor-like interface is very flexible; however, this flexibility can mean that the chances of inadvertent failure are increased.
As you are essentially telling the device what it is (by writing to the Frame Length Register (FLR)), you can "trick" a device into perceiving that it is something else. For example, suppose you are using a V150, and you try to load a V300 bitstream. Near the beginning of the configuration, you write into the FLR to tell the V150 that its frame length is that of a V300 -- this will be accepted. In addition, frames of that length will be accepted into the FDRI (Frame Data Register Input).
A Virtex device will not signal that it is being improperly targeted. If a V150 bitstream is loaded into a V300, certain configuration registers will never be loaded, and part of the device will probably be in a high-contend state when it starts up. If a V300 is loaded into the V150, it will overrun the device and not use some of the data. As the number of frames is different, the device will probably have some routing (or other) contention when it starts up. This will probably cause damage to the device, as a result of high current draw.
If it is unclear which device is being targeted, check the JTAG IDCODE to ensure that the proper bitstream is being loaded.
This condition can occur on Virtex, Virtex-E, Spartan-II, and Spartan-IIE device families.
This condition will not occur for Virtex-II, Virtex-II Pro, Spartan-3 or XC4000-series devices. The Virtex-II, Virtex-II Pro and Spartan-3 families have a specific ID code implemented that is checked upon configuration. XC4000 configuration streams have CRC embedded at specific points, and an improperly targeted bitstream would cause a CRC error. The Virtex/-E CRC is calculated based on the data passing into the device, not the data that is actually in the frames. Because of this, incorrect frame data can be loaded, and the CRC check can still pass.