Would you tell me how to do it in more detail? How the files look like and how to use it? Or some link to the guidance? Thanks a lot
I want to do the BRAM initialzation in simulation. The XPS generated system_init.bmm file automatically like this: opbBram64k/opbBram64k/ramb16_s1_s1_0 [31:31] ; opbBram64k/opbBram64k/ramb16_s1_s1_1 [30:30] ; opbBram64k/opbBram64k/ramb16_s1_s1_2 [29:29] ; ........................... opbBram64k/opbBram64k/ramb16_s1_s1_30 [1:1] ; opbBram64k/opbBram64k/ramb16_s1_s1_31 [0:0] ; the data is store in another file called system_init.vhd. And in this case, I need to split my each bit of my 32-bit data into different BRAM, so I need 32 different files to do that. Is that correct? Then I need to write another program to generated these files. That doable, but require some time. How do I give data in the .bmm file?
Here's an approach that might work, though I haven't tried locating data this way, only code.
You can declare a constant array in your "C" code, preferably in a separate ".h" file, so you can write a script or program to generate it. (I have even used a spreadsheet, written the output as a .csv file, and hand edited the "C" array declaration around the comma separated values)
Using "Generate Linker Scripts" in EDK you can generate a new code segment, called "myrom", and map its base address to your OPBRAM.
Then you have to persuade the linker to locate that constant array in that segment - XAPP642 and Answer Record 16547 show how to locate code, but it should work for constant data.
When you have built the application and generated the sim files, you can check system_init.vhd to see if the expected BRAM is there.