什麼是 uvm_object
UVM 環境中的所有元件和物件類別都衍生自 uvm_object,uvm_object的主要作用是定義常見的實用function,例如print、copy、compare和record,UVM testbench中的任何其他class都可以使用這些function。
從 uvm_object 衍生的類別必須實作純虛方法,例如 create 和 get_type_name。
create範例如下:
1 | class mytype extends uvm_object; |
get_type_name範例如下:
1 | class mytype extends uvm_object; |
Factory Interface
UVM用了一個稱為factory的概念,UVM環境中定義的所有class都向factory做註冊,然後factory之後回傳該class type的object。
繼承uvm_object的類別要包含允許其向factory註冊的Macro。
範例如下:
1 | class packet extends uvm_object; |
Utility Functions
UVM object提供了很多basic的function讓使用者使用,例如printing/recording/copying/comparing/packing/unpacking/configuration。
這些function如果要客製化的話可以override do_xxx的function。
例如UVM object有提供的print function,如果想要改變print的格式的話,就可以override do_print這個function,之後在使用print function的時候,就會呼叫到自己客製化的do_print function。