bmm文件(用data2mem更新core generator生成的memory)
时间:10-02
整理:3721RD
点击:
平台环境: ise14.7. xc6vlx760
用Core Generator生成32x2048的block ram, 使用coe文件初始化memory。生成bit文件后,编写bmm文件,使用data2mem dump出memory内容。
Core Generator使用2个RAMB36E1(配置成18x2048)来实现32x2048的memory。具体primitive中和logic bit映射关系如下:
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[0] [0:0] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[1] [1:1] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[2] [2:2] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[3] [3:3] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[4] [4:4] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[5] [5:5] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[6] [6:6] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[7] [7:7] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOPADOP[0] [8:8] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[8] [9:9] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[9] [10:10] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[10] [11:11] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[11] [12:12] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[12] [13:13] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[13] [14:14] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[14] [15:15] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[15] [16:16] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOPADOP[1] [17:17] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[0] [18:18] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[1] [19:19] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[2] [20:20] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[3] [21:21] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[4] [22:22] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[5] [23:23] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[6] [24:24] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[8] [25:25] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[9] [26:26] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[10] [27:27] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[11] [28:28] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[12] [29:29] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[13] [30:30] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[14] [31:31] PLACED=X4Y25;
RAMB36使用了parity,所以从bit中dump出来的ram内容并不能直接对应coe文件中的内容。
试了几种bmm文件,如下的bmm能正确的dump出ram的内容(与planahead里看到的ram属性里读到的值一样):
ADDRESS_SPACE cpu_rom RAMB36 WORD_ADDRESSING [0x00000000:0x00000FFF]
BUS_BLOCK
ROM2048X32_TOP/ROM_CELL/XC6V_ROM2048x32/U0/aramloop[0].ram.r/a.ram [17:0] PLACED=X4Y26;
ROM2048X32_TOP/ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram [35:18] PLACED=X4Y25;
END_ADDRESS_RANGE;
但用这个bmm和相同的elf文件更新bit文件之后,dump出来的ram内容就不对了。感觉是bmm的问题。
请教什么地方有错?谢谢
用Core Generator生成32x2048的block ram, 使用coe文件初始化memory。生成bit文件后,编写bmm文件,使用data2mem dump出memory内容。
Core Generator使用2个RAMB36E1(配置成18x2048)来实现32x2048的memory。具体primitive中和logic bit映射关系如下:
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[0] [0:0] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[1] [1:1] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[2] [2:2] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[3] [3:3] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[4] [4:4] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[5] [5:5] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[6] [6:6] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[7] [7:7] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOPADOP[0] [8:8] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[8] [9:9] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[9] [10:10] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[10] [11:11] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[11] [12:12] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[12] [13:13] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[13] [14:14] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[14] [15:15] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOADO[15] [16:16] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[0].ram.r/a.ram/DOPADOP[1] [17:17] PLACED=X4Y26;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[0] [18:18] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[1] [19:19] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[2] [20:20] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[3] [21:21] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[4] [22:22] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[5] [23:23] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[6] [24:24] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[8] [25:25] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[9] [26:26] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[10] [27:27] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[11] [28:28] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[12] [29:29] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[13] [30:30] PLACED=X4Y25;
ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram/DOADO[14] [31:31] PLACED=X4Y25;
RAMB36使用了parity,所以从bit中dump出来的ram内容并不能直接对应coe文件中的内容。
试了几种bmm文件,如下的bmm能正确的dump出ram的内容(与planahead里看到的ram属性里读到的值一样):
ADDRESS_SPACE cpu_rom RAMB36 WORD_ADDRESSING [0x00000000:0x00000FFF]
BUS_BLOCK
ROM2048X32_TOP/ROM_CELL/XC6V_ROM2048x32/U0/aramloop[0].ram.r/a.ram [17:0] PLACED=X4Y26;
ROM2048X32_TOP/ROM_CELL/XC6V_ROM2048x32/U0/a/ramloop[1].ram.r/a.ram [35:18] PLACED=X4Y25;
END_ADDRESS_RANGE;
但用这个bmm和相同的elf文件更新bit文件之后,dump出来的ram内容就不对了。感觉是bmm的问题。
请教什么地方有错?谢谢
看着很不错呢,相信你会解释给我听的
