天天看點

uvm_config_db使用方法總結uvm_config_db使用方法總結2 在uvm中使用get_full_name()可以得到一個component的完整路徑3 使用check_config_usage()來列印config的配置消息

uvm_config_db使用方法總結

聲明:本文參考gsithxy的文章

1. uvm_config_db get and set

uvm_config_db::set and uvm_config_db::get methods are used to store and retrieve the information from the database respectively.

1.1 uvm config db set method

T is the type of element being configured. (Type can be scalar objects, class handles, queues, lists, or even virtual interfaces),總之,T代表要set的資料類型

cntxt is the hierarchical starting point of where the database entry is accessible.其中cntxt + inst_name = 目标對象的Hierarchy,通常把cntxt設為uvm_root::get(),inst_name用$psprintf(“uvm_test_top.env.xxx”)來産生

inst_name is a hierarchical path that limits the accessibility of the database entry.

field_name相當于一個label,get與set要一緻才能正确拿到這個config value。如果需要向同一個Hierarchy set同一個對象的多個執行個體,可以用使用$sprintf(“mon_vif[%0d]”, i)來做label,通過generate塊來set

1.2 引用張強UVM實戰中的解釋

第一個參數與第二個參數聯合起來組成目标路徑,第一個參數必須是uvm_component的指針,第二個參數是相對于此執行個體的路徑,第三個參數表示一個記号,用以說明這個值是傳遞給目标中的哪個成員的,第四個值是要設定的值。

set的第一個參數為null時,UVM會自動把第一個參數替換為root::get(),這兩種寫法是等價的。

get函數中的第一個參數和第二個參數聯合起來組成路徑,第一個參數也必須是一個uvm_component執行個體的指針,第二個參數是相對于此執行個體的指針。如果第一個參數設定為this,那麼第二個參數可以是一個空的字元串,第三個參數與set中的第三個參數必須一緻。

1.3 寫的一些代碼

uvm_config_db使用方法總結uvm_config_db使用方法總結2 在uvm中使用get_full_name()可以得到一個component的完整路徑3 使用check_config_usage()來列印config的配置消息
uvm_config_db使用方法總結uvm_config_db使用方法總結2 在uvm中使用get_full_name()可以得到一個component的完整路徑3 使用check_config_usage()來列印config的配置消息

2 在uvm中使用get_full_name()可以得到一個component的完整路徑

UVM實戰第201頁代碼介紹為:這裡使用通配符*要特别注意,使用

.*

表示目前層次以下,不包含目前層次。

*

表示目前層次及以下。

function void my_case0::build_phase(uvm_phase phase);
 	uvm_config_db#(int)::set(this,"env.i_agt.sqr.*","count",9);
endfunction
           
class case0_sequence extends uvm_sequence #(my_transaction);
	uvm_config_db#(int)::get(null, get_full_name(), "count", count);
endclass
           

3 使用check_config_usage()來列印config的配置消息

在UVM中,由于config_db的set及get語句一般用于build_phase階段,是以此函數一般在connect階段調用。當config失敗時,則會列印消息如下。

uvm_config_db使用方法總結uvm_config_db使用方法總結2 在uvm中使用get_full_name()可以得到一個component的完整路徑3 使用check_config_usage()來列印config的配置消息

繼續閱讀