VCS查看代码覆盖率(行状态机翻转条件分支覆盖率等)
Posted xlinxdu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VCS查看代码覆盖率(行状态机翻转条件分支覆盖率等)相关的知识,希望对你有一定的参考价值。
虚拟机:VMware -14.0.0.24051
环 境:ubuntu 18.04.1
脚 本:makefile(点击直达)原来的脚本没有代码覆盖率查看功能,新添加了这个功能
文章目录
一、脚本内容
#LAB_DIR = /home/cyl/target/personal/sync_fifo
#LAB_DIR = /home/cyl/target/personal/async_fifo
#LAB_DIR = /home/cyl/target/personal/uart
#LAB_DIR = /home/cyl/target/personal/spi
#LAB_DIR = /home/cyl/target/personal/apb
#LAB_DIR = /home/cyl/target/personal/ahb2apb
DFILES = $(LAB_DIR)/*.v
# code coverage command
CM = -cm line+cond+fsm+branch+tgl
CM_NAME = -cm_name simv
CM_DIR = -cm_dir ./covdir.vdb
all :clean elab rung
all1:clean elab run cov verdi
all2:clean elab run verdi
elab:
vcs -full64 -LDFLAGS -Wl,-no-as-needed -debug_acc+all -timescale=1ns/1ns \\
-fsdb -sverilog -l comp.log \\
$DFILES \\
$CM \\
$CM_NAME \\
$CM_DIR
run:
./simv -l run.log \\
$DFILES \\
$CM \\
$CM_NAME \\
$CM_DIR
rung:
./simv -gui -l run.log \\
$DFILES \\
$CM \\
$CM_NAME \\
$CM_DIR
verdi:
verdi $DFILES \\
-ssf ./*.fsdb &
cov:
dve -full64 -covdir *.vdb &
clean:
rm -rf AN.DB \\
rm -rf DVEfiles \\
rm -rf csrc \\
rm -rf simv.* \\
rm -rf *simv \\
rm -rf inter.vpd \\
rm -rf ucli.key \\
rm -rf *.log \\
rm -rf verdiLog \\
rm -rf novas* \\
rm -rf *.fsdb \\
rm -rf *.vdb
二、讲解
VCS在统计代码覆盖率的过程中,需要在编译和仿真命令上添加对应的开关命令,生成.vdb文件记录覆盖率情况,再使用dve打开该文件进行查看覆盖率。
(1)代码覆盖率选项
# code coverage command
CM = -cm line+cond+fsm+branch+tgl
CM_NAME = -cm_name simv
CM_DIR = -cm_dir ./covdir.vdb
- -cm < coveragetype > :打开对应类型覆盖率,例如 -cm cond+tgl+lin+fsm+path为统计所有覆盖率。
- -cm_name:统计覆盖率文件名字。
- -cm_dir:指定生成.vdb文件目录。
- -cm_log+filename.log:记录仿真过程中log信息。
- -cm_nocasedef: 在统计case语句的条件覆盖率时,不考虑default条件未达到的情况。
- -cm_hier xxx.cfg:通过.cfg文件选择要查看覆盖率的模块或文件。
(2)查看方法
就上面的脚本而言,在make all查看波形之后,再make cov即可查看。或者直接make all1,用verdi查看波形,用DVE查看代码覆盖率。绿色是覆盖到的,红色是没有覆盖到的。总之是编译仿真完成之后,make cov就能查看。
方法二,通过文本格式查看
作者:xlinxdu
版权:本文是作者原创,版权归作者所有。
转载:未经作者允许,禁止转载,转载必须保留此段声明,必须在文章中给出原文连接。
以上是关于VCS查看代码覆盖率(行状态机翻转条件分支覆盖率等)的主要内容,如果未能解决你的问题,请参考以下文章
vcs生成覆盖率时,条件编译的顶层会被当做不同的项目,合并覆盖率时会出错,怎么解决