一、工廠的優點
因為在大多數時候驗證工程師很多環境,這些環境很多在大體上是相似的,但又有一些方面有不同,因此就需要使用共通部分,而定製不同環境的獨特部分,而uvm的factory機制提供了乙個方法,可以更為方便在不改變環境結構層次的前提下的定製個環境的獨特部分,即替換驗證環境中已註冊的類或者例項,這也就要求我們定義的類都要經過工廠來產生,在工廠註冊。
二、使用工廠模式的步驟
1、註冊
uvm提供了多個工廠機制的註冊巨集,下面給出一種我常用的註冊巨集。
`uvm__utils(class_type_name),
在工廠註冊的類一般分為兩大型別,即 uvm_componet 和 uvm_object。
例1 uvm_object型別:
class obj extends uvm_object;
`uvm_object_utlis
(obj)
function new
(string name=
'obj');
super.
new(name)
; $display
($sfortmatf
("%s is ceated"
,name));
endfunction:new
例2 uvm_componet型別:
class comp extends uvm_componet;
`uvm_componet_utlis
(obj)
function new
(string name=
'comp',uvm_componet parent=null)
; super.
new(name,parent)
; $display
($sfortmatf
("%s is ceated"
,name));
endfunction:new
注:以上兩個**的註冊巨集和new
()函式是正規化,結構和引數都不可更改。
2、例項化物件
1)建立uvm_object類
com_type::type_id::creat(string name)
2)建立uvm_componet
com_type::type_id::creat(string name,uvm_componet parent)
注:1、string_name為例項的類名,uvm_parent 為父類
2、如果直接使用new()來建立物件沒有使用工廠來建立物件,使得不能用工廠帶來的優勢,uvm要求用工廠方式
UVM學習筆記 phase機制1
一 什麼是phase機制 uvm中的phase機制可以保證各元件例化的先後關係以及各元件例化後的連線關係,phase機制同樣允許在例化前對底層元件的配置,總的來說phase機制管理控制著 按一定順序進行,使得uvm 階段層次化 二 phase分類 phase總共有九種,分類如下表所示 run pha...
設計模式學習筆記 工廠
簡單工廠 工廠方法 抽象工廠。所謂的工廠,就是生產東西的。在設計模式這裡,工廠就是返回物件的。所以工廠方法 抽象工廠都是建立型的設計模式 簡單工廠不算在23種設計模式裡面 簡單工廠 工廠方法 抽象工廠,乙個比乙個複雜,但又互有關聯,比如工廠方法可以退化成簡單工廠,工廠方法可看成特殊的抽象工廠。1 簡...
設計模式學習筆記(工廠模式)
定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠模式使乙個類的例項化延遲到其子類。c 中的工廠方法 工廠基類中所定義的建立產品的函式 都是虛函式並且常常是純虛函式。product 工廠基類 定義工廠方法所建立的介面 concreteproduct 工廠具體類 實現product介面 cre...