From c5ed2a7dccf7a970b950d597746c48145476939a Mon Sep 17 00:00:00 2001 From: mulkala_sneha Date: Wed, 8 May 2024 17:42:26 +0530 Subject: [PATCH] sneha_driver --- axi_drv.sv | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 axi_drv.sv diff --git a/axi_drv.sv b/axi_drv.sv new file mode 100644 index 0000000..2164a45 --- /dev/null +++ b/axi_drv.sv @@ -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