RISC-V开发与应用学习系列——Icarus & gtkwave安装和使用

Icarus & gtkwave介绍

Icarus Verilog是一个轻量、免费、开源的Verilog编译器,基于C++实现,开发者是 Stephen Williams ,遵循 GNU GPL license 许可证,安装文件中已经包含 GTKWave支持Verilog/VHDL文件的编译和仿真,命令行操作方式,类似gcc编译器,通过testbench文件可以生成对应的仿真波形数据文件,通过自带的GTKWave可以查看仿真波形图,支持将Verilog转换为VHDL文件1

Icarus & gtkwave安装

下载地址

官网:Icarus官网
云盘(工具版本:20220611):百度云盘, 提取码:wgqt

安装步骤

安装

一路点Next即可,到这个界面时选择“Full Installation”,这样编译仿真工具iverilog和波形查看工具GTKWave都可以安装上了,点击Next。
在这里插入图片描述
到这个界面时,这两个选项都不要去勾选了,首先我们一般是在power shell中用命令行的方式调用的,所以是否在桌面上创建快捷方式意义不大;其次,我们稍后会手动设定iverilog(编译工具), vvp(仿真工具)和gtkwave(波形查看工具)path的系统变量,点击Next,再点击Install即可完成安装。
在这里插入图片描述

系统环境变量设置

  • 在“此电脑”上右键,点击“属性”,点击最右边的“高级系统设置”,点击下方的“环境变量”,并双击“系统变量”框中的“Path”。
    在这里插入图片描述
  • 点击右上角“新建”,把刚才安装Icarus目录下的bin和gtkwave/bin两个目录的完整路径添加到环境变量中,这样就实现了再power shell中识别iverilog,vvp和gtkwave命令了。
    在这里插入图片描述

Icarus & gtkwave使用实例

下面以Verilog版“Hello world”的计数器的实现和仿真平台搭建来演示Icarus如何实现Verilog代码的编译,仿真和结果波形查看。

代码

RTL实现:counter.v

`ifndef __COUNTER_V__
`define __COUNTER_V__
module counter(
    output reg [3:0] counter,
    input clk,
    input rst_n
);

    always @(posedge clk or negedge rst_n) begin
        if(~rst_n) begin
            counter <= 4'd0;
        end
        else begin
            counter <= counter + 1;
            `ifdef FPGA_SIM
            $display("counter = %0d @%0t", counter, $time);
            `endif
        end
    end
endmodule
`endif

TB:tb.v

`timescale 1us/1ns
`include "counter.v"

module tb();
    wire [3:0] counter;
    reg clk;
    reg rst_n;

    counter U_counter(
        .clk(clk),
        .rst_n(rst_n),
        .counter(counter)
    );

    always begin
        #0.5;
        clk = ~clk;
    end

    initial begin
        clk = 1'b0;
        rst_n = 1'b0;
        #2.3;
        rst_n = 1'b1;
        #20;
        $finish();
    end

     initial begin
        $dumpfile("tb.vcd");
        $dumpvars(0, tb);
    end

endmodule

编译

打开Windows的PowerShell,进入对应的实例演示目录:
在这里插入图片描述
输入如下命令:

> iverilog -o simv -c iverilog_com_paras.txt -g2012 -s tb

其中simv是编译生成的可执行文件名字,iverilog_com_paras.txt是源文件list外加一系列相关的参数。推荐使用"-c 源文件list"的方式作为编译选项,这样一旦源文件有变动只需要修改源文件list即可而不用修改整个编译命令,同时使用这种方式编译命令看起来更加简洁。

仿真

> vvp -l run.log simv

其中run.log就是仿真过程产生的打印log。

结果波形查看

> gtkwave tb.vcd

在这里插入图片描述
类似于Verdi或者Modelsim,可以通过拖拽信号的方式把想要观察的信号拉到“Singals”框中,对应的信号就在“Waves”中显示出来了。同时可以通过“Files->Write Save File”和“Files->Read Save File”保存和导入关心的信号列表文件"*.gtkw"。

简单的参数介绍

iverilog

-o:指定生成文件的名称。如果不指定,默认生成文件名为a.out;
-c:指定输入的编译命令文件,其中包含源文件list,include命令,define命令等
例如本例中的iverilog_com_paras.txt,

+define+FPGA_SIM
+timescale+1ns/1ps

+incdir+./
tb.v

所包含的编译命令有:

  • +define+:编译需要的宏定义;
  • +timescale+:指定的仿真精度;
  • +incdir+: 编译所参考的include目录;
  • tb.v:源文件

-gxxx: 所支持的Verilog标准,支持的参数有 -g1995|-g2001|-g2005|-g2005-sv|-g2009|-g2012;
-s: 指定TOP module的名字作为仿真开始执行的入口。

vvp

-l:指定仿真过程中打印信息生成的log名。

参考


  1. 全平台轻量开源verilog仿真工具iverilog+GTKWave使用教程 ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值