VCS仿真和多个test用urg工具生成coverage文件verdi查看

您所在的位置:网站首页 VCS工具使用 VCS仿真和多个test用urg工具生成coverage文件verdi查看

VCS仿真和多个test用urg工具生成coverage文件verdi查看

#VCS仿真和多个test用urg工具生成coverage文件verdi查看| 来源: 网络整理| 查看: 265

VCS仿真可以分成两步法或三步法, 对Mix language, 必须用三步法。我呢,因为运用都是简单的非mix language,所以经常用一步法,因为这样省劲,但是对于跑regression最好还是两步法。VCS对应的waveform工具有DVE和Verdi, DVE因为是原生的,所以VCS对DVE非常友好。但DVE已经过时了,其对uvm等新feature支持的不好。Verdi是Debussy公司的产品,现在已被Synopsys收购并着力发展,说以Verdi是未来的潮流。所以此文的dump fsdb波形和查看coverage都用verdi. 具体来说VCS两步是:

编译verilog文件成为一个可执行的二进制文件命令为:vcs source_files

运行该可执行文件:./simv

当然,类似于NC,也有一步运行方式,那就是加-R,表示编译后立即执行。

VCS使用使用实例

我的此例子涉及task和 v a l u e value valueplusargs等verilog语法,这里(https://blog.csdn.net/limanjihe/article/details/52325930)可以复习下。此例子的vcs命令是:

vcs --sverilog -R -fsdb -ucli -do run_vcs.tcl -cm line+tgl+branch+assert -cm_name test1 +test_name=test1 tb_top.v vcs -sverilog -R -fsdb -ucli -do run_vcs.tcl -cm line+tgl+branch+assert -cm_name test2 +test_name=test2 tb_top.v verdi -cov -covdir simv.vdb/ &

简单解释一下这里的选项: -sverilog是说支持sv语法; -R表示编译后立即执行; -fsdb表示dump fsdb文件 -ucli -do run_vcs.tcl表示要执行这个仿真tcl控制; -cm line+tgl+branch+assert表示 coverage覆盖line/toggle/branch/assert ;-cm_name test1表示生成coverage的一个test的目录名称test1(仿真后会生成simv.vdb/snps/coverage/db/testdata/test1);+test_name 表示要传递给TB一个test_name 参数。

例子的verilog代码文件top_tb.v :

module tb_top(); reg clk, rst, load; wire [3:0] out; always #5 clk=~clk; reg [255:0] test_name; initial begin clk=1'b0; rst=1'b0; load=0; #30; $value$plusargs("test_name=%s",test_name); if(test_name=="test1") test1; else if(test_name=="test2") test2; #70; $finish; end task test1; rst=1'b1; #10 load=0; endtask task test2; rst=1'b1; load=1; #10 load=0; endtask counter u_counter(.reset(rst), .clk(clk), .load(load), .load_value(4'h8), .q(out)); endmodule module counter(reset,clk,load,load_value,q); input reset,clk; input load; input [3:0] load_value; output[3:0] q; reg[3:0]q; reg[3:0]count; always@(posedge clk) if(!reset) q


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3