Verilog到VCS到Verdi

如何检查Verilog仿真结果
打印log显示数值信息:方便直观显示结果,知道仿真是否通过。多用于大规模仿真检查结果
$display
%d:十进制
%h:十六进制
%o:二进制
%f:十进制浮点
%t:时间格式
%s:字符串格式
%m:当前模块层次

`timescale 1ns/1ps
module testbench();
	reg in1,in2;
	wire out;
	initial begin
		#5;
		$display("test display function:%d,%t",in1,$time);
	end
endmodule

波形方式:方便Debug定位问题
FSDB波形

系统任务:
以下最好单独写在一个initial块中
$fsdbDumpfile(“file.fsdb”); 指定波形的文件名
$fsdbDumpvars(num,instance); 选择要保存的波形

fsdbDumpvars用法:
fsdbDumpvars(level,scope);
默认不加参数保存所有信号波形

fsdbDumpvars(0,top_module); //保存top_module下所有波形
fsdbDumpvars(2,top_module.dut); //保存dut后两个层次的波形

在仿真前必须先指定要观测的波形,才能看到信号完整的变化过程

简单地跑下流程:
mkdir lab:创建一个文件夹

gvim adder.v:写加法器代码

module adder(plus_a,plus_b,sum_out);

input [9:0] plus_a,plus_b;
output [10:0] sum_out;

assign sum_out=plus_a+plus_b;

endmodule

gvim main.v:写tb代码

module main();

reg  [9:0] in1,in2;
wire [10:0] out;

adder DUT(.plus_a(in1),.plus_b(in2),.sum_out(out));

initial begin
	#10;//This code is necessary
    in1=10'd30;
    in2=10'd27;
    $display("#################lesson 4 example################ ");
    $display("plus_a is%d;plus_b is%d;sum_out is%d", in1,in2,out);
    #20;
    in1=10'd1000;
    in2=10'd900;
    $display("plus_a is %d;plus_b is %d;sum_out is %d", in1,in2,out);
    $display("#################################################");
    #10;
    $finish;
end

initial begin
    $fsdbDumpfile("adder_tb.fsdb"); //记住这个文件名
    $fsdbDumpvars();
end

endmodule

单独写个timescale.v

`timescale 1ns/1ps

gvim flist.f:写file list 文件,把.v吃进去

./timescale.v
./adder.v
./main.v

创建一个sh文件写脚本:gvim run_vcs.sh

//此脚本使用 /bin/bash 来解释执行
#!/bin/bash
echo "####### start running VCS ##############"

//-R 编译后直接执行
//-fsdb 使工具可识别fsdb指令
//-f flist.f 吃进flist文件
vcs -R -full64 -fsdb -f flist.f

echo "########### finish VCS #################"

给这个sh权限:

//可读可写可执行
chmod 777 ./run_vcs.sh

运行vcs:

./run_vcs.sh

如果有error会提示,然后debug。vcs运行完后打开verdi

//最后的文件名就是fsdbDumpfile中的名字
verdi -f flist.f -ssf adder_tb.fsdb 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值