我不能使用gtkwave查看memory:
module internal_memory(
output [31:0] hrdata,
input mem_enable,
input [31:0] haddr,
input [31:0] hwdata,
input hwrite,
input hreset,
input hclk
);
reg [31:0] memory [0:1023]; // <-------------- can't find its waveform
reg [31:0] internal_hrdata;
always @(posedge hclk, hreset) begin
if (!hreset) begin
internal_hrdata <= 32'h0000_0000;
end
else begin
if (mem_enable) begin
if (hwrite) begin
memory[haddr] <= hwdata;
end
else begin
internal_hrdata <= memory[haddr];
end
end
end
end
assign hrdata = internal_hrdata;
endmodule要查看memory的波形,您有什么建议
或者如何在gtkwave或任何.vcd/波形查看器中显示二维数组?
发布于 2011-11-26 09:27:49
您需要先将内存转储到VCD文件中。我熟悉的两个模拟器需要额外的模拟选项才能将内存转储到VCD中;也许您的模拟器也是如此。
发布于 2013-12-13 16:22:09
我知道这是一个老问题,但我最近不得不用Icarus/GTKWave查看一个课程期末项目的模拟记忆,并想为阅读这个问题的人回答这个问题。我能够在Icarus Verilog可移植性说明中找到答案(请参阅来源)。
使用Icarus时,您需要转储要显式查看的每个数组字(内存位置):
module top;
reg [7:0] array [2:0];
initial begin
$dumpvars(0, array[0], array[1]);
...
end
endmodule可以使用for循环自动转储数组中的所有单元格:
module top;
integer idx; // need integer for loop
reg [7:0] array [2:0];
initial begin
for (idx = 0; idx < 2; idx = idx + 1) $dumpvars(0, array[idx]);
...
end
endmodule来源:http://iverilog.wikia.com/wiki/Verilog_Portability_Notes (转储数组字)
https://stackoverflow.com/questions/8264350
复制相似问题