代码覆盖率说明(个人总结)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
代码覆盖率说明
一、指令介绍
代码覆盖率分为行覆盖率、条件覆盖率、状态机覆盖率和翻转覆盖率。在vcs 仿真工具下覆盖率信息存储在 .cm 文件中,使用 urg 工具解析、合并和生成报告;在ncsim 仿真工具下覆盖率信息存储在icc.data 文件中,使用i ccr 工具解析、合并和生成报告。代码覆盖率指
令主要包括编译、运行和生成覆盖率报告三个部分,指令结构大体同功能覆盖率。
为了工具的统一性和方便界面提取,先做如下规定:
覆盖率数据库文件夹均放在 CovData 目录下, ncsim 生成的放入 ncsim 子目录、
vcs 生成的放入 vcs 子目录。
覆盖率报告均放在 CovReport 目录下, ncsim 生成的放入 ncsim 子目录、 vcs 生
成的放入 vcs 子目录。
每条用例都生成独自的同用例名的覆盖率数据库和覆盖率报告文件夹。
最后生成总的覆盖率数据库和覆盖率报告文件夹,名称为total 。
文档指令描述中,{TC_NAME} 表示匹配用例名。
1、vcs 仿真环境
1)样例
rm -r simv* CovData/vcs/* FcovReport/vcs/* CovReport/vcs/*
vcs -lca +v2k -sverilog -cm line+cond+fsm+tgl -cm_dir
CovData/vcs/test_1.cm
+define+marco=VCS+ test_1.sv
./simv -cm line+cond+fsm+tgl -cm_dir CovData/vcs/test_1.cm
+ntb_random_seed=666666 2>&1 |tee log/vcs/test_1.log
vcs -lca +v2k -sverilog -cm line+cond+fsm+tgl -cm_dir CovData/vcs/test_2.cm
+define+marco=VCS+ test_2.sv
./simv -cm line+cond+fsm+tgl -cm_dir CovData/vcs/test_2.cm
+ntb_random_seed=888888 2>&1 |tee log/vcs/test_2.log
vcs -lca +v2k -sverilog -cm line+cond+fsm+tgl -cm_dir CovData/vcs/test_3.cm
+define+marco=VCS+ test_3.sv
./simv -cm line+cond+fsm+tgl -cm_dir CovData/vcs/test_3.cm
+ntb_random_seed=555555 2>&1 |tee log/vcs/test_3.log
urg -dir CovData/vcs/test_1.vdb -metric group -report
FcovReport/vcs/test_1 -format text urg -dir CovData/vcs/test_2.vdb -
metric group -report FcovReport/vcs/test_2 -format text urg -dir
CovData/vcs/test_3.vdb -metric group -report FcovReport/vcs/test_3 -
format text urg -dir CovData/vcs/*.vdb -metric group -report
FcovReport/vcs/total -format text
urg -dir CovData/vcs/test_1.cm -metric line+cond+fsm+tgl -report
CovReport/vcs/test_1 -format text
urg -dir CovData/vcs/test_2.cm -metric line+cond+fsm+tgl -report
CovReport/vcs/test_2 -format text
urg -dir CovData/vcs/test_3.cm -metric line+cond+fsm+tgl -report
CovReport/vcs/test_3 -format text
urg -dir CovData/vcs/*.cm -metric line+cond+fsm+tgl -report CovReport/vcs/total -format
1
text
2)指令说明
(1)编译
-lca:增加 LCA 的支持, vcs0812 及以后的版本需要,此前的版本不需要。
-cm line+cond+fsm+tgl :增加编译期添加行覆盖率、条件覆盖率、状态机覆盖率、翻转
覆盖率信息。
-cm_dir CovData/vcs/{TC_NAME}.cm :将编译期生成的覆盖率信息(不包括功能覆
盖率)放到 CovData/vcs 目录中,若目录不存在,将自动创建。生成的代码覆盖率数据
库文件
夹以 cm 后缀,名称要求同用例名,例:test_1.cm。
注:在 vcs 仿真器下,代码覆盖率信息(行覆盖率、条件覆盖率、状态机覆盖率、翻转
覆盖率)存放在 cm 后缀的数据库文件夹中;功能覆盖率和断言覆盖率存放在vdb 后缀的数
据库文件夹 0 中。 cm 后缀的数据库的生成与编译和运行阶段都有关,vdb 后缀的数据库的
生成仅与运行阶段有关。
(2)运行
-cm line+cond+fsm+tgl :增加运行期添加行覆盖率、条件覆盖率、状态机覆盖率、
翻转覆盖率信息。
-cm_dir CovData/vcs/{TC_NAME}.cm :将运行期生成的覆盖率数据库放到CovData/vcs
目录中,若目录不存在,将自动创建。代码覆盖率信息将写入以cm 后缀的数据库文件夹中,
生成的功能覆盖率数据库文件夹以vdb 后缀,名称要求同用例名,例:test_1.vdb。
注:在运行期中,-cm_dir 命令只能指定代码覆盖率信息存放的数据库文件夹,而以功
能覆盖率信息存放的数据库文件夹是不能指定后缀的,且存放路径同代码覆盖率数据库文件
夹,因此虽然指定了cm 后缀,但生成的功能覆盖率数据库文件夹仍以.vdb 后缀。
(3)生成覆盖率报告
urg -dir CovData/vcs/{TC_NAME}.cm -metric line+cond+fsm+tgl -report
CovReport/vcs/{TC_NAME} -format text :用于生成各个用例的代码覆盖率报告。
urg -dir CovData/vcs/*.cm -metric line+cond+fsm+tgl -report CovReport/vcs/total -format
text:用于生成总的代码覆盖率报告。
其中: -dir 用于读入指定目录下指定覆盖率数据库 XXX.cm 文件夹,通配符 * 表示读
入指定目录下所有覆盖率数据库文件夹。
-metric 用于指定输出覆盖率类型, line 表示行覆盖率、 cond 表示条件覆盖率、
fsm 表示状态机覆盖率, tgl 表示跳转覆盖率。这里必须和仿真环节相对应,否则没有该类型
的
覆盖率信息, urg 工具会报错。
-report 用于指定输出覆盖率报告的路径,每个用例的代码覆盖率报告要求
分别输出到同用例名 CovReport/vcs/{TC_NAME} 的目录下,总的代码覆盖率报告要求输出
到
CovReport/vcs/total 的目录下。若指定的目录不存在,将自动创建。
-format 用于指定输出报告的格式,text 表示输
出文本格式,不指定则输出html
格式。
注:由于指定了其他的覆盖率类型,因此此时在输出功能覆盖率报告时需要添加-metric group。否则不能得到功能覆盖率的报告。
2、ncsim 指令介绍