如何使用vsCode+Icarus verilog+GTKwave编写并仿真verilog

本学期开设了verilog课程,本想着随便写写代码糊弄一下考试,但是光写不进行实际操作也是空谈。于是去网上百度了模拟仿真软件——嘶!一个软件20G,你怎么不杀了我?于是我只好寻求比较轻量级的软件来解决本学期的课程。
经过筛选,最后我确定了 vsCode+Icarus Verilog+GTKwave的组合形式。

代码编写部分

使用vsCode来编写代码

01vscode下载

进入vsCode官网进行下载。

02安装verilog插件

vsCode本身是不支持verilog的,需要去下载插件来进行语法高亮的显示。
安装插件
安装完成以后会有一些语法高亮
插件安装后
具体一些特性可以参考插件的描述或者点击这里查看该插件的特性。当然,如果想进行代码的自动规范化和自动生成测试代码也可以搜索相应的插件。当然效果的话…………当我没说。

自动生成测试代码(不推荐使用):链接

代码的编辑器已经搞好了,然后就是模拟仿真。

模拟仿真部分

Icarus Verilog和GTKwave用来进行模拟仿真

01软件下载

因为Icarus Verilog已经包含了GTKwave,所以只进行Icarus Verilog的下载就好。点击这里跳转到Icarus Verilog的下载页面即可。我下载的为iverilog-v11-20190809-x64_setup.exe [17.0MB].
推荐下载.exe结尾的,因为安装过程可以直接把环境变量配置好
安装过程

02基本使用

为了便于演示,先贴上我上次作业代码

功能代码,文件名:counter.v

module counter(out, clk, enable,reset);
output[7:0]  out; 
input clk, reset, enable;
reg[7:0] out;
always @ (posedge clk) begin
    if(reset) begin
        out <= 8'b0;
    end else if(enable) begin
        out <= out + 1;
    end
end
endmodule

测试代码,文件名:counter_tb.v

`timescale 1ns/1ns
module counter_tb; 
reg clk, enable, reset; 
wire [7:0] out; 
counter c1(.out(out), .clk(clk), .enable(enable), .reset(reset));
    initial begin
        enable = 1;
    end
    initial begin
        clk             = 0;
        forever #10 clk = ~clk;
    end
    initial begin
        reset = 1;
        #15 reset = 0;
        #1000 $finish;
    end
    initial
    begin            
        $dumpfile("counter_tb.vcd");        //生成的vcd文件名称
        $dumpvars(0, counter_tb);    //tb模块名称
    end 
endmodule

测试代码里下面这部分是我模拟仿真时加上去的

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

如果用Icarus Verilog+GTKwave进行仿真的话,这两行代码时必须的。

1.iverilog的使用。

01)在代码存储路径打开cmd
进入cmd
在绿框中键入cmd可快速进入当前目录的命令行界面。

2)在命令行中输入

iverilog -o "counter_tb.vvp" counter_tb.v counter.v
  • -o 指定输出文件名,这里为counter_tb.vvp
    以上命令会编译成一个vvp文件

3)然后再次在命令行输入

vvp counter_tb.vvp

vvp开始仿真,会生成一个在测试文件中通过$dumpfile("counter_tb.vcd")指定的文件(counter_tb.vcd)。
注意:如果上面的测试文件你没有加入我后加入的那几行代码,则不会出现vcd文件。

2.GTKwave使用

在命令行中输入

gtkwave counter_tb.vcd

将会打开GTKwave软件

模拟仿真
按照以上顺序选择你所需要显示的信号。


3.编写脚本*

每次都在命令行输入会很麻烦,你可以把以上命令封装到一个批处理文件中

  1. 新建批处理文件(windows可以先新建text文件再把后缀改成bat)
  2. 在里面输入以下内容
set source_module=counter
set testbentch_module=counter_tb

iverilog -o "%testbentch_module%.vvp" %testbentch_module%.v %source_module%.v
vvp -n "%testbentch_module%.vvp"
gtkwave "%testbentch_module%.vcd"
  • source_module为功能模块文件名称
  • testbentch_module为测试模块文件名称
  • 下次要对新的文件进行仿真时,只需要打开该文件,讲上面两个文件名设置为你新文件的文件名即可。
  • 要确保你测试文件中$dumpfile(filename)填写的filename为测试文件同名的.vcp文件名。
  1. 然后双击这个文件就可以直接进行模拟仿真
  • 33
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值