Initialization of the 9K block RAM (RAMB8BWER primitive) using the INIT_FILE attribute does not work correctly unless set to the default value.
When using the RAMB8BWER in any mode, the INIT_FILE attribute does not correctly initialize the block RAM.
When using the INIT_FILE attribute to set values to anything but the default zero, initialization is shown for simulation of both pre-synthesis and timing simulation, but the hardware does not reflect those same values.
RAMB8BWER in any mode where INIT_FILE is set to anything but the default zero values.
Do not use the INIT_FILE attribute.
You must use the INIT attributes instead and cannot perform post-synthesis update of memory contents for the RAMB8 blocks.
More information can be found in the Spartan-6 Libraries Guide under the RAMB8BWER primitive:
NOTE: When using the INIT attributes, please be aware of the 9K block RAM initialization issue in (Xilinx Answer 34712).