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

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

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

uvm中的Scoreboards介紹

芯片驗證工程師 ? 來源:芯片驗證工程師 ? 2023-06-20 09:19 ? 次閱讀

在驗證過程中讓DUT進入特定場景只是驗證的重要部分之一,驗證環(huán)境還應(yīng)該檢查來自DUT的輸出響應(yīng)。可以使用兩種類型的自動檢查機制:

斷言--源于規(guī)范或設(shè)計實現(xiàn),確保正確的時序行為。斷言通常側(cè)重于信號級。可重用的斷言也是可重用驗證組件的一部分,當(dāng)然設(shè)計也可以將斷言放在DUT RTL中。

數(shù)據(jù)檢查器-確保DUT整體的正確性。

Scoreboards

self-checking驗證環(huán)境的一個重要部分是Scoreboards。通常情況下,Scoreboards在功能層面上驗證設(shè)計的正確操作。Scoreboards承擔(dān)的責(zé)任因?qū)崿F(xiàn)方式而異。下面展示一個Scoreboards的例子,它驗證了一個UBus slave interface。

UBus Scoreboard 示例

寫到一個地址的數(shù)據(jù)應(yīng)該在讀取該地址時返回,驗證環(huán)境的拓?fù)浣Y(jié)構(gòu)如下圖所示:

4e5cf8ac-0ebb-11ee-962d-dac502259ad0.png

在這個例子中,創(chuàng)建了一個top-level environment,其中有一個UBus environment,包含bus monitor,一個master agent,和一個slave agent。

定義Scoreboard

添加必要的TLM export,以便與monitor進行通信。

執(zhí)行TLM export的方法,定義export被調(diào)用時的行為。

向uvm_scoreboard添加Exports :

在上圖的例子中,monitors提供了一個TLM uvm_analysis_port(s)接口, scoreboard需要提供TLM uvm_analysis_imp。

1 classubus_example_scoreboardextendsuvm_scoreboard;
2   uvm_analysis_imp#(ubus_transfer,ubus_example_scoreboard)
3   item_collected_export;
4   ... 
5   function new (string name, uvm_component parent); 
6     super.new(name, parent);
7   endfunction : new
8   function void build_phase(uvm_phase phase); 
9     item_collected_export = new("item_collected_export", this); 
10   endfunction
11 ...

第2行聲明了uvm_analysis_export。第一個參數(shù)ubus_transfer,定義了通過這個TLM接口通信的uvm_object。第二個參數(shù)定義了父類類型。

第9行創(chuàng)建item_collected_export實例。

由于scoreboard提供了一個 uvm_analysis_imp,scoreboard必須實現(xiàn)該export所要求的所有方法。這意味著需要定義write virtual function的實現(xiàn):

virtual function void write(ubus_transfer trans);
  if (!disable_scoreboard)
    memory_verify(trans);
endfunction : write

write()的實現(xiàn)定義了在這個接口上接收到數(shù)據(jù)時的行為。如果disable_scoreboard為0,就會以transaction為參數(shù)調(diào)用memory_verify()函數(shù)。

將Scoreboard添加到Environment中

一旦定義好scoreboard,就可以添加到UBus的 top-level environment中。首先,在ubus_example_env類中聲明ubus_example_scoreboard。

ubus_example_scoreboard scoreboard0;

scoreboard可以在build() phase構(gòu)建:

function ubus_example_env::build_phase(uvm_phase phase);
...
scoreboard0 = ubus_example_scoreboard::create("scoreboard0",
this);
...
endfunction

在UBus environment中連接slaves[0] monitor到scoreboard的export上。

function ubus_example_env::connect_phase(uvm_phase phase);
...
ubus0.slaves[0].monitor.item_collected_port.connect(
scoreboard0.item_collected_export);
...
endfunction

總結(jié)下,添加scoreboard的過程:

聲明scoreboard組件

添加必要的exports。

實現(xiàn)所需的方法來執(zhí)行特定的功能。

scoreboard添加到environment中

聲明并實例化scoreboard組件。

連接TLM port





審核編輯:劉清

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

    關(guān)注

    1

    文章

    384

    瀏覽量

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

    關(guān)注

    0

    文章

    181

    瀏覽量

    19092
  • TLM
    TLM
    +關(guān)注

    關(guān)注

    1

    文章

    32

    瀏覽量

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

    關(guān)注

    0

    文章

    188

    瀏覽量

    12208

原文標(biāo)題:uvm中的Scoreboards

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

