|
发表于 2013-9-3 20:20:09
|
显示全部楼层
回复 remnant
感谢您的回复,讲解的非常详细,这个地方懂了,非常感谢!
我想请问一下,如果使用 ...
E2TML 发表于 2013-9-3 19:17
仿真:
ncvhdl ....
ncvlog ....
ncelab -coverage B:E:F:U -covfile $COV_CFG_IUS -covfile $UNCOV_CFG_IUS -covdut $DUT_NAME
ncsim -covoverwrite -covworkdir ./ncsim.vdb -covdesign $TEST_TOP_NAME -covtest $TEST_NAME
说一下各个参数的意思:
1. $COV_CFG_IUS为配置文件,其内容为那些被覆盖率检测覆盖的模块具体记录的coverage配置,比如:
set_assign_scoring
set_branch_scoring
set_statement_scoring
set_subprogram_scoring -used *
set_com -on
set_expr_scoring -all -sop
set_fsm_scoring -hold_transition
set_fsm_reset_scoring
set_fsm_arc_scoring
上面这个配置文件,就设定了对于assign语句、branch、fsm等类型coverage的具体配置。
2. $UNCOV_CFG_IUS,为设定哪些模块需要进行覆盖率统计的文件,内容范例:
select_coverage -bef -instance fmxxx_test_top.DUT...
select_coverage -bef -instance fmxxx_test_top.DUT.U_lpcd_top...
deselect_coverage -bef -instance fmxxx_test_top.DUT.U_digit_top...
3. $DUT_NAME,是DUT的module名字(注意不是例化名);
4. $TEST_TOP_NAME,是你的test顶层module名字;
5. -coverage B:E:F:U,是设定这些coverage仿真类型;
其中,B=branch, F=fsm, U和E我忘记了,你可以自己查查
6. $TEST_NAME,是你这次跑的仿真case名字,这个你自己起就好;
coverage的database存储于./ncsim.vdb中。
查阅:
ius的覆盖率查阅工具为iccr,图形界面的。如果只是看单个case的coverage,那么直接:
iccr -gui,然后在图形界面里选择对应的test的database就行。
如果有merge的需要:
先,merge test1 test2... -output merged;
再,iccr -gui;然后在图形界面里选择名字叫merged的database就可以;
上面这些是我为公司项目编写的通用环境中的一部分,你可以修改一下直接使用。
$COV_CFG_IUS文件内容,可以直接复制,通用设定,toggle coverage不统计,没有太大意义。
$UNCOV_CFG_IUS文件,很容易看懂,你照着修改一下,那些memory仿真模型之类的deselect就ok。 |
|