class axi_drv extends uvm_driver#(seq_item); `uvm_component_utils(axi_drv) virtual intf vif; seq_item txn; bit[7:0] temp [][]; function new(string name="axi_drv",uvm_component parent); super.new(name,parent); endfunction function void build_phase(uvm_phase phase); super.build_phase(phase); txn=seq_item::type_id::create("txn",this); if(!uvm_config_db#(virtual intf)::get(this,"","vif",vif) `uvm_error("build_phase",$sformatf("failed to get confg_db")) endfunction task run_phase(); forever begin seq_item_port.get(txn); drive(txn); seq_item_port.item_done(); end endtask task drive(seq_item txn); @(posedge vif.clk) vif.rst<=1; repeat(2)@(posedge vif.clk) vif.rst<=0; @(posedge vif.clk) if(txn.write) begin vif.awddr<=txn.awaddr; vif.awlen <= txn.awlen; vif.awsize<=txn.awsize; vif.awburst<=txn.awburst; vif.awlock<=txn.awlock; vif.awid<=txn.awid; vif.awvalid<=1; wait(vif.awready) @(posedge vif.clk) vif.awvalid<=0; @(posedge vif.clk) for(int i=0;i