class axi_driver extends uvm_driver#(axi_seq_item); `uvm_component_utils(axi_driver) virtual intf vif; axi_seq_item tx; int temp[]; int burst_len; int burst_size; int total_tr; int wrap_lower_boundary; int wrap_upper_boundary; function new(string name="axi_driver",uvm_component_parent); super.new(name,parent); endfunction function void build_phase(uvm_phase phase); super.new(); tx=axi_seq_item::type_id::create("tx",this); if(!uvm_config_db#(virtual intf)::get("this",*,"intf",vif) `uvm_error(get_type_name(),$sformatf("failed for get vif")) endfunction task run_phase(uvm_phase phase) forever begin seq_item_port.get_next_item(tx); drive(); seq_item_port.item_done(tx); end endtask task drive(); if(tx.wr_rd) begin write_address(); write_data(); write_response(); end else read_address(); endtask ////////write address/////// task write_adress(); @(posedge vif.clk) tx.awvalid<=1; vif.awvalid<=tx.awvalid; vif.awid<=tx.awid; //vif.awaddr<=tx.awaddr; vif.awsize<=tx.awsize; vif.awlen<=tx.awlen; vif.awburst<=tx.awburst; //////////fixed burst//////////// if(tx.awburst==2'b00) vif.awaddr<=tx.awaddr; ////////increament burst//////// else if(awburst==2'b01)begin vif.awaddr<=tx.awaddr; for(i=0;i