我是靠谱客的博主 成就棒棒糖,最近开发中收集的这篇文章主要介绍[VCS]merge coverage --- vdb mergemerge coverage --- vdb merge,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

merge coverage --- vdb merge

       前言:目前在数字电路验证中,主要还是coverage驱动型,就是说覆盖率是衡量验证工作的一个重要指标。但是在仿真过程中,会分成多个build或者说是conf,每个build下面的RTL可能是不同的。还有一种场景是:需要把IP收到的vdb同IT Level收到的vdb merge到一起,那这个过程怎么实现呢?本文将介绍一些VCS中覆盖率合并的命令,以及脚本化方法。

一、記錄一些常用的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:

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、其他用法

  1. 如果是用urg,則使用如下command:urg -dir simv.vdb &
  2. VCS收Coverage的command:-cm line+tgl+cond+fsm+assert+branch -cm_line contassign -cm_cond full+tf_foranywidth
  3. 如果修改了covergroup的name或者是採樣信號的定義,可以加如下option進行coverage merge:-flex_merge drop或者        -flex_merge reference-flex_merge union
  4. 如果是看網頁版(擴展名為.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的貢獻,以加快驗證工作的收斂。

三、注意事項

  1. 如果Hierarchy或者covergroup有修改,在Merge VDB的時候需要刪除之前的VDB數據。
  2. 如果在例化DUT的時候需要傳遞參數進去,導致生成的電路不一致,需要分別Merge,應為不同Hierarchy的module的VDB不能夠Merge在一起。
  3. 建議:在T4階段收Coverage的時候,把每天的數據Merge到一起,然後再往總的vdb裡面Merge,以免某一天的數據出錯,導致整個vdb file都不能使用。
  4. 建議Regression時每天新建一個workspace,用Linux crontab自動執行。否則,假如某天的VDB Data出錯,將無法Merge,導致的後果就是重新收Coverage

最后

以上就是成就棒棒糖为你收集整理的[VCS]merge coverage --- vdb mergemerge coverage --- vdb merge的全部内容,希望文章能够帮你解决[VCS]merge coverage --- vdb mergemerge coverage --- vdb merge所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部