There is a known issue with noncontinuous SelectMAP and ICAP data loading using the deassert CSI_B method with Spartan-3A/-3AN/-3A DSP. Configuration fails with INIT staying High and DONE staying Low.
To work around this issue, use the CCLK method to pause data loads. For instructions on how to use this method, see the "Spartan-3 Configuration User Guide" (UG332), Chapter 7: Slave Parallel (SelectMAP) Mode -> Non Continuous SelectMAP Data Loading -> Pausing CCLK, accessible at:
This issue also affects the ICAP interface, which is the internal version to the SelectMAP interface. Pausing a data load over the ICAP using the CE pin results in a failure to load the data.