为什么gtkwave不接受我的verilog代码?

为什么gtkwave不接受我的verilog代码?,verilog,Verilog,我想在gtkwave上显示代码的波形,但在CMI中输入以下语句后: iverilog-o task\u编译的task.v 已编译的vvp任务 =>VCD信息:打开dumpfile main.VCD进行输出 gtkwave task.vcd =>GTKwave分析器 error opening .vcd file `task.vcd` 如果这是一个愚蠢的问题,我会提前道歉,但我真的厌倦了 在这件事上浪费我的时间。我只想做作业 帮不了你多少忙,但是你读过报纸了吗?他们谈论使用一个叫做害虫的程序进

我想在gtkwave上显示代码的波形,但在CMI中输入以下语句后:

iverilog-o task\u编译的task.v

已编译的vvp任务

=>VCD信息:打开dumpfile main.VCD进行输出

gtkwave task.vcd

=>GTKwave分析器

 error opening .vcd file `task.vcd`
如果这是一个愚蠢的问题,我会提前道歉,但我真的厌倦了 在这件事上浪费我的时间。我只想做作业


帮不了你多少忙,但是你读过报纸了吗?他们谈论使用一个叫做害虫的程序进行编译,而不是使用iverilog。看第30页和第78页。我没有看到gtkwave命令的调试选项,所以我帮不了多少忙。但这样一个一般性错误似乎表明您很可能遗漏了一些明显的错误,或者gtkwave程序员在报告错误方面非常糟糕; 对 gtkwave task.vcd


…如果使用了正确的文件名,则会有所帮助。我刚刚添加了perror作为错误消息,以便在VCD加载程序出现故障时提供更多信息。SVN commit 954谢谢。

请注意,在较新版本的gtkwave上,您只需从桌面、资源管理器等双击VCD文件的图标即可。这在Linux和OSX上有效。在Windows和其他系统上,您可以将图标拖到gtkwave的实时会话中。

我查看了文档,但它还是太神秘了。我不反对技术细节,但如果你是一个完全的业余爱好者,它们是完全无用的。实际上,我用手画出了整个电路的波形,因为我无法继续。Verilog和gtkwave本应是帮助我工作的工具,但我却被淹没在单调乏味的命令洪流中。这不仅是这个工具设计者的耻辱,也是我的教授们的耻辱,他们甚至懒得教你如何使用verilog。还是谢谢你的提示,伙计!给你一把锤子并不能使你成为一个木匠。在你的一生中,你会经历尝试学习一些东西的过程,并多次自己找出缺失的部分,所以你最好习惯它。假设人们完全是业余爱好者,就会写出大量的文档,而大多数人都不会读,因为他们会害怕。这就是为什么有些人写真书,不仅仅是为了教大局。一旦你知道了这些工具是如何工作的,你实际上就赢得了使用它们的时间。还有,请不要对免费工具的开发人员发牢骚,他们没有强迫你使用它。尝试在搜索引擎或youtube上键入gtkwave教程,你会更幸运。我明白你的意思,但我认为你对我的印象是错误的。我的问题是,我必须在我的课程中使用它,当然没有人强迫我使用它,但我的批评者是完全正确的。我使用过许多不同的编程语言和专业工具,我从来没有经历过如此繁琐的调试过程,从来没有。在我所在大学的论坛上,数以百计的学生在安装和运行它时遇到了类似的问题,而实际上只有极少数人需要帮助,例如java、C、haskell等。让我们像这样说吧,我刚刚注意到了windows用户的缺点。不幸的是,我不能直接打开它。尽管如此,我还是非常感谢你们的帮助。如果你们在使用Windows,并且被教授强迫使用gtkwave,最新的gtkwave就在这里:……我遇到的大多数课程网页似乎都指向了该程序的一个非常底层的版本。您可能可以将VCD注册为gtkwave的文件类型,但我从未尝试在Windows中实现这一点,因为我主要生活在Linux环境中。另外,请给出您班上的人遇到的痛苦和痛苦的具体反馈,因为我可以在文档中添加快速入门部分。似乎很多数字设计课程都被视为一种仪式,你会被扔出IEEE规范,一个作业,并被告知去解决它。
timescale 1ns/10ps
module main(A_i, B_i, C_i, Y_o);  
    input A_i, B_i, C_i;
    output Y_o;
    wire w1, w2, w3, w4;
    assign   Y_o = w4 ~& w2;
    assign   w1 = B_i & C_i;
    assign   w2 = w1 | w3;
    assign   w3 = w4 | A_i;
    assign   w4 = A_i ~| w1;
endmodule
module main_tb;         
    reg a1, b1, c1;
    wire y1;
    
    initial begin
    $dumpfile("main.vcd");  
    $dumpvars(0,a1,b1,c1,y1);   
    a1 = 0;         
    b1 = 0;
    # 10 a1 = 1;        
    # 10 b1 = 1;         
    # 10 a1 = 0;        
    # 10 $finish;       
    end
    main m1 (a1, b1, c1, y1);   
endmodule