收藏 人收藏

    評論

    相關(guān)推薦

    數(shù)字IC驗證之“什么是UVM”“UVM的特點”“UVM提供哪些資源”(2)連載...

    原文鏈接:https://zhuanlan.zhihu.com/p/345775995大家好,我是一哥,上章內(nèi)容主要講述兩個內(nèi)容,芯片驗證以及驗證計劃。那本章我們主要講述的內(nèi)容有介紹什么是uvm
    發(fā)表于 01-21 16:00

    數(shù)字IC驗證之“典型的UVM平臺結(jié)構(gòu)”(3)連載...

      大家好,我是一哥,上章內(nèi)容我們介紹什么是uvm?uvm的特點以及uvm為用戶提供了哪些資源?  本章內(nèi)容我們來看一看一個典型的uvm驗證
    發(fā)表于 01-22 15:32

    什么是uvm?uvm的特點有哪些呢

    大家好,我是一哥,上章內(nèi)容我們介紹什么是uvmuvm的特點以及uvm為用戶提供了哪些資源?本章內(nèi)容我們來看一看一個典型的uvm驗證平臺應(yīng)該
    發(fā)表于 02-14 06:46

    如何構(gòu)建UVM寄存器模型并將寄存器模型集成到驗證環(huán)境

    ),通常也叫寄存器模型,顧名思義就是對寄存器這個部件的建模。本文要介紹的內(nèi)容,包括對UVM寄存器模型的概述,如何構(gòu)建寄存器模型,以及如何將寄存器模型集成到驗證環(huán)境。篇幅原因,將在下一篇文章再給出寄存器
    發(fā)表于 09-23 14:29

    談?wù)?b class='flag-5'>UVMuvm_info打印

    uvm_report_enabled(xxx),會分析傳過來的severity和id的配置verbosity要大于傳過來的verbosity,(get_report_verbosity_level(severity, id
    發(fā)表于 03-17 16:41

    UVMseq.start()和default_sequence執(zhí)行順序

      1. 問題  假如用以下兩種方式啟動sequence,方法1用sequence的start()方法啟動seq1,方法2用UVM的default_sequence機制啟動seq2。那么seq1
    發(fā)表于 04-04 17:15

    數(shù)字IC驗證之“典型的UVM平臺結(jié)構(gòu)”(3)連載...

    大家好,我是一哥,上章內(nèi)容我們介紹什么是uvm?uvm的特點以及uvm為用戶提供了哪些資源?本章內(nèi)容我們來看一看一個典型的uvm驗證平臺應(yīng)該
    發(fā)表于 12-09 13:36 ?7次下載
    數(shù)字IC驗證之“典型的<b class='flag-5'>UVM</b>平臺結(jié)構(gòu)”(3)連載<b class='flag-5'>中</b>...

    UVM TLM的基本概念介紹

    UVM,transaction 是一個類對象,它包含了建模兩個驗證組件之間的通信所需的任何信息。
    的頭像 發(fā)表于 05-24 09:17 ?1566次閱讀
    <b class='flag-5'>UVM</b> TLM的基本概念<b class='flag-5'>介紹</b>

    UVMuvm_config_db機制背后的大功臣

    本次講一下UVMuvm_config_db,在UVM中提供了一個內(nèi)部數(shù)據(jù)庫,可以在其中存儲給定名稱下的值,之后可以由其它TB組件去檢索。
    的頭像 發(fā)表于 06-20 17:28 ?1191次閱讀

    如何用Verdi查看UVM環(huán)境的變量?

    我們常用的debug UVM的方法是通過打印log實現(xiàn)。有沒有辦法像 debug RTL代碼一樣將 UVM 變量拉到波形上看呢?答案是有的,下面讓我們看看是怎么做到的。
    的頭像 發(fā)表于 06-25 16:01 ?1414次閱讀
    如何用Verdi查看<b class='flag-5'>UVM</b>環(huán)境<b class='flag-5'>中</b>的變量?

    UVMuvm_config_db機制背后的大功臣

    本次講一下UVMuvm_config_db,在UVM中提供了一個內(nèi)部數(shù)據(jù)庫,可以在其中存儲給定名稱下的值,之后可以由其它TB組件去檢索。
    的頭像 發(fā)表于 06-29 16:57 ?1046次閱讀

    一文詳解UVM設(shè)計模式

    本篇是對UVM設(shè)計模式 ( 二 ) 參數(shù)化類、靜態(tài)變量/方法/類、單例模式、UVM_ROOT、工廠模式、UVM_FACTORY[1]單例模式的補充,分析靜態(tài)類的使用,
    的頭像 發(fā)表于 08-06 10:38 ?1395次閱讀
    一文詳解<b class='flag-5'>UVM</b>設(shè)計模式

    行為型設(shè)計模式在UVM的應(yīng)用

    接下來介紹行為型設(shè)計模式在UVM的應(yīng)用。
    的頭像 發(fā)表于 08-09 14:01 ?569次閱讀
    行為型設(shè)計模式在<b class='flag-5'>UVM</b><b class='flag-5'>中</b>的應(yīng)用

    迭代模式在UVM的應(yīng)用有哪些

    行為型設(shè)計模式數(shù)量較多,上一篇介紹了模板模式和策略模式,下面對迭代模式進行介紹,挖掘其在UVM的應(yīng)用。
    的頭像 發(fā)表于 08-14 17:15 ?522次閱讀
    迭代模式在<b class='flag-5'>UVM</b><b class='flag-5'>中</b>的應(yīng)用有哪些

    UVM設(shè)計的sequence啟動方式有哪幾種呢?

    本篇介紹UVM的sequence,這是UVM中最基礎(chǔ)的部分。對于前面介紹uvm_callba
    的頭像 發(fā)表于 08-17 10:07 ?3488次閱讀
    <b class='flag-5'>UVM</b>設(shè)計<b class='flag-5'>中</b>的sequence啟動方式有哪幾種呢?