突然间,我开始研究一些使用$ readmemh和$ writememh的verilog testbench代码。我明白它基本上读取内存并写入内存。如果你能指出一些与这些惯例有关的资源,我将很高兴。 PS:我在谷歌搜索没有成功。 (我非常......对Verilog来说很新)
答案 0 :(得分:18)
我同意不太容易找到有关readmem / writemem的内容。你可以在这里找到一点: http://fullchipdesign.com/index_files/readmemh.htm
无论如何,关于这些函数的说法不多,语法是:
$readmem[hb]("File",ArrayName,StartAddr,EndAddr)
$writemem[hb]("File",ArrayName,StartAddr,EndAddr)
Verilog对文件格式非常挑剔,文本文件中的位数必须与数组中的位数相匹配。
我建议你通过定义一个数组来玩一下,用writememh / writememb写出数据然后将其打印出来。
这样的事情应该让你开始(没试过!)。
integer i;
reg [7:0] memory [0:15]; // 8 bit memory with 16 entries
initial begin
for (i=0; i<16; i++) begin
memory = i;
end
$writememb("memory_binary.txt", memory);
$writememh("memory_hex.txt", memory);
end
干杯!
答案 1 :(得分:0)
阅读HEX文件的方式如下:
integer i;
reg [7:0] memory [0:15]; // 8 bit memory with 16 entries
initial begin
for (i=0; i<16; i++) begin
memory = i;
end
$readmemh("memory_binary.txt", memory);
end