XST does not properly infer block RAM under the following conditions:
- When a 512x16 block RAM described as a RAMB16_S36 is inferred instead of RAMB18_S18.
- When the output port width is greater than the RAM word width.
For more information on inferring RAM, see the Xilinx Synthesis Technology (XST) User Guide in the software manuals, available at:
The ISE Language Templates also have examples on how to infer RAM