下面是知友(浮沉野马)的文章中的一部分:

Vscode的插件,调用iverilog编译,生成.o文件。vvp命令可以生成.vcd文件,gtkwave可以直接打开.vcd文件查看波形。
下面我们摆脱vscode编辑器的束缚,在CMD敲命令行代码,调用iverilog编译生成.o文件,然后用vvp命令生成.vcd波形文件(需要在testbench仿真模块"tb_code"里添加下面的代码,不然不会生成.vcd文件),然后用gtkwave打开.vcd波形文件查看波形。
下面展示一些 内联代码片

/* 生成vcd波形文件,用iverilog+GTKwave进行仿真所需的临时的vcd波形文件 */
initial begin
	$dumpfile("./build/wave.vcd");  // 指定VCD文件的名字为wave.vcd,仿真信息将记录到此文件
	$dumpvars(0, tb_code );  // 指定层次数为0,则tb_code 模块及其下面各层次的所有信号将被记录
	#10000 $finish;
end

网上找资料也会看到有人在激励模块(仿真模块)添加这样的代码:

initial begin
	$dumpfile("wave.vcd");  // 指定VCD文件的名字为wave.vcd,仿真信息将记录到此文件
	$dumpvars(0, tb_code );  // 指定层次数为0,则tb_code 模块及其下面各层次的所有信号将被记录
end

我个人是因为希望把编译仿真生成的文件都放到"build"文件夹里,源代码都放到"src"文件夹里,所以我用的是"$dumpfile("./build/wave.vcd");"。

但是很多插件只能支持网上的那种最简单的写法,不然找不到.vcd文件。

还有就是"#10000 $finish;"是怕你一直仿真停不下来,按ctrl+c可强制结束。

然后我们在vscode按下" Ctrl+~ "打开cmd终端(或者点击开始菜单,搜索cmd,但是要cd到工程文件夹)

输入:

md build
iverilog -o ./build/a.out ./src/tb_code.v ./src/code.v
vvp -n ./build/a.out
gtkwave ./build/wave.vcd

这几个命令很好理解。
“md build"创建build文件夹用于存放编译仿真生成的文件
./src/或者说是.\src\ 源代码source都放在了src文件夹里,”."(点)的意思是当前位置。

iverilog作用是编译文件,比如设计模块的代码和仿真模块的代码都在一个test.v文件里,那么编译这个文件只需要命令"iverilog test.v"

可是如果设计模块代码写在了code.v文件里,仿真模块的代码写在了tbcode.v文件里,那么只需要把所有的文件名字全都缀在后面即可"iverilog code.v tb_code.v"

iverilog的参数"-o “是可以省略的,”-o"命令指定编译后生成的.out文件的名字,如果不指定会生成默认的名字,这里我们"-o ./build/a.out"命令生成的是build文件夹下的a.out文件。

"vvp a.out"命令是生成.vcd波形文件,需要在testbench仿真模块(激励模块)添加几行代码(前面有说)

vvp 的“ -n ”参数其实没啥用,因为在仿真模块里,“vscode 编译swift vscode 编译verilog_visual studio codestop"暂停仿真 ,暂停的话其实就没有结束,你需要输入"finish"才能结束,你输入"exit”、“exit()”、“ctrl+c”、“ESC”、“stop”、":exit"全都没有用!当然继续仿真100ns我其实不太清楚,在vivado却很方便。"-n"的意思就是把"vscode 编译swift vscode 编译verilog_测试工具_02finish"处理了,权宜之计,更多的仿真功能我也不太会。

"gtkwave wave.vcd"意思就是用gtkwave.exe打开.vcd文件,当然你也可以用其他的软件打开。然后就可以看到波形了

当然如果你安装了这个插件WaveTrave,你甚至可以在vscode中直接双击打开你得.vcd文件。

标题自己照着文章中的步骤操作的

vscode 编译swift vscode 编译verilog_vscode_03

vscode 编译swift vscode 编译verilog_测试工具_04

vscode 编译swift vscode 编译verilog_vscode_05