06-01-2010 02:15 AM
We have a project where a custom RAM block is used. Because of this (I assume), PlatGen generates a BMM file which only contains the 2 toplevel Microblazes and their memory.
The result is that BitGen complains about an 'Internal database corruption' and bails out. When I empty the BMM file, the bitfile is created but Data2Mem doesn't like the BMM either.
How do I describe my embedded RAMB36E1 blocks in a BMM file? Note that I do not want to initialize them, I only want the tooling to be able to program the existing RAMB.
Is there some documentation on BMM that I missed?
I am using version 12.1 of the tooling.
06-03-2010 02:11 AM
I didn't find what I was looking for yet though: I have 2 RAMB36E1 components in an IP - the resulting BMM does not show these RAM memories (which is correct as they are not part of the project). It does have the RAM blocks from the project.
When building this design, BitGen complains about an Corrupted Internal Database and Data2Mem errors out as well. As soon as I remove the IP with the RAM or clear out the BMM file - bitgen succeeds.
The resulting design is dead because the other RAM blocks did not get initialised. So how do I tell BitGen and Data2Mem to ignore the 'other' RAM?
06-03-2010 08:12 PM
I have a design with 8 RAMB36E1 (used as dual port RAMs) and 4 RAMB18E1 (used as single port ROMs) blocks in an IP. I have never seen any of those in .bmm files. I use INIT in Verilog to initialize. It is interesting to know if there is way to load the contents using data2mem.
06-04-2010 04:06 AM
By looking at the Data2Mem documentation, it looks like it should be possible - the only thing needed is the location constraints. Possibly, these can be retrieved from the 'xdl' output.
Strange thing is, as long as you have only RAM in your project *or* only ram in IPs - all is well. But mix the two and all the tools go haywire...