一個component(如my_driver)內通過get_full_name()函數可以得到此component的路徑
config_db機制用于在UVM驗證平臺間傳遞參數。它們通常都是成對出現的。set函數是寄信,而get函數是收信。如下設置當前名字為pre_num=100寄信給drive
uvm_config_db#(int)::set(this, "env.i_agt.drv", "pre_num", 100);
其中第一個和第二個參數聯合起來組成目標路徑,與此路徑符合的目標才能收信。第一個參數必須是一個uvm_component實例的指針,第二個參數是相對此實例的路徑。第三個參數表示一個記號,用以說明這個值是傳給目標中的哪個成員的,第四個參數是要設置的值。set函數的第一個參數為null時,在這種情況下,UVM會自動把第一個參數替換為uvm_ root::get()。
假如把this替換為了this.env,第二個參數是my_driver相對于env的路徑
uvm_config_db#(int)::set(this.env, "i_agt.drv", "pre_num_max", 100);
在driver中的build_phase使用如下方式收信
uvm_config_db#(int)::get(this, "", "pre_num", pre_num);
get函數中的第一個參數和第二個參數聯合起來組成路徑。第一個參數也必須是一個uvm_component實例的指針,第二個參數是相對此實例的路徑。一般的,如果第一個參數被設置為this,那么第二個參數可以是一個空的字符串。第三個參數就是set函數中的第三個參數,這兩個參數必須嚴格匹配,第四個參數則是要設置的
set與get函數一般都是成對出現,但是在某些情況下,是可以只有set而沒有get語句,即省略get語句。
只要使用uvm_field_int注冊,并且在build_phase中調用super.build_phase(),就可以省略在build_phase中的如下get語句
uvm_config_db#(int)::get(this, "", "pre_num", pre_num);
關鍵是build_phase中的super.build_phase語句,當執行到driver的super.build_ phase時,會自動執行get語句。
審核編輯:劉清
-
UVM
+關注
關注
0文章
181瀏覽量
19144
原文標題:UVM的config機制
文章出處:【微信號:FPGA學姐,微信公眾號:FPGA學姐】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論