UVM中所有的對象都應(yīng)該在factory 中注冊, utility 宏就是用于將對象注冊到工廠的。
Utility Macros
utils宏主要用于將object或 component 注冊到工廠,它需要在每個從uvm_object派生的用戶定義類中使用,包括所有類型的sequenceitems 和 components 。
ObjectUtility
所有直接從uvm_object或uvm_transaction派生的類都需要使用`uvm_object_utils宏進(jìn)行注冊。對于每個類,都必須顯式定義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宏將它們注冊到工廠。對于每個直接或間接從uvm_component派生的類,都必須顯式定義new函數(shù),并將類實(shí)例的名稱和實(shí)例化此對象的父類的句柄作為參數(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注冊后的類對象創(chuàng)建
建議通過調(diào)用type_id::create()方法來創(chuàng)建所有類對象已促進(jìn)驗(yàn)證平臺的靈活性和可重用性。
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
審核編輯:湯梓紅
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4346瀏覽量
62968 -
UVM
+關(guān)注
關(guān)注
0文章
182瀏覽量
19227 -
類對象
+關(guān)注
關(guān)注
0文章
3瀏覽量
1470
原文標(biāo)題:?UVM中的utility宏
文章出處:【微信號:芯片驗(yàn)證工程師,微信公眾號:芯片驗(yàn)證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
IC驗(yàn)證之UVM常用宏匯總分析(四)
IC驗(yàn)證"一個簡單的UVM驗(yàn)證平臺"是如何搭建的(六)
數(shù)字IC驗(yàn)證之“什么是UVM”“UVM的特點(diǎn)”“UVM提供哪些資源”(2)連載中...
數(shù)字IC驗(yàn)證之“搭建一個可以運(yùn)行的uvm測試平臺”(5)連載中...
什么是uvm?uvm的特點(diǎn)有哪些呢
談?wù)?b class='flag-5'>UVM中的uvm_info打印
UVM中seq.start()和default_sequence執(zhí)行順序
我的第一個UVM代碼——Hello world
UVM中uvm_config_db機(jī)制背后的大功臣
如何用Verdi查看UVM環(huán)境中的變量?
![如何用Verdi查看<b class='flag-5'>UVM</b>環(huán)境<b class='flag-5'>中</b>的變量?](https://file1.elecfans.com/web2/M00/8A/97/wKgZomSX9KmAfzTEAAAjMkUqf5k824.png)
UVM中uvm_config_db機(jī)制背后的大功臣
一文詳解UVM設(shè)計模式
![一文詳解<b class='flag-5'>UVM</b>設(shè)計模式](https://file1.elecfans.com/web2/M00/8F/87/wKgaomTPCIeAaWvlAAAbUtQlBfA324.png)
UVM設(shè)計中的sequence啟動方式有哪幾種呢?
![<b class='flag-5'>UVM</b>設(shè)計<b class='flag-5'>中</b>的sequence啟動方式有哪幾種呢?](https://file1.elecfans.com/web2/M00/90/DF/wKgaomTdgZCAGq9kAAAnwfSCLs4862.jpg)
評論