module test;import uvm_pkg::*;`include"uvm_macros.svh"classpacket;inti;functionnew(intv);i=v;endfunction endclassclassproducerextends uvm_component;uvm_put_port #(packet)data_out;functionnew(string name,uvm_component parent);super.new(name,parent);data_out=new("data_out",this);endfunction taskrun_phase(uvm_phase phase);packet p,pp;#1p=new(0);while(data_out.try_put(p))begin $display("%0t: put data %0d",$time,p.i);#10p=new(p.i+1);end $display("try_put status return: %0d",p.i);$display("%0t: do a blocking put",$time);data_out.put(p);$display("%0t: blocking put succeeded",$time);endtask endclassclassconsumerextends uvm_component;uvm_get_port #(packet)data_in;functionnew(string name,uvm_component parent);super.new(name,parent);data_in=new("data_in",this);endfunction taskrun_phase(uvm_phase phase);packet p;#100;// fifo will fill up$display("%0t: getting one",$time);data_in.get(p);$display("%0t: received data %0d",$time,p.i);#100;// let the blocking put succeedwhile(data_in.try_get(p))begin $display("%0t: received data %0d",$time,p.i);#10;end endtask endclassclasstestextends uvm_test;`uvm_component_utils(test)functionnew(string name="",uvm_component parent=null);super.new(name,parent);endfunction taskrun_phase(uvm_phase phase);phase.raise_objection(null);#5us;phase.drop_objection(null);endtask endclass producer prod=new("prod",null);consumer cons=new("cons",null);uvm_tlm_fifo #(packet)fifo=new("fifo",null,10);initial begin prod.data_out.connect(fifo.put_export);cons.data_in.connect(fifo.get_export);forkrun_test("test");repeat(30)begin $display("%0t: FIFO level %0d of %0d",$time,fifo.used(),fifo.size());#10;end join end endmodule----------------------------------------------------------------***********IMPORTANT RELEASE NOTES************You areusinga version of the UVM library that has been compiled with `UVM_NO_DEPRECATED undefined.See http://www.eda.org/svdb/view.php?id=3313 for more details.(Specify+UVM_NO_RELNOTES to turn offthisnotice)UVM_INFO @0:reporter[RNTST]Running test test...0:FIFO level0of101:put data010:FIFO level1of1011:put data120:FIFO level2of1021:put data230:FIFO level3of1031:put data340:FIFO level4of1041:put data450:FI