当前位置: 首页 > 工具软件 > GTKWave > 使用案例 >

ubuntu安装vim,iverilog和gtkwave并进行测试与仿真。

诸葛品
2023-12-01

参考了互联网上的一些资源,如有侵权,请联系删除。折腾挺久的,也算是留一个备份。

1.去官网下载Ubuntu镜像包

(1)下载Ubuntu镜像包

2.更新Linux的镜像源

(1)备份镜像源文件

cp /etc/apt/sources.list /etc/apt/sources.backup.list

(2)直接更换清华镜像源-地址

sudo sed -i "s@http://.*archive.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list

(3)查看当前镜像源

cat /etc/apt/sources.list

(4)更新系统

sudo apt-get update

(5)更新系统软件

sudo apt-get update

3.下载中文输入法

(1)打开终端,输入一下命令

sudo apt update
sudo apt-get install ibus-pinyin

(2)重启之后输入以下命令,在输入法中添加汉语中的拼音,然后进入输入设置添加中文输入法。切换输入法的方式为windows+space。如果设置完没反应,可重启设备。

sudo ibus-setup

4.安装vim,iverilog,gtkwave

(1)安装,通过以下命令安装对应文件

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

(2)查看是否安装成功

which vim
which iverilog
which vvp		%安装iverilog自带的
which gtkwave

5.编写文件,查看仿真波形

(1)vim创建测试文件和仿真文件

//创建文件
vim count.v		//测试文件
vim count_tb.v		//仿真文件
//count.v
module count4(out,reset,clk); 
    output[3:0] out; 
    input reset,clk; 
    reg[3:0] out; 
    
    always @(posedge clk) begin 
        if (reset)  
            out<=0;
        else       
            out<=out+1;
    end 
endmodule
//count_tb.v
`timescale 1ns/1ns 

module coun4_tp; 
    reg clk, reset;
    wire[3:0] out;
    
    
    count4 mycount(out,reset,clk);   
    
    always #10 clk = ~clk;  
    
    initial begin  
        clk=0; 
        reset=0; 
        #10    reset=1; 
        #10    reset=0; 
        #1000 $stop; 
    end 
    

    initial $monitor($time,,"clk=%d reset=%d out=%d", clk, reset, out);     
    
    
    initial begin
        $dumpfile("test.vcd");
        $dumpvars(0, coun4_tp); 
    end
endmodule
//注意testbench文件中有几行iverilog编译器专用的语句,如果不加的话后面不能生成vcd文件

initial
begin            
    $dumpfile("wave.vcd");        //生成的vcd文件名称
    $dumpvars(0, led_demo_tb);    //tb模块名称
end

(2)iverilog编译测试文件和仿真文件

iverilog count_tb.v count.v -o wave	//-o指定编译后生成可执行文件的名称wave

(3)vvp生成波形文件,vvp命令使用了-n选项是为了让testbench在执行完测试流程之后自动结束,也可以不在执行命令这里使用-n、而通过在testbench文件的initial块中添加"$finish"命令来结束。(testbentch中结束仿真推荐用$finish而不用$stop;因为$finish可以直接结束仿真并退出,而不需要手动退出,这样运行以上例子批处理后可以直接打开GTKWave窗口)

vvp -n wave -lxt2	//显示具体过程

./wave		//中间需要输入finish结束,不显示过程

//两条语句都可以,生成波形文件test.vcd文件,安照网上的,生成的应该是wave.vcd文件

(4)gtkwave查看波形文件,选择需要查看的信号,插入信号以显示波形。

gtkwave test.vcd		//打开vcd文件,查看波形
//若波形文件太大,可转换成gtkwave专用的lxt格式
cp test.vcd wave.lxt
gtkwave wave.lxt

(5)转换成vhdl文件,-tvhdl命令

iverilog -tvhdl count.v -o count.vhd
iverilog -g2012 count.vhd	//iverilog编译vhdl文件时需添加-g2012参数

(6)自动化,一键实现编译和查看波形,文件名改为.sh文件

//.sh文件
echo "开始编译"
iverilog count.v count_tb.v -o wave 
echo "编译完成"
vvp -n wave -lxt2
echo "生成波形文件"
cp test.vcd wave.lxt
echo "打开波形文件"
gtkwave wave.lxt
//1.给文件执行权限,然后执行文件
chmod u+x count.sh
./count.sh

//2.直接执行
sh count.sh

亲测可用

 类似资料: