The Spartan-6 family features a suspend mode, an advanced static power-management feature, which reduces FPGA power consumption while retaining the FPGA's configuration data and maintaining the design.
To use the Spartan-6 FPGA suspend mode in a MIG design with DRAM data retention, you need to to request that the memory enter self-refresh mode before entering suspend.
Once the FPGA exits suspend mode and the PLLs have locked, the memory can exit self-refresh mode and MCB operation can resume with no loss of DRAM data.
There is an issue with MIG 3.6 and earlier versions where the MCB is reset when coming out of a self-refresh and potentially corrupts the data in the DRAM.
In MIG 3.6 and earlier versions when self-refresh mode is used with the FPGA suspend feature, the MCB is reset resulting in corruption of DRAM data.
This is caused by the LOCK signal of the PLL going low during a suspend operation.
The soft calibration module incorrectly resets the MCB when the PLL lock signal is initially low after the FPGA exits the suspend mode.
The reset to the MCB will cause a power-up calibration, which writes to the address specified in C_MC_CALIBRATION_RA, C_MC_CALIBRATION_BA, C_MC_CALIBRATION_CA, overwriting the previous content.
This behavior is only seen in Suspend/self-refresh mode and not in self-refresh only mode.
The expected behavior is for the FPGA to come out of suspend mode and the DRAM to exit self-refresh mode without the MCB entering the power-up calibration sequence.
Xilinx has determined the root cause for this issue and is making the necessary changes to MIG.
To work around this issue, rtl updates to the mcb_raw_wrapper.v/vhd and mcb_soft_calibration.v/.vhd files are required.
These files are located in both the 'user_design/rtl' and 'example_design/rtl' directories.
The following ftp location contains the updated files that should be used instead of those generated by MIG v3.6: http://www.xilinx.com/txpatches/pub/swhelp/coregen/38696.zip
This issue only exists in MIG v3.6 and earlier versions and is resolved in MIG v3.7, released with ISE 13.1.
If you are experiencing this issue and additional help is required, please open a webcase.