0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在驗(yàn)證環(huán)境中開發(fā)Checks和Coverage的步驟

芯片驗(yàn)證工程師 ? 來源:芯片驗(yàn)證工程師 ? 2023-06-12 09:18 ? 次閱讀

Checkscoverage是覆蓋率驅(qū)動(dòng)的驗(yàn)證流程的關(guān)鍵。在驗(yàn)證環(huán)境中,Checks和coverage可以被定義在多個(gè)位置。

在Classes中實(shí)現(xiàn)Checks和Coverage

uvm_monitor的派生類總是存在于agent中,因此包含必要的Checks和Coverage。下面是一個(gè)斷言檢查的簡(jiǎn)單例子,傳輸?shù)膕ize字段是1、2、4或8。否則斷言失敗。

011b61fc-08b5-11ee-962d-dac502259ad0.png

check也可以寫成函數(shù)的形式,例如檢查size字段的值與動(dòng)態(tài)數(shù)組的size相匹配。0139ea1e-08b5-11ee-962d-dac502259ad0.png

這兩個(gè)檢查都應(yīng)該在transfer被monitor收集時(shí)執(zhí)行。由于這些check是在同一時(shí)間發(fā)生的,所以可以封裝成一個(gè)函數(shù),這樣就只需要進(jìn)行一次調(diào)用。

01674a2c-08b5-11ee-962d-dac502259ad0.png

功能覆蓋是通過SystemVerilog covergroups實(shí)現(xiàn)的,下面是一個(gè)簡(jiǎn)單的covergroups的例子。

018bd310-08b5-11ee-962d-dac502259ad0.png

這個(gè)covergroup被定義在一個(gè)從uvm_monitor派生出來的類里面。對(duì)于上述covergroup,應(yīng)該在一個(gè)函數(shù)中聲明作為coverpoints的局部變量,然后對(duì)covergroup進(jìn)行采樣。

01b62d68-08b5-11ee-962d-dac502259ad0.png

SystemVerilog沒有提供動(dòng)態(tài)數(shù)組覆蓋率收集的能力,這個(gè)函數(shù)實(shí)現(xiàn)了這個(gè)功能。perform_transfer_coverage()函數(shù)會(huì)像 perform_transfer_checks()一樣,在transaction被monitor收集時(shí)調(diào)用。

在Interfaces中實(shí)現(xiàn)Checks和Coverage

InterfacesChecks被實(shí)現(xiàn)為assertions,以檢查信號(hào)協(xié)議為主。例如,一個(gè)斷言可能會(huì)檢查一個(gè)地址在有效的傳輸過程中從未出現(xiàn)過X。

在Formal FPV中,

當(dāng)property表達(dá)DUT的內(nèi)部和輸出行為時(shí),使用assert進(jìn)行檢查。

當(dāng)property表達(dá)產(chǎn)生DUT激勵(lì)的環(huán)境行為時(shí),就使用assume約束。

控制Checks和Coverage

應(yīng)該提供一個(gè)字段來控制Checks是否被執(zhí)行和Coverage是否被收集,該字段可以通過uvm_config_db接口來控制。下面是一個(gè)使用checks_enable位來控制Checks的例子。

if (checks_enable)
  perform_transfer_checks();

uvm_config_db#(int)::set(this,"masters[0].monitor", "checks_enable", 0);

?




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1343

    瀏覽量

    109932
  • UVM
    UVM
    +關(guān)注

    關(guān)注

    0

    文章

    181

    瀏覽量

    19122
  • DUT
    DUT
    +關(guān)注

    關(guān)注

    0

    文章

    189

    瀏覽量

    12310

原文標(biāo)題:在驗(yàn)證環(huán)境中開發(fā)Checks和Coverage

