UVM学习之路(2)— 使用VCS+Verdi进行仿真调试

一、前言

Verdi最初是由Novas Softwave公司设计的,后属于了SpringSoft公司,最终SpringSoft被Synopsys公司收购,Verdi正式属于Synopsys。
Verdi可以调用第三方工具进行编译仿真产生波形文件并可以查看、可查看源代码对应的电路图,最强大之处在于可以在源代码、原理图、波形图和状态图之间进行即时跟踪,协助工程师debug。原文

参考文章 :Linux下VCS与Verdi联合仿真简易教程及例子示范

二、编写源码

编写设计文件counter.v如下所示,这是一个简单的计数器模块

module counter(
    input                   clk,
    input                   rst,
    output  reg     [7:0]   count
	);
	always @(posedge clk or negedge rst)
	begin
		if(!rst)
			count <= 0;
		else
			count <= count + 1;
	end
endmodule

编写测试文件tb.sv如下所示,

module tb;

    reg  		clk,rst_n;
    wire [7:0]  count;

    counter dut(
        .clk    (clk),
        .rst    (rst_n),
        .count  (count)
        );

    always #(5) clk = ~clk;

    initial begin
	    clk <= 0;
	    rst_n <= 0;
        #20;
        rst_n <= 1;
        #500;
  	    $display("tb counter finish.");
	    $finish;
    end

`ifdef FSDB
    initial begin
	    $fsdbDumpfile("tb.fsdb");
	    $fsdbDumpvars;
    end
`endif

endmodule

三、设置高亮

我们使用gvim编写源码的时候会发现关键字并没有高亮,所以我们要对verilog和systemverilog的语法高亮进行设置
在这里插入图片描述
我们需要从home目录下进入.vim文件夹下,如果没有,则新建一个,然后下载systemverilog语法设置文件,链接在文末,打开后可以看到如下两个文件夹,
在这里插入图片描述
然后将其中的文件分别放入对应的文件夹中即可(没有则新建文件夹),如下所示
在这里插入图片描述
然后再次打开源文件就可以看到语法高亮了
在这里插入图片描述

四、编译运行

使用如下命令进行编译,

vcs -full64 -sverilog -fsdb +define+FSDB counter.v tb.sv

其中-fsdb表示支持对fsdb相应操作,+define+FSDB相当于在文件里加上FSDB宏定义,即为了让测试文件的如下代码生效,加这两个选项即是让运行时产生.fsdb文件,这个文件是verdi所需要用的
在这里插入图片描述
编译成功如下所示
在这里插入图片描述
然后运行仿真如下所示

.simv

可以看到在当前文件夹下已经得到了tb.fsdb文件
在这里插入图片描述
使用verdi打开tb.fsdb文件

verdi tb.fsdb

Verdi打开后如下所示,点击【Get Signals】图标按钮,可以添加信号
在这里插入图片描述
将信号选中然后点击【Apply】按钮,就可以将信号添加到波形窗口了
在这里插入图片描述
添加完波形如下所示
在这里插入图片描述

五、Verdi调试

我们在编译时加入选项-debug_access+all选项表示启动调试模式-lca -kdb表示加入对Verdi的支持,

vcs -full64 -sverilog -debug_access+all -lca -kdb counter.v tb.sv

在这里插入图片描述
然后在仿真时加入-gui=verdi表示使用Verdi进行仿真
在这里插入图片描述
这样就会自动打开Verdi图形化窗口如下所示
在这里插入图片描述
点击【View】->【Signal List】打开信号窗口
在这里插入图片描述
我们按住【Shift】键将信号都选中然后右键【Add to Wavefrom】->【Add to Wave】将信号添加到波形窗口中
在这里插入图片描述
接下来我们再切回【Console】窗口,在这里插入图片描述
输入run 100命令,然后按【Enter】键执行
在这里插入图片描述
可以看到波形已经有变化了
在这里插入图片描述

六、Makefile

为了更便捷的工作,我们可以编写Makefile如下所示

#---------------------------------------------------------------------------
# files options
#---------------------------------------------------------------------------
DFILES  += counter.v
VFILES  += tb.sv


#---------------------------------------------------------------------------
# tool options
#---------------------------------------------------------------------------
TOOL_CMD	= vcs -full64
COMP_OPT	= -sverilog -debug_access+all -lca -kdb -fsdb +define+FSDB -timescale=1ns/1ps 

comp:
	$(TOOL_CMD) $(COMP_OPT) $(DFILES) $(VFILES)

run:
	./simv
	
rung:
	./simv -gui=verdi

verdi:
	verdi tb.fsdb

clean:
	rm -rf csrc simv simv.daidir *.fsdb novas.* ucli.key
	rm -rf *.log* *.vpd urgReport verdiLog

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