class axi_drv extends uvm_driver#(axi_seq_item) `uvm_components_utils(axi_drv) virtual intf vif; axi_seq_item txn; int [31:0] temp[]; function new(string name="axi_drv",uvm_component parent); super.new(name.parent); endfunction function void build_phase(uvm_phase phase); uvm_config_db#(virtual intf)::get(this,"",vif,vif); txn=axi_seq_item::type_id::create(txn); endfunction task run_phase(uvm_phase phase); begin get_next_item(txn); drive(txn); item_done(); endtask task drive(txn); fork // reset(); write_add(txn); write_data(txn); read_add(txn); join endtask ///////////////write addr/////////// task write_add(txn); int lower_wrap_boundary; int upper_wrap_boundary; int burst_len,burst_size; int total_trans; if(txn.write==1) begin @(vif.clk); vif.awid<=txn.awid; vif.awlen<=txn.awlen; vif.awsize<=txn.awsize; vif.awburst<=txn.awburst; /////////fixed burst///////////// if(txn.awburst==2'b00) begin vif.awaddr<=txn.awaddr; end /////////////incr burst////////////// else if(txn.awaddr==2'b01) begin vif.awaddr<=txn.awaddr; for(int i=0;i