Description
Keywords: UPPER, LOWER, cascade, BRAM, block, RAM, 128K
My design fails when I create a block RAM memory structure in XPS that is greater than 64 KB.
Solution
XPS is taking advantage of the cascaded block RAM feature in Virtex-4. However, Platgen creates the memory structure such that the "UPPER" memory becomes filled with the software application before the "LOWER" memory does.
To work around this problem:
1. Run "Create Netlist" in XPS.
2. Modify the memory structure of the ".bmm" file that was created in the project's implementation directory from:
// File: C:\test_project\128k\mytest_ml401_128K\implementation\system.bmm
ADDRESS_MAP microblaze_0 MICROBLAZE 100
ADDRESS_SPACE lmb_bram_combined COMBINED [0x00000000:0x0001ffff]
ADDRESS_RANGE RAMB16
BUS_BLOCK
lmb_bram/lmb_bram/ramb16_0 [31:31] ;
lmb_bram/lmb_bram/ramb16_1 [30:30] ;
:
:
lmb_bram/lmb_bram/ramb16_30 [1:1] ;
lmb_bram/lmb_bram/ramb16_31 [0:0] ;
END_BUS_BLOCK;
BUS_BLOCK
lmb_bram/lmb_bram/ramb16_32 [31:31] ;
lmb_bram/lmb_bram/ramb16_33 [30:30] ;
:
:
lmb_bram/lmb_bram/ramb16_62 [1:1] ;
lmb_bram/lmb_bram/ramb16_63 [0:0] ;
END_BUS_BLOCK;
END_ADDRESS_RANGE;
END_ADDRESS_SPACE;
END_ADDRESS_MAP;
to:
// File: C:\test_project\128k\mytest_ml401_128K\implementation\system.bmm
ADDRESS_MAP microblaze_0 MICROBLAZE 100
ADDRESS_SPACE lmb_bram_combined COMBINED [0x00000000:0x0001ffff]
ADDRESS_RANGE RAMB16
BUS_BLOCK
lmb_bram/lmb_bram/ramb16_32 [31:31] ;
lmb_bram/lmb_bram/ramb16_33 [30:30] ;
:
:
lmb_bram/lmb_bram/ramb16_62 [1:1] ;
lmb_bram/lmb_bram/ramb16_63 [0:0] ;
END_BUS_BLOCK;
BUS_BLOCK
lmb_bram/lmb_bram/ramb16_0 [31:31] ;
lmb_bram/lmb_bram/ramb16_1 [30:30] ;
:
:
lmb_bram/lmb_bram/ramb16_30 [1:1] ;
lmb_bram/lmb_bram/ramb16_31 [0:0] ;
END_BUS_BLOCK;
END_ADDRESS_RANGE;
END_ADDRESS_SPACE;
END_ADDRESS_MAP;
3. Look in the logfile when the netlist was created and rerun NGDBuild from the command line, as was run in the logfile, making sure to include the newly modified ".bmm" file.
4. You can now run "Create Bitstream" in XPS.
These problems have been fixed in the latest EDK 8.2i Service Pack, available at:
http://www.xilinx.com/xlnx/xil_sw_updates_home.jspThe first service pack containing the fix is EDK 8.2i Service Pack 2.