M
Morris Ho
Guest
Tools used: EDK and ISE 6.2 on Win2000. I compiled the Memec HelloWorld
project and successfully ran it on their Spartan IIELC reference design
board.
With this working project, I changed its properties to a sub-module and
exported it to Project Navigator project that had a schematic top level
file. I created the library symbol for the sub-module, placed the
sub-module and an counter on the schematic and I ran it all the way to
Generate Programming File. When I downloaded the bit file, the counter
worked, but the Microblaze did not. Even going back to Platform Studio and
using the import function did not create a working bit file.
I found by extensive poking around that the Project Navigator does NOT
automatically update the BMM file with the newly placed locations of BRAM
that holds the Microblaze program. (The export from XPS did add a
system.BMM, but that file did not have any placement info--the file just had
the names of the BRAM instances and the memory bit positions.) Data2Mem
needs the placement information to create a new download file. I found that
I could use the FPGA editor in Project Navigator to find out where the last
PAR operation put the BRAMs. I created a new BMM file from the system.BMM
and included the placement info. Specifying this BMM file with the .ELF
allowed Data2Mem to create a WORKING Microblaze sub-module bit file. You
can manually run Data2Mem in the Project Navigator or use the dialog in XPS
(which calls Data2Mem in the script) as long as you supply the correct BMM
file.
A valid line in a BMM text file for Data2Mem is:
bram_1mb/bram_1mb/ramb4_s2_s2_0 [31:30] PLACED = R3C0;
The BMM files exported to Project Navigator by XPS did not have the field
starting with "PLACED.." After going from PAR to bit file creation, the BMM
file still did not change, even though the subsequent Data2Mem procedure to
combine the ELF data requires placement info in the BMM. It is quite
reasonable not to supply any placement before PAR, because PAR is allowed to
move things around, but the final placement info should be extracted and
updated into the BMM file. In this example, I manually added the placement
information.
I have seen a few posts regarding this problem. Is there a button or
procedure in Project Navigator to automatically extract new BRAM locations
and update the BMM file? Of course I already have a work-around, like
forgetting about sub-modules and keeping the project exclusively in XPS !
project and successfully ran it on their Spartan IIELC reference design
board.
With this working project, I changed its properties to a sub-module and
exported it to Project Navigator project that had a schematic top level
file. I created the library symbol for the sub-module, placed the
sub-module and an counter on the schematic and I ran it all the way to
Generate Programming File. When I downloaded the bit file, the counter
worked, but the Microblaze did not. Even going back to Platform Studio and
using the import function did not create a working bit file.
I found by extensive poking around that the Project Navigator does NOT
automatically update the BMM file with the newly placed locations of BRAM
that holds the Microblaze program. (The export from XPS did add a
system.BMM, but that file did not have any placement info--the file just had
the names of the BRAM instances and the memory bit positions.) Data2Mem
needs the placement information to create a new download file. I found that
I could use the FPGA editor in Project Navigator to find out where the last
PAR operation put the BRAMs. I created a new BMM file from the system.BMM
and included the placement info. Specifying this BMM file with the .ELF
allowed Data2Mem to create a WORKING Microblaze sub-module bit file. You
can manually run Data2Mem in the Project Navigator or use the dialog in XPS
(which calls Data2Mem in the script) as long as you supply the correct BMM
file.
A valid line in a BMM text file for Data2Mem is:
bram_1mb/bram_1mb/ramb4_s2_s2_0 [31:30] PLACED = R3C0;
The BMM files exported to Project Navigator by XPS did not have the field
starting with "PLACED.." After going from PAR to bit file creation, the BMM
file still did not change, even though the subsequent Data2Mem procedure to
combine the ELF data requires placement info in the BMM. It is quite
reasonable not to supply any placement before PAR, because PAR is allowed to
move things around, but the final placement info should be extracted and
updated into the BMM file. In this example, I manually added the placement
information.
I have seen a few posts regarding this problem. Is there a button or
procedure in Project Navigator to automatically extract new BRAM locations
and update the BMM file? Of course I already have a work-around, like
forgetting about sub-modules and keeping the project exclusively in XPS !