1功能覆盖率指令说明一、简介功能覆盖率指令主要包括编译、运行和生成覆盖率报告三个部分。编译时将引入功能覆盖率的定义,运行将生成功能覆盖率数据库文件夹,最后通过覆盖率报告生成工具根据功能覆盖率数据库文件夹生成对应的覆盖率报告。为了工具的统一性和方便界面提取,先做如下规定:覆盖率数据库文件夹均放在CovData目录下,ncsim生成的放入ncsim子目录、vcs生成的放入vcs子目录。覆盖率报告均放在FcovReport目录下,ncsim生成的放入ncsim子目录、vcs生成的放入vcs子目录。每条用例都生成独自的同用例名的覆盖率数据库和覆盖率报告文件夹。最后生成总的覆盖率数据库和覆盖率报告文件夹,名称为total。文档指令描述中,{TC_NAME}表示匹配用例名。二、VCS指令说明1、样例rm-rsimv*CovData/vcs/*vcs+v2k-sverilog+define+marco=VCS+test_1.sv./simv-cm_dirCovData/vcs/test_1+ntb_random_seed=666666vcs+v2k-sverilog+define+marco=VCS+test_2.sv./simv-cm_dirCovData/vcs/test_2+ntb_random_seed=888888vcs+v2k-sverilog+define+marco=VCS+test_3.sv./simv-cm_dirCovData/vcs/test_3+ntb_random_seed=555555urg-dirCovData/vcs/test_1.vdb-reportFcovReport/vcs/test_1-formattexturg-dirCovData/vcs/test_2.vdb-reportFcovReport/vcs/test_2-formattexturg-dirCovData/vcs/test_3.vdb-reportFcovReport/vcs/test_3-formattexturg-dirCovData/vcs/*.vdb-reportFcovReport/vcs/total-formattext2、指令说明(1)编译-sverilog:增加对SystemVerilog语言的支持。+define+marco=VCS+:编译的时候增加宏“VCS”。因为ncsim和vcs对功能覆盖率某些关键字和用法支持不同,需要用宏来区分。(2)运行-cm_dirCovData/vcs/{TC_NAME}:将生成的覆盖率数据库放到CovData/vcs目录中,若目录不存在,将自动创建。生成的覆盖率数据库文件夹以vdb后缀,名称要求同用例名,例:test_1.vdb。(3)生成覆盖率报告urg–dirCovData/vcs/{TC_NAME}.vdb–reportFcovReport/vcs/{TC_NAME}–format2text:用于生成各个用例的覆盖率报告。urg–dirCovData/vcs/*.vdb–reportFcovReport/vcs/total–formattext:用于生成总的覆盖率报告。其中:-dir用于读入指定目录下指定覆盖率数据库XXX.vdb文件夹,通配符*表示读入指定目录下所有覆盖率数据库文件夹。-report用于指定输出覆盖率报告的路径,每个用例的报告要求分别输出到同用例名FcovReport/vcs/{TC_NAME}的目录下,总报告要求输出到FcovReport/vcs/total的目录下。若指定的目录不存在,将自动创建。-format用于指定输出报告的格式,text表示输出文本格式,不指定则输出html格式。三、NC指令说明1、样例cov.cmd(ICCR脚本文件)test_1setTC_NAMEtest_1/test_1test_2setTC_NAMEtest_2/test_2test_3setTC_NAMEtest_3/test_3totalsetTC_NAMEtotalset_dut_modulestestmergeCovData/ncsim/*-outputtotal/totalshmkdir-pFcovReport/ncsim/$TC_NAMEload_testCovData/ncsim/$TC_NAMEsummaryreport_summary-d-instance-cgopttestFcovReport/ncsim/$TC_NAME/dashboard.txt/summarydetailreport_detail-both-d-instance-cgopttestFcovReport/ncsim/$TC_NAME/grpinfo.txt/detailrm-rirun*iccr*CovData/ncsim/*IN*mkdirFcovReport/ncsimirun-sv-svseed666666-covoverwritetest_1.sv-coverageu-covworkCovData-covdesignncsim-covtesttest_1iccr-keywords+summary+detail+test_1cov.cmdirun-sv-svseed888888-covoverwritetest_2.sv-coverageu-covworkCovData–covdesignncsim-covtesttest_23iccr-keywords+summary+detail+test_2cov.cmdirun-sv-svseed555555-covoverwritetest_3.sv-coverageu-covworkCovData-covdesignncsim-covtesttest_3iccr-keywords+summary+detail+test_3cov.cmdiccr-keywords+summary+detail+totalcov.cmd2、指令说明(1)编译-sv:增加对SystemVerilog语言的支持。(2)运行-coverageu:收集覆盖率选项,u表示基于SV的功能覆盖率。-covoverwrite:再次运行时可覆盖已生成的覆盖率数据库,不加则不能覆盖。-covwork:指定生成的cov_work目录,要求指定为CovData目录。-covdesign:指定成生的design目录,要求指定为ncsim目录。-covtest:指定生成的test目录,要求指定为{TC_NAME}目录,用于存放覆盖率数据库icc.data。(3)生成覆盖率报告-keywords+关键字+关键字…+关键字脚本:用命令行的方式启动ICCR,关键字的功能在脚本中描述。ICCR生成覆盖率报告的流程为:合并覆盖率数据库(仅用于输出总覆盖率报告)=读覆盖率数据库=输出覆盖报告(概要报告或者详细报告)。cov.cmd脚本说明:1)关键字和/关键字中间描述在-keywords中添加该关键字将执行的指令。注意,一条指令只能在一行中描述,关键字和/关键字也必须分列一行。2)在-keywords中添加的关键字顺序和关键字所对应的指令执行的顺序无关。3)每一条用例必须对应一套TC_NAME和/TC_NAME,在该套关键字描述内将给通配符$TC_NAME赋值为用例名,如:setTC_NAME{TC_NAME}。用于在每次运行用例时在-keywords中添加用例名使每次运行只输出以该条用例名命名的覆盖率报告文件,以方便界面处理。4)需在脚本中添加total和/total的关键字套,用于输出总的覆盖率报告。其中的指令包括:set:指定通配符为total;set_dut_modules:指定用例的模块名,不指定则合并不成功;merge:合并覆盖率数据库,CovData/ncsim/*表示合并CovData/ncsim/目录下的所有覆盖率数据库文件,-outputtotal表示输出合并后的覆盖率数据库至CovData/ncsim/total目录下。5)shmkdir:在配置好通配名或者合并好覆盖率数据库后需要创建覆盖率报告目录,按照要求为FcovReport/ncsim/{TC_NAME}|total。6)load_test:读指定目录下覆盖率数据库,目录为CovData/ncsim/{TC_NAME}|total。7)report_summary:输出覆盖率概要信息。-d表示输出报告为基于数据的功能覆盖率;4-instance表示为基于例化件的;-cgopt表示参详coverpoint的结果;test为用例模块名;表示将覆盖率报告重镜象至指定文件中,按照要求每条用例或总覆盖率概要信息必须保存在FcovReport/ncsim/{TC_NAME}|total/dashboard.txt文件中。这些参数都是必须的,否则输出报告有误。8)report_detail:输出覆盖率详细信息。-both表示包含所有例化件;-d表示输出报告为基于数据的功能覆盖率;-instance表示为基于例化件的;-cgopt表示参详coverpoint的结果;test为用例模块名;表示将覆盖率报告重镜象至指定文件中,按照要求每条用例或总覆盖率详细信息必须保存在FcovReport/ncsim/{TC_NAME}|total/grpinfo.txt文件中。这些参数都是必须的,否则输出报告有误。9)以上第5)至8)条每次运行时都必须执行。通过配置关键字(用例名)的方式,每运行一条用例时都启动一次ICCR输出一份该用例的覆盖率报告,所有用例运行完后再启动一次ICCR输出一份总的覆盖率报告。