Verdi/Coverage tool 学习 第2节

Merge Coverage

一、常用的VCS Command
 1.1、首先注意,需要在run simulation前(在build中)加VCS Option:
-cm line+tgl+cond+fsm+assert+branch -cm_line contassign -cm_cond full+tf+for+anywidth

 1.2、merge coverage cmd:

urg -full64 -metric line+tgl+cond+fsm+assert+branch -warn none -dbname <merge_coverage_name>.vdb \
    -dir ${vdb_path}/simv.vdb \
    -elfile ${path}/${el_file_name.el}

注意:其中-dir之後的第一個vdb數據會被認為是base data,如果產生其他vdb的RTL與base不同,將不能被Merge進來

 1.3、如果是把多條simv.vdb Merge在一起,可以用如下Command:
對於-warn none的Option需要謹慎,一般地還是不要加,把Warning信息報出來
-metric -metric line+tgl+cond+fsm+assert+branch也可以不用加,黨要提取特定的Coverage數據時再指定
urg -full64 -metric line+tgl+cond+fsm+assert+branch -warn none -dbname ${merge_cov_name}.vdb \
-report urgReport_<data> -dir  ${path_0}/simv.vdb \ 
  ${path_1}/simv.vdb \
  ${path_3}/simv.vdb \
  ${path_4}/simv.vdb \
  ${path_3}/simv.vdb \
  ${path_3}/simv.vdb \
-elfile ${el_file.el} > merge_log.out
 1.4、查看coverage:
verdi -cov -covdir <merge_coverage_name>.vdb &
 

 1.5、其他用法
如果是用urg,則使用如下command:urg -dir simv.vdb &
VCS收Coverage的command:-cm line+tgl+cond+fsm+assert+branch -cm_line contassign -cm_cond full+tf_foranywidth
如果修改了covergroup的name或者是採樣信號的定義,可以加如下option進行coverage merge:-flex_merge drop或者        -flex_merge reference或-flex_merge union
如果是看網頁版(擴展名為.html),則使用如下command打開: firefox  ${sim}/urgReport/dashboard.html
 

 1.6、如果新的simulation中,在covergroup中增加了coverpoint,并希望把新的數據與舊的merge到一起:
urg -full64 -flex_merge union -dbname <merge_coverage_name>.vdb  -dir  simv.vdb &
 

 1.7、如果新的simulation中,在covergroup中增加了coverpoint,并不想把新的數據與舊的merge到一起:
urg -full64 -flex_merge drop  -dbname <merge_coverage_name>.vdb  -dir  simv.vdb &
 

二、Coverage Result Reporting Utilities
 2.1、VCS writes coverage data to a binary database file
The database directory is named simv.vdb

 2.2、Convert to HTML:
urg –dir directory

example:   urg –dir simv.vdb
 2.3、Convert to Text:
urg –dir directory -format text

example: urg –dir simv.vdb –format text
 
 2.4、上述改變Format的方法主要用於分析各種Case對Coverage的貢獻,以加快驗證工作的收斂。
 

三、注意事項
如果Hierarchy或者covergroup有修改,在Merge VDB的時候需要刪除之前的VDB數據。
如果在例化DUT的時候需要傳遞參數進去,導致生成的電路不一致,需要分別Merge,應為不同Hierarchy的module的VDB不能夠Merge在一起。
建議:在T4階段收Coverage的時候,把每天的數據Merge到一起,然後再往總的vdb裡面Merge,以免某一天的數據出錯,導致整個vdb file都不能使用。
建議Regression時每天新建一個workspace,用Linux crontab自動執行。否則,假如某天的VDB Data出錯,將無法Merge,導致的後果就是重新收Coverage
————————————————
版权声明:本文为CSDN博主「gsithxy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/gsjthxy/article/details/88429983

上一篇:归并排序-每日手撕


下一篇:git如何获取远端仓库新分支