How to add a Microblaze to a non-ISE, command line workflow, VHDL project
This guide will explain how to insert a Microblaze, built in Xilinx EDK into a VHDL project that uses the Xilinx build tools, but does not use ISE to manage the VHDL project. That is, the project is build using command line build tools such as xst, ngdbuild, map, par, etc.
This guide has been written for the Xilinx 10.1 tools but should work without much modification for the 11.1 or 12.1 toolset.
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"