我们进行验证时, 除了做功能性仿真外, 还需要做覆盖率分析, 这样可以提高验证的全面性. 通常我们可以采用仿真工具自带的覆盖率分析工具. 这方面在这里就不再详加叙述, 可以参看相关的资料. 在论坛中也有VCS的覆盖率工具使用说明.
HDLScore是SUMMIT公司的分析代码覆盖率的工具. 理解和使用该工具对自身能力的提高以及工作的效率有很大帮助.
HDLScore的工作步骤分为3个: instrument, 仿真(simulation)和报告(reporting):
具体产生文件与过程如下图所示:
1. instrument
该步骤将编译整个设计, 选择覆盖率的类型, 提取FSM和产生在仿真时使用的instrumented 的代码. 该步骤的目的是为了产生嵌入HDLSCORE系统任务和函数的代码.
shell下命令为:
$> hdli -verilog hdli.cf
其中, -verilog代表是verilog文件.
hdli.cf 是命令文件, 其中有很多对hdli的设置
典型为:
compile -f design/run.f
set_coverable_operators -all
set_coverable_statements -all
select_coverage -instance -block -path -expr -nlevel *...
extract_fsm -auto
select_fsm_coverage *
list_fsms
gen_instrumented_code
执行完命令后, 在当前目录下产生hdls_work目录.
其中有最重要的hdls.vin文件, 该文件是产生用于覆盖率分析的中间文件.
Log文件: hdli.log
2. 仿真(simulation) (遇到license问题)
$> ncverilog design/test_bench1.v hdls_work/hdls.vin +loadpli1=hdlspli:hdlscore_bootstrap +hdls+configfile+./scripts/sim.cf +access+wrc
sim.cf 是命令文件, 其中有很多对hdls的设置
典型为:
load_design hdls_work/hdls.dgn
load_coverage hdls_work/hdls.cov
save_coverage -code hdls_work/hdls.sim.cov
save_coverage -fsm hdls_work/hdls.fsm
注: license问题: 如果用hdlc那么可以仿真, 但是用命令行确不可以(why?) hdlc中命令为:
ncverilog design/test_bench1.v ./hdls_work/hdls.vin +togl+logfile=vertoggle.log +togl+master=vertoggle.mst +togl+workdir=toggle_work +togl+limit=1 +loadpli1=/_TOOLS_/dist/summit-hdlscore-/5.3.3/i686-pc-linux2.4/Linux/pli/ncv1_21/hdlspli.so:hdlscore_bootstrap +hdls+config+./hdls_work/tclconfigfile +ncsimexe+ncsim +access+rwc +ncelabexe+ncelab
3. 报告(reporting)
该步骤分析仿真后的结果, 得出文本的报告. 命令为:
$> hdlr hdlr.cf
hdlr.cf 是命令文件, 其中有很多对hdlr的设置
典型为:
load_design hdls.dgn
load_coverage hdls.sim.cov
load_coverage -fsm hdls.fsm
list_coverage -module *
list_coverage -instance *...
list_coverage -fsm -module *
list_coverage -fsm -instance *...
report_detail -module -bpesaq -both *