Browse Source

sneha_driver

main
mulkala_sneha 6 months ago
parent
commit
c5ed2a7dcc
1 changed files with 63 additions and 0 deletions
  1. +63
    -0
      axi_drv.sv

+ 63
- 0
axi_drv.sv View File

@@ -0,0 +1,63 @@
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<trans.awlength+1;i++)
begin
for(int j=0;j<2**trans.awsize;j++)
begin
temp[i][j*8+:8]<= trans.wdata[i][j];
if(i=trans.awlength-1)
trans.wlast<=1;
else
trans.wlast<=0;
end
end
vif.wdata<=temp;

endtask

endclass




Loading…
Cancel
Save