使能verilog2000的标准
统一所有的timescale
-f采用绝对路径;-F与-f类似,也可以采用绝对路径,同时也支持相对路径,但不允许嵌套使用。
VCS用-F解析filelist时,不允许文件嵌套使用,不支持`include “xxx.v”这种写法,改为-f便ok了。
`include "xxx.sv"
要用+incdir把xxx.sv的路径指明。
编译完成后,自动执行当前编译生成的可执行文件
初始化RTL中所有mem的所有bit初始值
初始化RTL中所有reg的所有bit初始值
-的一般是编译时用的,编译工具自带的。
+的是插件,环境,验证语言,等等加的,可扩展的,自定义的。
+libext+.v
-y XXX/memory/all/work/verilog 定义verilog的库
-f rtl_top.f
-f env.f
testbench的顶层module名字是top, 收集top下的例化的rtl顶层模块的下面所有层的覆盖率
如果用到了dw的东西
一般加上选项
-y $DC_HOME/dw/sim_ver +incdir+$DC_HOME/dw/sim_ver +libext+.v
要生成覆盖率报告,要在编译和仿真的时候,加入一个选项。 -cm line | fsm | tgl | cond , 指定生成针对什么条件的覆盖率报告。如下的makefile,就生成上述四个的覆盖率报告。注意,编译和仿真,都要加上-cm这个选项。执行 make vcs , make sim后,会生成simv.vdb文件夹,该文件夹下包含了覆盖率的内容,但是我们需要将内容生成报告,这样,才方便我们查看。生成报告,使用的是 urg命令,该命令也是属于vcs工具里面的-dir: 指定 .vdb文件夹的位置report: 指定生成报告的格式,报告格式有两种,一种网页格式,一种text格式。这里,both代表生成两种。执行 make urg后,就会生成both文件夹。 这文件夹下的文件,就是覆盖率报告了。打开dashboard.html。可以看到整体的一些信息。但是我们关心的是设计的,而不是testbench的。点击hierarchy,得到层次。点击u1,也就是设计的顶层。可以看到关于该顶层的信息。因为在顶层,都是调用各个子模块(这里是调用 band_generaterx_tx, uart_txd模块),所以没有line的覆盖率统计,但是有TOGGLE的覆盖率统计,也就是信号的翻转。从上面可以看出,对于rst_n信号,没有从1->0的翻转,而这个信号是testbench中传递的,因此看出,在testbench设计,对于rst_n信号产生,有bug。点击左下角的uart_txd_1,查看该模块的信息。 对于该设计,因为有具体的实现,所以可以看到有line的覆盖率,toggle的覆盖率,FSM的覆盖率。对于line覆盖率,从报告看出,总共有42行,覆盖到了41行。通过查看代码,可以知道是哪一行没有被执行到。对于toggle覆盖率。从报告看出,只有rst_n有问题,而这问题是testbench的的bug造成的。对于FSM的检查。从报告看出,每个状态都有被覆盖到。但是从有些状态跳转到另外的状态,没有被覆盖到。因此造成FSM的覆盖率不高。通过查看覆盖率报告,可以查找到设计的缺陷,从而进行修正。vivado调用VCS仿真可以加快工程的仿真和调试,提高效率。VCS软件最好安装VCS-MX的版本,可以混合编译Verilog和VHDL语言 由于在linux系统中个人用户各种权限被限制,导致很多地方无法正常使用软件之间的协调工作。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)