The READ_FIRST mode does not work as expected for Single Port memory configurations in the Block Memory Generator core. During a write operation to an address, the old data at that address should be output in the READ_FIRST mode; however, in this case, the new data itself is output. This will result in unexpected data at the output, because the user will expect the core to behave as READ_FIRST.
ECC configurations use the Virtex-5 RAMB36SDP primitive, which is basically designed only for Simple Dual Port Memory configurations. However, it was found that the same primitive could be used for extra-wide Single Port Memory configurations as well; hence, Block Memory Generator attempted to extend functionality of the primitive by supporting ECC in the core for Single Port memory configurations.
Simple Dual Port memory configurations work correctly as expected. However the Single Port Memory implementation of the Block Memory Generator Core will not function in READ_FIRST mode due to a limitation of the RAMB36SDP primitive, even if that mode is selected during customization.
The READ_FIRST mode will no longer be available for a Single Port Memory implementations in Virtex-5, beginning with the Block Memory Generator v3.1 Core.