In most systems the Spartan-3AN will auto-load when powered up. We have also seen the Spartan-3AN used as board level controllers which will control reset signals for other components on the board.
What can be done if a .bit file is loaded into the Spartan-3AN which does not manage the resets on the board properly and causes the JTAG chain to break when loaded?
If the image in the Spartan-3AN part is causing problems at a system level, a few things can be done.
1. Change the mode pins to JTAG, and then use iMPACT to erase the flash.
2. Create an SVF to Erase the Flash. Then, power cycle the board and, as soon as the power comes up, execute the SVF file. The JTAG logic will be able to take over before configuration from the flash completes. To make this method work, the SVF file has to be ready to play in iMPACT, and as soon as the board is fired up, hit Execute in the iMPACT GUI.
3. Hold INIT Low to delay configuration from the flash, and while INIT is Low, play an Erase SVF file as stated above. After the file starts playing, INIT can be released as JTAG will be functioning on the device.
To create an Erase SVF, file open up the Boundary Scan tab in the tools and create the chain of devices by initializing the chain or just adding devices manually. Then right-click in the workspace and select output file and then SVF file to start writing operations into the SVF file. Right-click the device and then select Erase, which will record the erase operation into an SVF file. Next, right-click the workspace and select output file, stop writing.
To play the file, erase all the devices in the chain as they were defined in the SVF file and then add the SVF file to the workspace. Next, right-click the SVF file and select Execute.