原文链接:https://blog.csdn.net/whik1194/article/details/103377834
通过iverilog -o wave led_demo_tb.v led_demo.v命令,对源文件和仿真文件,进行语法规则检查和编译。
如果调用了多个.v的模块,可以通过前面介绍的-y参数指定源文件的路径,否则编译报错。如果源文件都在同同一个目录,可以直接通过./绝对路径的方式来指定。
例如,led_demo_tb.v中调用了led_demo.v模块,就可以直接使用iverilog -o wave -y ./ top.v top_tb.v来进行编译
如果编译成功,会在当前目录下生成名称为wave的文件
使用vvp -n wave -lxt命令生成vcd波形文件,运行之后,会在当前目录下生成.vcd文件
如果没有生成,需要检查testbench文件中是否添加了如下几行:
initial
begin
$dumpfile("wave.vcd"); //生成的vcd文件名称
$dumpvars(0, led_demo_tb); //tb模块名称
end
使用命令gtkwave wave.vcd,可以在图形化界面中查看仿真的波形图
如果程序使用`include语句包含了头文件路径,可以通过-i参数指定文件路径,使用方法和-y参数一样。
如:iverilog -I D:/test/demo led_demo_tb.v
参数-o
这是比较常用的一个参数了,和GCC中-o的使用几乎一样,用于指定生成文件的名称。如果不指定,默认生成文件名为a.out。如:iverilog -o test test.v
找不到调用的模块,那么就需要指定调用模块所在文件夹的路径,支持相对路径和绝对路径。
如:iverilog -y D:/test/demo led_demo_tb.v
如果是同一目录下:iverilog -y ./ led_demo_tb.v,另外,iverilog还支持Xilinx、Altera、Lattice等FPGA厂商的仿真库,需要在编译时通过-y参数指定库文件的路径