When I configure a Virtex/Virtex-E, Spartan-II/Spartan-IIE device with the "no pre-configuration pull-ups" option selected, outputs receive a High pulse at the end of the configuration process.
This happens despite the fact that the data book states the outputs should remain "floating" during configuration when this option is selected.
If the I/O is configured as an output, a weak keeper turns on in the last frame of configuration, even if the keeper is not used in the design. If the input buffer of the I/O is disabled in the design, the keeper acts as a weak pull-up. If the pin is configured as an I/O and is configured as an active output upon startup, the keeper is activated, keeping the current value on the pin.
1. Change outputs to I/Os.
This will enable the input buffer and allow the keeper to function. The keeper still turns on in the last frame, but it maintains the Low value rather than pull the output High. The keeper turns off (provided it is not enabled in your design) when the DONE pin goes High, and the output becomes active.
2. Configure with pull-ups active.
This is the recommended solution, as users should not rely on floating outputs to hold the value during configuration. The output behavior can be guaranteed if pull-ups are enabled.
3. Use external pull-downs to ensure logical 0.
If an I/O must be Low, use a pull-down to insure it.
4. Design an internal pull-down in the IO.