When I attempt to reprogram certain devices via JTAG, the parts program successfully, but do not operate as expected, and "strange" behavior results. (The nature of the behavior is design-specific.)
This issue only affects the reprogramming of an already-configured part via JTAG. (This issue does not affect serial or SelectMAP programming or the programming of a blank part.)
The problem can affect Spartan-II/E and Virtex/E/II/II Pro devices.
This problem is fixed in the latest 5.1i Service Pack, available at:
The first service pack containing the fix is 5.1i Service Pack 2.
The problem occurs because the device has failed to reset correctly. Prior to 5.1i Service Pack 2, the only way to work around this problem was to toggle PROGRAM or power-cycle to clear the device, then program the blank part.