Can I use Data2MEM for block RAM cores created through the CORE Generator?
Using data2mem on CORE Generator memories is not officially supported. To create a CORE Generator memory that is supported by Data2MEM, the memory must have the following:
- Create a hand-made BMM file (use a simple EDK project as a starting point for a BMM example).
- Data inputs starting at 2^3 and increasing 2^(n+3).
- Parity will probably be used if more than one RAMB16 primitive is instantiated by CORE Generator. When parity is used, the data input parity pins must be tied to ground and the memory must be created to accommodate the grounded pins. For example, if you create a 32x2048 memory structure, CORE Generator creates the memory so that three out of four of the RAMB16s have parity pins. Consequently, you must create a 36x2048 memory to get a useable 32x2048, making sure to tie the data in parity pins to ground when you instantiate the core that you created with CORE Generator.
- Insert the BMM file during NGDBuild with the -bm switch.
- Create the memory file as shown in (Xilinx Answer 14384).
- After BitGen creates the BIT file, use Data2MEM to insert the contents of the MEM file:
data2mem -bm <file>_bd.bmm -bd <file>.mem -bt <design>.bit -o b <new_bit>.bit
Note: Using data2mem on CORE Generator memories in 9.1i or later works only sporadically.