05-20-2010 05:47 AM
I had a need on a project to use a microblaze in a VHDL design that did not use ISE. That is to say, the project was built from the command line using direct calls to ngdbuild, map, par, etc. I needed to add an Microblaze to the project but had a little trouble getting it to fit in the workflow. Below is a step-by-step guide on how to do this with the more arcane steps in bold. This is done in 10.1 but should be similar in 11.1 or 12.1.
1.) Create a Microblaze Project in EDK (as per normal)
2.) append ", BUFFER_TYPE=NONE" to all ports in the .mhs file
3.) Run "Hardware -> Generate Netlist"
4.) Right click your Microblaze Application and select "Build Project"
5.) Instantiate the Microblaze in your VHDL (taking note of the instantiation name, assumed here to be "microblaze_inst")
6.) Open up your EDK .bmm file and prepend "microblaze_inst/" to all ramb16 paths (or whatever your microblaze instantiation name is)
7.) modify your ngdbuild call...
a.) append a source directory switch pointing to your edk implementation folder. Something like "-sd ../edk/implementation"
b.) append a switch pointing to your bmm file. Something like "-bm ../edk/implementation/system.bmm"
8.) create your .bit file by building your project like normal...
a.) run ngdbuild
b.) run map
c.) run par
d.) run trce
e.) run bitgen
9.) Update the .bit file with processor data
a.) run data2mem (with the _bd.bmm file). Something like "data2mem -bm ../edk/implementation/system_bd.bmm -bd ../edk/main_app/executable.elf -bt vhdl_project.bit -o b vhdl_project_download.bit"
10.) Optional: If you need to create a .hex file run promgen. Something like "promgen -p hex -w -o vhd_project.dum -u 0 vhdl_project_download.bit"
05-31-2012 11:35 AM
What about the constraints given in the various UCF files?
In additon, all of those constraints don't include this "microblaze_inst" level of hierarchy, is there any way you can tell the project to prepend those paths?
Thanks in advance,