Virtex-4 is configured correctly in SelecMAP8 but fails to get configured in SelectMAP32.
Page 37 of the Virtex-4 Configuration Guide UG071:
states that there is no need to monitor BUSY when configuring Virtex-4 devices and that BUSY goes Low "shortly" after CS_B is asserted (page 42).
However, CS_B and RDWR_B are de-asserted prior configuration and asserted again to configure the Virtex-4; it takes a short time (page 42) before BUSY is actually Low.
In SelectMAP8, this might not be a problem since it takes 4 CCLK clock cycles to send a Dummy word (0xFF, 0xFF, 0xFF, 0xFF) before sending the Sync Word (0xAA, 0x99, 0x55, 0x66). BUSY has a short time to go Low before the Sync Word is sent.
However, one 32-bit word is sent at each clock cycle in SelectMAP32; this means that the Sync Word is sent at the 2nd clock cycle (1st clock cycle: 0xFFFFFFFF - Dummy Word, 2nd clock cycle: 0xAA995566 - Sync Word) . This can cause configuration to fail if BUSY is not Low while the Sync Word is sent. The Sync Word will not be received, and the Virtex-4 will not be therefore synchronized.
A way around this is to pad three additional Dummy Words (0xFFFFFFFF) before the Sync Word. This will give four clock cycles of pad words that will ensure the Sync Word is received.