iverilog & gtkwave基础练手

本文详细介绍了如何使用Iverilog进行Verilog代码的编译,并利用gtkwave进行波形仿真。首先,通过安装Iverilog和gtkwave,接着从GitHub克隆代码并编译生成simple.vvp文件。通过具体的代码示例,演示了如何设置输入信号,监控输出信号的变化,以及如何使用gtkwave查看仿真波形。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

github地址:https://github.com/albertxie/iverilog-tutorial

先安装iverilog和gtkwave。

sudo apt-get install iverilog
sudo apt-get install gtkwave

从github克隆代码,进行编译,编译后生成simple.vvp文件。

iverilog -o simple.vvp simple.v simple_tb.v

其中,simple.v代码内容为:

// very standard Verilog module
module simple(A, B);

   input  [3:0] A;
   output [3:0] B;

   // mix up the input bits
   assign B = { A[0], A[2], A[1], A[3] };

endmodule

simple_tb.v内容为:

module simple_tb;

   // initial values
   reg [3:0] A = 4'b1010;
   wire [3:0] B;

   initial
     begin
        // vcd dump
        $dumpfile("simple.vcd");          //指定VCD文件的名字为simple.vcd,仿真信息将记录到此文件
        // the variable 's' is what GTKWave will label the graphs with
        $dumpvars(0, s);
        $monitor("A is %b, B is %b.", A, B);    //监控A、B的值。

        // setting each elements values at each time interval, must finish with $finish
        #50 A = 4'b1100;
        #100 A = 4'b0000;
        #100 $finish;
     end

   // stap of module
   simple s(A, B);
endmodule

输入下列代码进行仿真:

vvp simple.vvp

输出结果为:

输出结果说明:

当A=4'b1010,B = { A[0], A[2], A[1], A[3] }时,B[3]=A[0]=0,B[2]=A[2]=0,B[1]=A[1]=1,B[0]=A[3]=1,即B=4'0011,以此类推。

然后执行下列代码查看波形:

gtkwave simple.vcd

得到波形:

通过图像可以观察到,在时间范围为100~150sec时,A=4'b1100,B=4'b0101,这与输出结果一致。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值