Cadence中的Incisive Comprehensive Coverage(ICC) solusion提供在仿真中的覆蓋率分析。
ICC中的覆蓋率類型有兩大類:
1)Code Coverage:主要檢查代碼的執行量,其中包括的小類有:Block Coverage(Branch Coverage),
Statement Coverage(Expression Coverage),Toggle Coverage。
2)Functional Coverage:主要檢查由PSL,SystemVerilog assertion,covergroup聲明的覆蓋點。也包括兩小類:基於PSL,SVA
等聲明性語句的控制導向的功能覆蓋。基於SV Covergroup的數據導向的功能覆蓋。
為了加入覆蓋率的分析功能。
1)ncelab中,加入以下define。ncelab [-coverage <coverage_types> | -covfile<coverage_configuration_file>]
[-covdut <DUT_module>]
[other_elaboration_options]
2)在ncsim中,加入如下define。ncsim [-covoverwrite] [-covworkdir <workdir>] [-covdesign <design>] [-covtest <test>]
-covoverwrite使能新的結果覆蓋輸出文件和文件夾。
-covworkdir指定workdir,默認是cov_work/design/test。剩余兩個指令類似。
如果使用irun來運行,則將上述命令加在一起即可。
irun [-coverage <coverage_types> | -covfile<coverage_configuration_file>] [-covdut <DUT_module>]
[-covoverwrite] [-covworkdir <workdir>] [-covdesign <design>] [-covtest <test>]
ICC的圖形界面叫做ICC Analyzer,通過命令iccr -gui來打開。通過命令iccr -gui -test來加載測試用例或通過圖形界面的open。GUI Mode
還有一種寫command file, iccr <command_file>來執行。
在合並不同的test的coverage時,ICC提供兩種模式:
1)Standard Merge:ICC默認的Merge behavior。首先copy the primary test model(.ucm),將secondary test中與primary test
相同的覆蓋項合並,如相同的Covergroup,SVA,FSM,expression等。
2)Union Merge:通過set_merge -union來設置。首先copy the primary test model(.ucm),將secondary test中所有的覆蓋項都
加入primary test。
merge [coverages] {<test_list> | -testfile <filename>} -output <output_test> [-message]
[coverages] ::= [-code] [-toggle] [-fsm] [-functional]
<test_list> ::=<primary_test> {<one_or_more_secondary_tests>}
Eg: merge test1 test2 test3 -output all
應用命令report_html命令來產生html格式的覆蓋率報告。
cadence不再使用ICC工具,改用IMC進行coverage分析。