This issue is caused by the Vref rail on the board getting pulled higher than the intended Vref level of Vcco/2 during the period prior to the device completing configuration, and then having this higher voltage present on the Vref rail after configuration completes.
This can happen when the HSWAPEN pin is grounded, which turns on internal pull-up resistors in all of the I/O pins- including the multipurpose Vref pins.
If the Vref supply is generated from a simple resistor-divider between Vcco and ground (instead of being generated from a regulator which may be able to sink current), the internal pull-up resistors in each Vref pin will essentially pull the Vref rail closer to Vcco by adding another pull-up resistor in parallel.
After the Spartan-6 is configured, the HSWAPEN pull-up resistors are shut off inside all of the I/O pins including the Vref pins, but any capacitance on the Vref rail will act to keep the higher voltage present until it has a chance to discharge.
The length of the discharge is based on the RC time constant of the resistor-divider and any capacitance on the rail - which will be dominated by any decoupling capacitors that are used.
Having this high Vref rail present when the Spartan-6 design begins to operate the MCB controller design can cause the Calibrated Input Termination circuit to not work correctly.
The end result could cause incorrect Input Termination values to be used on all of the DQ and DQS pins.
The following figures displays the Vref decay after configuration completes (DONE asserts) and the recommended work around (noted below) of holding sys_rst:
The following is the circuit diagram of the Vref resistor-divider circuit on the SP601 board:
After configuration, while the capacitor discharges, the MCB calibration can be skewed by the SSTL I/O standard on the RZQ/ZIO pins utilizing the Vref voltage.
This does not occur after a soft logic reset as the VREF has already discharged and is stable.
The SP605 is not affected as it uses a voltage regulator instead of a resistor network. Resolution
This issue can be resolved by holding reset after configuration until Vref is stable.
For designs on the SP601 board where modification to the code to hold the reset is not ideal, a manual reset after configuration also results in successful calibrated input termination and MCB operation.