Checks和coverage是覆蓋率驅(qū)動的驗證流程的關(guān)鍵。在驗證環(huán)境中,Checks和coverage可以被定義在多個位置。
在Classes中實現(xiàn)Checks和Coverage
uvm_monitor的派生類總是存在于agent中,因此包含必要的Checks和Coverage。下面是一個斷言檢查的簡單例子,傳輸?shù)膕ize字段是1、2、4或8。否則斷言失敗。
check也可以寫成函數(shù)的形式,例如檢查size字段的值與動態(tài)數(shù)組的size相匹配。
這兩個檢查都應(yīng)該在transfer被monitor收集時執(zhí)行。由于這些check是在同一時間發(fā)生的,所以可以封裝成一個函數(shù),這樣就只需要進行一次調(diào)用。
功能覆蓋是通過SystemVerilog covergroups實現(xiàn)的,下面是一個簡單的covergroups的例子。
這個covergroup被定義在一個從uvm_monitor派生出來的類里面。對于上述covergroup,應(yīng)該在一個函數(shù)中聲明作為coverpoints的局部變量,然后對covergroup進行采樣。
SystemVerilog沒有提供動態(tài)數(shù)組覆蓋率收集的能力,這個函數(shù)實現(xiàn)了這個功能。perform_transfer_coverage()函數(shù)會像 perform_transfer_checks()一樣,在transaction被monitor收集時調(diào)用。
在Interfaces中實現(xiàn)Checks和Coverage
InterfacesChecks被實現(xiàn)為assertions,以檢查信號協(xié)議為主。例如,一個斷言可能會檢查一個地址在有效的傳輸過程中從未出現(xiàn)過X。
在Formal FPV中,
當(dāng)property表達DUT的內(nèi)部和輸出行為時,使用assert進行檢查。
當(dāng)property表達產(chǎn)生DUT激勵的環(huán)境行為時,就使用assume約束。
控制Checks和Coverage
應(yīng)該提供一個字段來控制Checks是否被執(zhí)行和Coverage是否被收集,該字段可以通過uvm_config_db接口來控制。下面是一個使用checks_enable位來控制Checks的例子。
if (checks_enable) perform_transfer_checks();
uvm_config_db#(int)::set(this,"masters[0].monitor", "checks_enable", 0);
?
審核編輯:劉清
-
Verilog
+關(guān)注
關(guān)注
28文章
1352瀏覽量
110453 -
UVM
+關(guān)注
關(guān)注
0文章
182瀏覽量
19236 -
DUT
+關(guān)注
關(guān)注
0文章
189瀏覽量
12512
原文標(biāo)題:在驗證環(huán)境中開發(fā)Checks和Coverage
文章出處:【微信號:芯片驗證工程師,微信公眾號:芯片驗證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
在STM32F334上使用IAR開發(fā)環(huán)境和jlink的SWD接口調(diào)試,怎么設(shè)置才可以使用IAR的code coverage功能?
【大聯(lián)大世平Intel?神經(jīng)計算棒NCS2試用體驗】2.搭建OpenVino開發(fā)環(huán)境下——測試驗證開發(fā)環(huán)境
ST-Link調(diào)試開發(fā)環(huán)境介紹設(shè)置步驟
怎樣在Arduino環(huán)境中添加ESP32開發(fā)板呢
重點厘清覆蓋率相關(guān)的概念以及在芯片開發(fā)流程中跟覆蓋率相關(guān)的事項
SpinalHDL開發(fā)環(huán)境搭建步驟相關(guān)資料分享
聊聊芯片IC驗證中的風(fēng)險
SystemVerilog實用知識點:覆蓋率之Function Coverage
![SystemVerilog實用知識點:覆蓋率之Function <b class='flag-5'>Coverage</b>](https://file1.elecfans.com/web2/M00/89/2D/wKgZomR8TDGAc0leAADkFCfty84581.jpg)
基于UVM驗證環(huán)境開發(fā)測試流程
![基于UVM<b class='flag-5'>驗證</b><b class='flag-5'>環(huán)境</b><b class='flag-5'>開發(fā)</b>測試流程](https://file1.elecfans.com/web2/M00/89/66/wKgZomSCmKqAHoQMAAAxpYwXPE4642.png)
可重用的驗證組件中構(gòu)建測試平臺的步驟
![可重用的<b class='flag-5'>驗證</b>組件<b class='flag-5'>中</b>構(gòu)建測試平臺的<b class='flag-5'>步驟</b>](https://file1.elecfans.com/web2/M00/89/8B/wKgZomSHwvCAMZd1AAA9F9tRAYU977.png)
如何在Arduino IDE中安裝ESP32開發(fā)環(huán)境
![如何在Arduino IDE<b class='flag-5'>中</b>安裝ESP32<b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b>](https://file1.elecfans.com/web2/M00/8C/AC/wKgZomSvudCASHnzAADYSS0eA9c537.jpg)
編寫動態(tài)的驗證環(huán)境
![編寫動態(tài)的<b class='flag-5'>驗證</b><b class='flag-5'>環(huán)境</b>](https://file1.elecfans.com/web2/M00/8C/E1/wKgaomS0qoKAcKDjAAAW9f5pLLE341.png)
在美國VPS上設(shè)置開發(fā)和測試環(huán)境的基本步驟和技巧
![<b class='flag-5'>在</b>美國VPS上設(shè)置<b class='flag-5'>開發(fā)</b>和測試<b class='flag-5'>環(huán)境</b>的基本<b class='flag-5'>步驟</b>和技巧](https://file1.elecfans.com//web2/M00/F2/53/wKgZomZ5FlSAM_bKAAAoKJo7Gxo591.png)
評論