uvm覆蓋率收集常用工具


簡介


可通過 -cm_hier 配置文件來控制覆蓋率收集范圍

 

Coverage Metrics覆蓋指標:


-cm

vcs使用編譯選項 -cm (line+cond+tgl)生成simv.vdb文件夾,仿真選項中使用-cm (line+cond+tgl),會在simv.vdb/snps/coverage/db/testdata/your_cm_name下產生覆蓋率xml文件;

-cm_name

編譯選項or仿真選項 -cm_name your_cm_name 將會生成覆蓋率文件:simv.vdb/snps/coverage/db/testdata/your_cm_name;

-cm_dir

默認情況下,vcs會編譯出可執行文件simv,同時,會生成simv.vdb,如果使用了編譯選項-o simv_name,可執行文件會更名為simv_name,而vdb文件的名字會變成simv_name.vdb;

編譯選項 -cm_dir simv_path_name,可以獨立指定vdb的路徑和文件名。vcs -cm tgl -cm_dir /net/design1/mycm source.v,會在/net/design1下生成mycm.vdb;

如果在編譯選項中指定了cm_dir,則默認此simv的所有coverage數據會產生在其指定路徑;

仿真選項-cm_dir simv_path_name,僅指定本次仿真的coverage數據存放路徑;

-cm_dir 優先級大於-o;

在使用urg時,用-dir 載入各個vdb文件夾:urg -full64 -dir /net/design1/my_cov_info -dir /net/design1/int_dat_files;

 

merge


在一次編譯多次仿真時,可在仿真選項中使用cm_dir 或 cm_name 來改變存放覆蓋率文件的名稱和位置,以避免各個仿真的覆蓋率文件被覆蓋;

urg -full64 -dir simv.vdb simv1.vdb simv2.vdb -dbname mergedir/merged 會將所有覆蓋率xml文件合並在mergedir.vdb/snps/coverage/db/testdata/merged下,並產生報告文件urgReport;

 

VCS相關命令


常用編譯選項:
-cm

可選擇line | cond | fsm | tgl | branch | assert,如-cm line+cond+tgl

-cm_dir

-cm_name

-cm_hier filename

控制覆蓋率收集范圍

-cm_tgl mda

使能多維數組的toggle coverage 收集

常用仿真選項:
-cm

-cm_dir

-cm_name

-covg_cont_on_error

當仿真運行到 illegal functional coverage bin,將會繼續運行

-covg_disable_cg

關閉所有的功能覆蓋率covergroups

-covg_dump_range

保存bin的定義,配合urg的-group show_bin_values,將會把bin的定義生成到report中

實用的選項:

-covg_disable_cg編譯選項、仿真選項

若作為編譯選項,則關閉covergroup並忽略其實例相關的語句;

若作為仿真選項,則僅關閉covergroup;

可用於分析function coverage帶來的性能降低;

-cg_coverage_control=0

從0ns關閉function coverage,但可以使用$cg_coverage_control系統函數再次打開;

-cm_glitch period 編譯選項、仿真選項

用於避免毛刺帶來的多余coverage,如–cm_glitch 0可過濾delta cycle 毛刺。period的單位是timeunit;

作為編譯選項時,可過濾所有類型的覆蓋率;

作為仿真選項時,僅過濾toggle coverage;

系統函數:
系統函數可以在運行期動態查詢或修改覆蓋率選項;

系統函數需要編譯選項和仿真選項 -cm;

$cm_coverage(mode,type,include_hierarchy,"module_or_instance",...)

查詢正在收集的覆蓋率類型,使能或關閉某些覆蓋率類型;

$cm_get_coverage and $cm_get_limit

 

使用URG及其參數:


利用urg產生覆蓋率報告,如:urg -full64 -dir simv.vdb -report both & 將在both文件夾產生report;

-dir directory_name

用於處理的原數據庫,可跟多個vdb文件,空格隔開;

-f file_name

用於處理的原數據庫的filelist;

-dbname dirname/testname

merge覆蓋率將其生成在dianame.vdb文件夾下,若無testname,則testname默認為test;

-noreport

不產生report,常配合 -dbname 使用

-elfile <file>

urg -elfile filename.el,用於加載el文件;

-elfilelist <filelist>

用法同verilog的filelist;

-format text

僅生成text報告;

-format both

生成test和html報告;

-hier filename

用法同vcs命令選項;

-line nocasedef

不計算default case的line coverage;

-show brief

report中僅顯示未覆蓋的部分;

-show tests

顯示是哪些testcase覆蓋到了此處,可搭配-show maxtests N(默認3)使用;如果是merge后的vdb文件,那么則無法看到具體的testcase;

 

用DVE查看coverage:


-使用 dve -full64 -cov -dir simv.vdb& 打開圖形界面;

生成驗證計划

hvp genxls -lca -plan ei_SoC_planfile.hvp

一個簡單的ei_SoC_planfile.hvp文件如下

生成的驗證計划

反標覆蓋率

hvp annotate -lca -plan ../plan/ut_test_plan.xml -dir ./simv.vdb -plan_out ../plan/ut_test_plan_out.xml -hvm_source_missing



參考原文鏈接:https://blog.csdn.net/scuGordenZhang/article/details/107058172


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM