OhmSweetOhm

.bmm Problems

8 posts in this topic

Hi

 

I was trying to a add a custom peripheral to the AVR8 core and I wanted to use a schematic to connect it all.

 

I simply copied the AVR8 250k Xilinx project and made a schematic symbol out of the AVR8 core, I commented the DCM out and added an external to better control the clocks of my project later.

 

But I now have trouble to compile the hohle thing. I get a lot of errors.

 

a picture:https://www.dropbox.com/s/v9ndbidje15g5rg/Neues%20Bild.bmp?dl=0

 

Processing BMM file "Papilio_AVR8.bmm" ...
ERROR:NgdBuild:989 - Failed to process BMM information Papilio_AVR8.bmm

 

and a lot of memory allocation leak errors.

 

I changed nothing in the vhdl files, exept the DCM, I tried with the original DCM setup it isn't the reason for the errors.

 

I don't know if this could be a reason, but the bmm file isn't in the same place in the hierarchy view of ISE, it is now outside of the Papilio_AVR8 and now part of the main schematic. (see picture)

 

If someone has a clue..

 

Thanks

 

 

Share this post


Link to post
Share on other sites

>> If someone has a clue..

Hi,

 

it's the xilinx data2mem utility that is broken and segfaults.

Its purpose is to set initial values to block rams in the bit stream, without having to re-synthesize everything.

 

Usually this happens when I'm trying to configure a memory that doesn't exist. The typical reason for that is that my design is broken and the memory got optimized away.

What I'd do is to check the .bmm file for block memory names. Look them up from the FPGA editor (or planAhead), check that they exist. If not, investigate why.

It may be easiest to do this the first time with an example project that builds correctly, so you know what you're looking for.

 

There may be other reasons, but the described problem is quite common. At least in my designs.

 

PS: Don't call any memory "memory" (the instance name in RTL). Use any name you like, "gumbo", "helloWorld", whatever. But not "memory"...

Share this post


Link to post
Share on other sites

Yes, that is exactly it. When you changed the structure of the project you changed the location of the memory. You will need to update the bmm file to reflect the new memory location. You can find the new location with FPGA editor.

 

Jack.

Share this post


Link to post
Share on other sites

Yes, that is exactly it. When you changed the structure of the project you changed the location of the memory. You will need to update the bmm file to reflect the new memory location. You can find the new location with FPGA editor.

 

Jack.

 Thanks for the help but the error occures in the translation process, the FPGA editor only has the option for: post map, post place & route. Plan Ahead won't start, i tried to start it via tcl commands, but there is an JAVA error.

Is there another way to update the bmm and find out the memory loc.

 

In the meantime I tried this tutorial:http://jimselectronicsblog.blogspot.co.at/2014/03/implementing-microblaze-mcs-on-papilio.html

 

Works great, now i have a microblaze in my design, but no longer the cool arduino lib.

 

Ohm.

Share this post


Link to post
Share on other sites

You could try to remove the .bmm file from the project, temporarily.

Then it should build but the design won't work without memory contents. The only purpose is to check, whether the memories have been placed and routed, or optimized away.

 

You might also read through the warnings. Usually, most are useless but ocasionally one will point right to the problem.

Share this post


Link to post
Share on other sites

Yes, thank you offroad, that is what I remember doing too. You just need to find a way to get the path to the memory so it doesn't choke.

 

Thank you for all of the help, my wife just had our baby on Wednesday and I've been in the hospital with her while she recovers from the c-section and getting the baby situated. Been hard to get much work done. :)

 

Jack.

Share this post


Link to post
Share on other sites

Thanks guys

 

I managed to resolve it. In the bmm file there is e.g. PM_Inst/RAM_Word0 but I instantiated the AVR8 as block in the schematic with the name softproc.

So I just had to add softproc/PM_Inst/RAM_Word0 for every entery in the bmm file.

 

I am still a noob, soo... till next time. ;)

 

By the way, congratulations for you and your wife.

 

Ohm

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now