天天看点

VCS中如何查看功能覆盖率与代码覆盖率

Makwfile中命令行

CM = -cm line+cond+fsm_branch+tgl                  //表示要收集的代码覆盖率类型
CM_NAME = -cn_name $(OUTPUT)                  //表示覆盖率的文件名
CM_DIR = -cm_dir ./$(OUTPUT).vdb                //表示覆盖率要存放到哪个目录下

-cm_nocasedef                                      //表示不将case语句中的default进行覆盖率的计算
-cm_hier ./vcs_cov.cfg                            //表示将vcs_cov.cfg文件中的配置加入覆盖率选项
           

// vcs_cov.cfg中的选项可以为

touch vcs_cov.cfg   
-module fsm_top   
+tree  fsm_top.fsm_moore
+module .....       
+library  +filelist
           
urg -dir *.vdb  &      //产生覆盖率d报告
firefox    urgReport   //查看覆盖率报告
           
dve -covdir *.vdb &    //用dve查看覆盖率报告
           

//如果想让某段代码不进行覆盖率统计,可使用如下特使注释代码

VCS coverage off        //只能在VCS中使用,不能在DC中使用,dc会报错
VCS coverage on
           

//或者

synopsys translate_off    //dc中不会报错
synopsys translate_on
           
//merge coverage for all test cases and generation of report files:
vcs -cm_pp $COV -cm_nocasedef -cm_name TOTAL 或者 dve -cadir *.vdb
           

//每个tb对代码覆盖率的贡献

vcs -cm_pp -b -cm line -cm_autograding 100
           

//一个编译文件夹下的代码的命令

vcs -f filelist.f -cm line+cond+fsm+tgl -debug_all