首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查看内存波形?

如何查看内存波形?
EN

Stack Overflow用户
提问于 2011-11-25 10:39:04
回答 2查看 6.9K关注 0票数 2

我不能使用gtkwave查看memory

代码语言:javascript
复制
    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/波形查看器中显示二维数组?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-26 09:27:49

您需要先将内存转储到VCD文件中。我熟悉的两个模拟器需要额外的模拟选项才能将内存转储到VCD中;也许您的模拟器也是如此。

票数 3
EN

Stack Overflow用户

发布于 2013-12-13 16:22:09

我知道这是一个老问题,但我最近不得不用Icarus/GTKWave查看一个课程期末项目的模拟记忆,并想为阅读这个问题的人回答这个问题。我能够在Icarus Verilog可移植性说明中找到答案(请参阅来源)。

使用Icarus时,您需要转储要显式查看的每个数组字(内存位置):

代码语言:javascript
复制
module top;
   reg [7:0] array [2:0];
   initial begin
     $dumpvars(0, array[0], array[1]);
     ...
   end
endmodule

可以使用for循环自动转储数组中的所有单元格:

代码语言:javascript
复制
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 (转储数组字)

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8264350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档