一:類型
line(行)覆蓋率,Toggle(跳變)覆蓋率,condition(條件)覆蓋率,FSM(狀態機)覆蓋率,path(路徑)覆蓋率
二:覆蓋率
1:行覆蓋率
一般要求100%,例如缺else,default
例子如下,缺少else,default;但這不一定是錯誤,可能故意為之;二次檢查

2:條件覆蓋率
代碼中有if語句,實際可能出現某種情況,但程序沒有覆蓋,則報告
3:Toggle coverage
信號是否有0->1,1->0的跳變;x->1,x->0不會報告

4:FSM覆蓋率
報告state1-state2沒有轉換
5:path覆蓋率
路徑是否覆蓋
三:什么時候使用覆蓋率
1:behavior code
line,condition,path,FSM
2:RTL code
line, condition,path,Toggle(not command),FSM
3:Gate-level code
Toggle
四:覆蓋率編譯執行開關
1:compile
#vcs -cm<coverage_type> <other option>;例如 -cm cond+line+tgl+fsm+path
coverage_type:
line,tgl,cond,fsm,path
2:simulation
#./simv -cm<coverage_type> <other switches>
-cm_name filename: 覆蓋率文件的名字
-cm_dir directory_of_file:覆蓋率文件所在文件;后綴為vdb
-cm_log:覆蓋率log文件

3:dve
dve -covdir *.vdb & 即可看覆蓋率文件
在dve界面,file-generate URG report-Report Format-可選中網頁或者txt方式閱讀覆蓋率文件
4:不想報告某段code或者文件的覆蓋率(比如一些在仿真時輔助的行為級代碼,后仿真時會去掉)
針對某段code屏蔽覆蓋率報告但不屏蔽綜合://VCS coverage off
//VCS coverage on
針對某段code屏蔽覆蓋率報告且屏蔽綜合 ://synopsys translate_off
//synopsys translate_on
針對某個文件屏蔽覆蓋率 :
在compile開關中添加-cm_hier<name_of_file>。-cm_hier ./filename 先在當前文件夾下新建一個文件,用gvim打開這個文件,輸入-module fs,則在報告中屏蔽這個module的報告;輸入 +module fs,則報告里只有fs的覆蓋率;輸入-file fs.v,則在報告里屏蔽fs.v文件;輸入+file fs.v,則只有文件fs的報告
