代码覆盖率说明
生态环保手抄报
一、指令介绍
代码覆盖率分为行覆盖率、条件覆盖率、状态机覆盖率和翻转覆盖率。在vcs仿真工具下覆盖率信息存储在.cm文件中,使用urg工具解析、合并和生成报告;在ncsim仿真工具下覆盖率信息存储在icc.data文件中,使用iccr工具解析、合并和生成报告。代码覆盖率指令主要包括编译、运行和生成覆盖率报告三个部分,指令结构大体同功能覆盖率。
为了工具的统一性和方便界面提取,先做如下规定:
覆盖率数据库文件夹均放在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/ +define+marco=VCS+ test_1.sv
./simv -cm line+cond+fsm+tgl -cm_dir CovData/vcs/ +ntb_random_ed=666666 2>&1 |tee log/vcs/test_1.log
vcs -lca +v2k -sverilog -cm line+cond+fsm+tgl -cm_dir CovData/vcs/ +define+marco=VCS+ test_2.sv
.
/simv -cm line+cond+fsm+tgl -cm_dir CovData/vcs/ +ntb_random_ed=888888 2>&1 |tee log/vcs/test_2.log
江苏周庄vcs -lca +v2k -sverilog -cm line+cond+fsm+tgl -cm_dir CovData/vcs/ +define+marco=VCS+ test_3.sv
./simv -cm line+cond+fsm+tgl -cm_dir CovData/vcs/ +ntb_random_ed=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/ -metric line+cond+fsm+tgl -report CovReport/vcs/test_1 -format text
urg -dir CovData/vcs/ -metric line+cond+fsm+tgl -report CovReport/vcs/test_2 -format text
urg -dir CovData/vcs/ -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 text
2)指令说明
(1)编译
-lca:增加LCA的支持,vcs0812及以后的版本需要,此前的版本不需要。
-cm line+cond+fsm+tgl:增加编译期添加行覆盖率、条件覆盖率、状态机覆盖率、翻转覆盖率信息。
-cm_dir CovData/vcs/{TC_NAME}.cm:将编译期生成的覆盖率信息(不包括功能覆盖率)
放到CovData/vcs目录中,若目录不存在,将自动创建。生成的代码覆盖率数据库文件夹以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用于读入指定目录下指定覆盖率数据库文件夹,通配符 * 表示读入指定目录下所有覆盖率数据库文件夹。
-metric用于指定输出覆盖率类型,line表示行覆盖率、cond表示条件覆盖率、fsm表示状态机覆盖率,tgl表示跳转覆盖率。这里必须和仿真环节相对应,否则没有该类型的覆盖率信息,urg工具会报错。
-report用于指定输出覆盖率报告的路径,每个用例的代码覆盖率报告要求分别输出到同用例名CovReport/vcs/{TC_NAME}的目录下,总的代码覆盖率报告要求输出到CovReport/vcs/total的目录下。若指定的目录不存在,将自动创建。
-format用于指定输出报告的格式,text表示输出文本格式,不指定则输出html格式。
注:由于指定了其他的覆盖率类型,因此此时在输出功能覆盖率报告时需要添加-metric group。否则不能得到功能覆盖率的报告。
2、ncsim指令介绍
账户余额查询1)样例
d(ICCR脚本文件)
<test_1>
t TC_NAME test_1
</test_1>
安装路由器
<test_2>
t TC_NAME test_2
</test_2>
<test_3>
t TC_NAME test_3
</test_3>
<total>
t TC_NAME total
t_dut_modules test DUV_TEST
merge CovData/ncsim/* -output total
</total>
sh mkdir -p FcovReport/ncsim/$TC_NAME
sh mkdir -p CovReport/ncsim/$TC_NAME
load_test CovData/ncsim/$TC_NAME
<summary>
<code>
report_summary -module -best DUV_TEST > CovReport/ncsim/$TC_
</code>
<func>
report_summary -d -instance -cgopt test > FcovReport/ncsim/$TC_
</func>
</summary>
<detail>
<code>
report_detail -both -module -best DUV_TEST > CovReport/ncsim/$TC_
</code>
<func>
report_detail -both -d -instance -cgopt test > FcovReport/ncsim/$TC_李沁体重
</func>
</detail>
姓氏王的由来
rm -r irun* iccr* CovData/ncsim/* FcovReport/ncsim/* CovReport/ncsim/* IN*
mkdir FcovReport/ncsim
irun -sv -sved 666666 -covoverwrite test_1.sv -coverage a -covwork CovData -covdesign ncsim -covtest test_1
iccr -keywords+summary+detail+code+func+test_d
irun -sv -sved 888888 -covoverwrite test_2.sv -coverage a -covwork CovData -covdesign ncsim -covtest test_2