说明:下列代码参考《UVM实战》
1、interface 和一些configuration等uvm_object 传递
从testbench传递至UVM各个模块中,这种传递方式不需要连接,只需要发送和接收就行
- testbench中 声明并传入必要参数
my_if input_if(clk, rst_n);
- testbench中, 进行dut连接
dut my_dut(.clk(clk),.rst_n(rst_n), .rxd(input_if.data), .rx_dv(input_if.valid), .txd(output_if.data),.tx_en(output_if.valid));
- testbench中,使用uvm_config_db#进行传递,可以一传一,绝对路径,使用通配符可以一传多
uvm_config_db#(virtual my_if)::set(null, "uvm_test_top.env.i_agt.drv", "vif", input_if); uvm_config_db#(virtual my_if)::set(uvm_root::get,"*","vif",input_if);
- 在conponent中进行接收
if(!uvm_config_db#(virtual my_if)::get(this, "", "vif", vif)) `uvm_fatal("my_driver", "virtual interface must be set for vif!!!")