I'm a newbie in fpga design, and am really struggling to create a bmm file that works. I am using an Spartan-3A starter kit, with ISE 9.2.0i on Linux. I am working with the dna reader project, and am capable of downloading the design, as well as modifying the assembly program (dna_ctrl.psm), and updating it via the whole "implement design" route.
I'm really interested in the direct modification of the bit file via data2mem because it promises much faster turnaround times when updating the picoblaze program, but I'm stuck with the bmm file generation.
I've told ISE to Locate the bram at X0Y0, and from the FPGA Editor i can see that this works. It has implemented a BRAMB16BWE at site RAMB16_X0_Y0
I've created a file my.bmm with these contents:
ADDRESS_SPACE ram RAMB16 [0x0000:0x07FF] BUS_BLOCK top/ram/program_rom/ ram_1024_x_18_1 [7:0] LOC = X0Y0; END_BUS_BLOCK; END_ADDRESS_SPACE;
which seems to be syntactically correct and has the correct number of bits (16kb)
When I try to merge the file with the mem file from kcpsm3.exe I get an error
data2mem -bm my.bmm -bd dna_ctrl.mem -bt reading_dna.bit -o b new.bit
ERROR:Data2MEM:31 - Out of bounds code segment for ram space in 'my.bmm'. Memory space 'ram' occupies [0x00000000:0x000007FF] Code segment #0 occupies [0x00000000:0x000009FF]
This same assembly file is assembled into dna_ctrl.vhd which is correctly built into the final bitfile.
So what am I doing wrong? Any help would be highly appreciated!
Bart