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

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

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

UVM中的utility宏

芯片驗(yàn)證工程師 ? 來源:芯片驗(yàn)證工程師 ? 2023-03-30 09:39 ? 次閱讀

UVM中所有的對(duì)象都應(yīng)該在factory 中注冊(cè), utility 宏就是用于將對(duì)象注冊(cè)到工廠的。

Utility Macros

utils宏主要用于將object或 component 注冊(cè)到工廠,它需要在每個(gè)從uvm_object派生的用戶定義類中使用,包括所有類型的sequenceitems 和 components 。

ObjectUtility

所有直接從uvm_object或uvm_transaction派生的類都需要使用`uvm_object_utils宏進(jìn)行注冊(cè)。對(duì)于每個(gè)類,都必須顯式定義new函數(shù),并將類實(shí)例的名稱作為參數(shù)

class ABC extends uvm_object; 
 
  // Register this user defined class with the factory 
  `uvm_object_utils(ABC) 
 
  function new(string name = "ABC"); 
    super.new(name); 
  endfunction 
endclass

Component Utility

所有直接或間接從uvm_component派生的類都需要使用`uvm_component_utils宏將它們注冊(cè)到工廠。對(duì)于每個(gè)直接或間接從uvm_component派生的類,都必須顯式定義new函數(shù),并將類實(shí)例的名稱和實(shí)例化此對(duì)象的父類的句柄作為參數(shù)。

class DEF extends uvm_component; 
 
  // Class derived from uvm_component, register with factory 
  `uvm_component_utils(DEF) 
 
  function new(string name = "DEF", uvm_component parent=null); 
    super.new(name, parent); 
  endfunction 
endclass

factory注冊(cè)后的類對(duì)象創(chuàng)建

建議通過調(diào)用type_id::create()方法來創(chuàng)建所有類對(duì)象已促進(jìn)驗(yàn)證平臺(tái)的靈活性和可重用性。

class ABC extends uvm_object; 
  `uvm_object_utils(ABC) 
 
  function new(string name = "ABC"); 
    super.new(name); 
  endfunction 
endclass 
 
class base_test extends uvm_test; 
  `uvm_component_utils(base_test) 
 
  function new(string name = "base_test", uvm_component parent=null); 
    super.new(name, parent); 
  endfunction 
 
  virtual function void build_phase(uvm_phase phase); 
 
    // An object of class "ABC" is instantiated in UVM by calling 
    // its "create()" function which has been defined using a macro 
    // as shown above 
    ABC abc = ABC::create("abc_inst"); 
  endfunction 
endclass

審核編輯:湯梓紅

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

    關(guān)注

    3

    文章

    4256

    瀏覽量

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

    關(guān)注

    0

    文章

    181

    瀏覽量

    19109
  • 類對(duì)象
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    1444

原文標(biāo)題:?UVM中的utility宏

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    IC驗(yàn)證之UVM常用匯總分析(四)

    OVM過時(shí)的用法,使用純凈的UVM環(huán)境:`define UVM_NO_DEPRECATED除了上述通用的外,針對(duì)不同的仿真工具需要定義不同的
    發(fā)表于 12-02 15:24

    IC驗(yàn)證"一個(gè)簡單的UVM驗(yàn)證平臺(tái)"是如何搭建的(六)

    :這個(gè)driver的功能非常簡單,只是向rxd上發(fā)送256個(gè)隨機(jī)數(shù)據(jù),并將rx_dv信號(hào)置為高電平。當(dāng)數(shù)據(jù)發(fā)送完畢后,將rx_dv信號(hào) 置為低電平。上述代碼還出現(xiàn)了uvm_info。這個(gè)
    發(fā)表于 12-04 15:48

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

    ,uvm的事物級(jí)建模方便了工程師對(duì)事物進(jìn)行建模,uvm的tlm通信機(jī)制方便實(shí)現(xiàn)各個(gè)組件之間的數(shù)據(jù)通信,使用uvm提供的可以方便的進(jìn)行各種操作,比如實(shí)現(xiàn)factory機(jī)制,file的o
    發(fā)表于 01-21 16:00

    數(shù)字IC驗(yàn)證之“搭建一個(gè)可以運(yùn)行的uvm測試平臺(tái)”(5)連載...

    事物的控制,在智能代碼前后有兩個(gè)if語句,這里先不用管,它的功能是控制驗(yàn)證平臺(tái)何時(shí)結(jié)束。  在來看看repeat語句當(dāng)中的內(nèi)容,repeat的語句中使用了uvm do這個(gè)uvm內(nèi)建的
    發(fā)表于 01-26 10:05

    什么是uvm?uvm的特點(diǎn)有哪些呢

    直觀的印象,就是uvm驗(yàn)證平臺(tái),它是分層的結(jié)構(gòu)。圖中的每一個(gè)巨型框都代表著平臺(tái)的一個(gè)構(gòu)成元素。這些元素呢,我們稱為平臺(tái)組建,下面來簡單的分析一下。從最底層上來看,agent 包含了driver,monitor和sequencer,其中driver ,monitor
    發(fā)表于 02-14 06:46

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

      uvm_info的定義如下:  `define uvm_info(ID,MSG,VERBOSITY) \  begin \  if (uvm_report_enabled(VER
    發(fā)表于 03-17 16:41

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

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

    我的第一個(gè)UVM代碼——Hello world

    Ctrl-V!) 幾點(diǎn)說明: 為了使用UVM庫里的函數(shù)和定義,需要先import uvm_pkg和include uvm_macros。 在testbench的頂層(module
    發(fā)表于 11-03 10:18

    UVMuvm_do簡析

    uvm_do及其變體提供了創(chuàng)建、隨機(jī)化和發(fā)送transaction items或者sequence的方法。
    的頭像 發(fā)表于 06-09 09:36 ?4623次閱讀
    <b class='flag-5'>UVM</b><b class='flag-5'>中</b>的<b class='flag-5'>uvm</b>_do<b class='flag-5'>宏</b>簡析

    UVMuvm_config_db機(jī)制背后的大功臣

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

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

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

    UVMuvm_config_db機(jī)制背后的大功臣

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

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

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

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

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

    UVM設(shè)計(jì)的sequence啟動(dòng)方式有哪幾種呢?

    本篇介紹UVM的sequence,這是UVM中最基礎(chǔ)的部分。對(duì)于前面介紹的uvm_callback, uvm_visitor等,很少被使用
    的頭像 發(fā)表于 08-17 10:07 ?3749次閱讀
    <b class='flag-5'>UVM</b>設(shè)計(jì)<b class='flag-5'>中</b>的sequence啟動(dòng)方式有哪幾種呢?