文章出處:【微信號(hào):芯片驗(yàn)證工程師,微信公眾號(hào):芯片驗(yàn)證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32F334上使用IAR開發(fā)環(huán)境和jlink的SWD接口調(diào)試,怎么設(shè)置才可以使用IAR的code coverage功能?

    如題,STM32F334上使用IAR開發(fā)環(huán)境和jlink的SWD接口調(diào)試,這種情況下怎么設(shè)置才可以使用IAR的code coverage功能啊,謝謝各位?。?!
    發(fā)表于 04-24 06:08

    【大聯(lián)大世平Intel?神經(jīng)計(jì)算棒NCS2試用體驗(yàn)】2.搭建OpenVino開發(fā)環(huán)境下——測(cè)試驗(yàn)證開發(fā)環(huán)境

    經(jīng)過上一篇文章的開發(fā)環(huán)境安裝,我們已經(jīng)完成了cmake、python、OpenVINO等安裝,接下來,可以將Intel神經(jīng)計(jì)算棒插入電腦中,測(cè)試開發(fā)環(huán)境了,
    發(fā)表于 08-20 00:46

    ST-Link調(diào)試開發(fā)環(huán)境介紹設(shè)置步驟

    設(shè)置BINGGO!開發(fā)環(huán)境介紹使用Keil MDK5進(jìn)行代碼開發(fā),利用ST-LINK v2下載程序。設(shè)置步驟點(diǎn)擊工具欄的魔法棒或選擇Fla
    發(fā)表于 01-25 06:48

    怎樣Arduino環(huán)境添加ESP32開發(fā)板呢

    怎樣去安裝一種Arduino環(huán)境呢?怎樣Arduino環(huán)境添加ESP32開發(fā)板呢?有哪些步驟
    發(fā)表于 02-28 10:00

    重點(diǎn)厘清覆蓋率相關(guān)的概念以及芯片開發(fā)流程中跟覆蓋率相關(guān)的事項(xiàng)

    全盤考量。而覆蓋率,就是芯片工程,評(píng)審體系需要重點(diǎn)參考的一項(xiàng)技術(shù)指標(biāo),但也只是驗(yàn)證相關(guān)的其中一項(xiàng)。目前被業(yè)界廣泛采用的覆蓋率指標(biāo)有功能覆蓋率(Function Coverage)和代碼覆蓋率
    發(fā)表于 09-14 11:57

    SpinalHDL開發(fā)環(huán)境搭建步驟相關(guān)資料分享

    1、SpinalHDL開發(fā)環(huán)境搭建步驟開發(fā)所需軟件SpinalHDL 是 Scala 語(yǔ)言的一個(gè)庫(kù),SpinaHDL 環(huán)境搭建所需的軟件
    發(fā)表于 10-17 15:33

    聊聊芯片IC驗(yàn)證的風(fēng)險(xiǎn)

    就大概率沒有問題。實(shí)際上我們的設(shè)計(jì)很多時(shí)序問題靠code coverage是沒法發(fā)現(xiàn)的。如果我們的function coverage也沒有寫全,此類問題很容易漏掉。第五個(gè),假pas
    發(fā)表于 10-21 14:25

    Android 開發(fā)環(huán)境搭建步驟詳細(xì)圖解

    Android 開發(fā)環(huán)境搭建步驟詳細(xì)圖解
    發(fā)表于 10-24 08:49 ?11次下載
    Android <b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b>搭建<b class='flag-5'>步驟</b>詳細(xì)圖解

    一個(gè)coverage merge小技巧

    分享一個(gè)coverage merge小技巧,群里經(jīng)??吹接行』锇閱柛牧舜a之后coverage能不能merge。今天帶大家來看看這個(gè)問題。
    的頭像 發(fā)表于 05-24 10:08 ?650次閱讀
    一個(gè)<b class='flag-5'>coverage</b> merge小技巧

    SystemVerilog實(shí)用知識(shí)點(diǎn):覆蓋率之Function Coverage

    SystemVerilog是一名芯片驗(yàn)證工程師,必須掌握的一門語(yǔ)言,其中Function Coverage是必須要懂的知識(shí)點(diǎn)之一;
    的頭像 發(fā)表于 06-04 16:30 ?7218次閱讀
    SystemVerilog實(shí)用知識(shí)點(diǎn):覆蓋率之Function <b class='flag-5'>Coverage</b>

    基于UVM驗(yàn)證環(huán)境開發(fā)測(cè)試流程

    驗(yàn)證環(huán)境用戶需要?jiǎng)?chuàng)建許多測(cè)試用例來驗(yàn)證一個(gè)DUT的功能是否正確,驗(yàn)證環(huán)境開發(fā)者應(yīng)該通過以下方式提
    的頭像 發(fā)表于 06-09 11:11 ?937次閱讀
    基于UVM<b class='flag-5'>驗(yàn)證</b><b class='flag-5'>環(huán)境</b><b class='flag-5'>開發(fā)</b>測(cè)試流程

    可重用的驗(yàn)證組件構(gòu)建測(cè)試平臺(tái)的步驟

    本文介紹了從一組可重用的驗(yàn)證組件構(gòu)建測(cè)試平臺(tái)所需的步驟。UVM促進(jìn)了重用,加速了測(cè)試平臺(tái)構(gòu)建的過程。 首先對(duì) 測(cè)試平臺(tái)集成者(testbench integrator) 和 測(cè)試編寫者(test
    的頭像 發(fā)表于 06-13 09:14 ?556次閱讀
    可重用的<b class='flag-5'>驗(yàn)證</b>組件<b class='flag-5'>中</b>構(gòu)建測(cè)試平臺(tái)的<b class='flag-5'>步驟</b>

    如何在Arduino IDE安裝ESP32開發(fā)環(huán)境

    要在Arduino IDE中使用ESP32開發(fā)板,您需要先安裝相應(yīng)的開發(fā)環(huán)境。以下是Arduino IDE安裝ESP32
    的頭像 發(fā)表于 07-13 16:48 ?1.7w次閱讀
    如何在Arduino IDE<b class='flag-5'>中</b>安裝ESP32<b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b>

    編寫動(dòng)態(tài)的驗(yàn)證環(huán)境

    作為一名DV,開發(fā)驗(yàn)證環(huán)境,編寫驗(yàn)證環(huán)境也算是必備基礎(chǔ)技能了。雖然每天都會(huì)coding,但最終寫出來的代碼,是一次性代碼,還是方法?
    的頭像 發(fā)表于 07-17 10:40 ?596次閱讀
    編寫動(dòng)態(tài)的<b class='flag-5'>驗(yàn)證</b><b class='flag-5'>環(huán)境</b>

    美國(guó)VPS上設(shè)置開發(fā)和測(cè)試環(huán)境的基本步驟和技巧

    美國(guó)vps上搭建開發(fā)環(huán)境和測(cè)試環(huán)境是很多開發(fā)者和企業(yè)追求高效研發(fā)與測(cè)試流程的重要一步。本文介紹了
    的頭像 發(fā)表于 06-24 14:46 ?376次閱讀
    <b class='flag-5'>在</b>美國(guó)VPS上設(shè)置<b class='flag-5'>開發(fā)</b>和測(cè)試<b class='flag-5'>環(huán)境</b>的基本<b class='flag-5'>步驟</b>和技巧