使用扫描查看波形

viewing waveform using scansion

注意:如果有更好的地方让我问这个问题,请告诉我!我在谷歌上进行了大量搜索,但找不到答案

我正在尝试使用波形查看器 scansion 查看简单 counter/sin LUT 的输出。我正在使用 icarus verilog 进行编译。到目前为止,我在命令行上 运行 iverilog -o sinGen_TB sinGenerator_TB,然后 vvp sinGen_TB

我收到一条错误消息 "The document “sinGen_TB” could not be opened. Scansion cannot open files of this type."

或者,当我将文件另存为 sinGen_TB.vvp 或 sinGen_TB.vcd 时,我得到 "The document “sinGen_TB.vvp” could not be opened. Scansion cannot open files in the “Document” format."

这是什么意思,我该怎么做才能查看此波形?

这是我正在编译的代码,如果我正在实例化的模块也需要让我知道:

`include "sinGenerator"

module sinGenerator_TB();
reg clk, rst;
reg [0:3]M;
wire [16:0]data_out;

//instantiate the unit under test
sin_LUT UUT(
  .clk(clk),
  .rst(rst),
  .M(M),
  .data_out(data_out)
  );

//initialize clock
always begin
#5 clk = ~clk;
end

//initialize variables
initial begin
rst = 1;
M = 1;
#20 rst = 0;
#200 M = 2;
#200 M = 4'b0100;
#200 $stop;
end

endmodule

iverilog -o sinGen_TB sinGenerator_TB 只生成最终的可执行文件 sinGen_TB 。

使用 man iverilog 获取有关如何 运行 Iicarus 模拟器的更多信息。

可执行文件需要 运行 -vvp sinGen_TB 。这将 运行 模拟并将生成一个可以由波形查看器打开的输出文件。

[我猜./sinGen_TB也是运行模拟的]

您还需要添加下面的代码来转储波形。

initial
 begin
    $dumpfile("sinGen_TB.vcd"); //file name 
    $dumpvars(0,sinGenerator_TB); // module name 
 end

Verilog 文件通常使用 .v 作为文件扩展名; SystemVerilog 使用 .sv。请使用文件扩展名。它帮助模拟器了解您要编译的语言(所有现代 Verilog 模拟器都是具有向后兼容性的 SystemVerilog 模拟器)。加上文本编辑器,例如vim和emacs,使用文件扩展名来决定如何做语法highlighting/formatting.

模拟器需要生成.vcd文件。 Scansion只是一个查看波形的工具。它与生成波形无关,似乎与问题无关。

让模拟器知道在哪里创建它需要的 VCD 文件$dumpfile;知道需要将什么信号放入 VCD 文件 $dumpvars。阅读 IEEE Std 1800-2012 § 21.7 值更改转储 (VCD) 文件

例如,如果您想转储所有内容并将其放入 dump.vcd,则将其添加到您的测试台:

initial begin
  $dumpfile("dump.vcd");
  $dumpvars;
end