验证时,在sim command中使用+uvm_set_config_int命令配置环境参数是一种很常用的方法。但是在使用uvm_set_congfig_int时,不能使用uvm_config_db#(int)::get()来获得参数,必须使用get_config_int()函数或uvm_config_int::get()来获得参数。
<sim command> +uvm_set_config_int = <comp>,<field>,<value>
//这里举例配置图像的帧数、行数和每一行的像素点素
<sim command> +uvm_set_config_int ="uvm_test_top.env.scb,frame_num,24"
<sim command> +uvm_set_config_int ="uvm_test_top.env.scb,height_num,25"
<sim command> +uvm_set_config_int ="uvm_test_top.env.scb,row_num,72"
//在scoreboard中接收
class test_scb extends uvm_scoreboard;
int frame_num;
int height_num;
int row_num;
function void connect_phase(uvm_phase phase);
super.connect_phase(phase);
//get_config_int可以获得参数的set值
get_config_int("frame_num",frame_num);
get_config_int("height_num",height_num);
get_config_int("row_num",row_num);
//uvm_config_int::get也能获取参数的set值
uvm_config_int::get(this,"*","frame_num",frame_num);
uvm_config_int::get(this,"*","height_num",height_num);
uvm_config_int::get(this,"*","row_num",row_num);
//uvm_config_db#(int)::get()不能获取参数的set值
//uvm_config_db#(int)::get(this,"*","frame_num",frame_num);
//uvm_config_db#(int)::get(this,"*","height_num",height_num);
//uvm_config_db#(int)::get(this,"*","row_num",row_num);
endfucntion : connect_phase
endclass : test_scb
set/get_config_string和set/get_config_object与set/get_config_int同理,是不可以与uvm_config_db混用的。