Rw.offset is not assigned with proper value in uvm_reg_frontdoor_sequence

class axi_reg_seq extends uvm_reg_frontdoor;
`uvm_object_utils(axi_reg_seq)

function new(string name = “” );
super.new(name);
endfunction : new

virtual task mv_write_reg( uvm_reg_addr_t l_addr , bit [31:0] l_data );
aaxi_master_tr t;
t = new();
t.addr = l_addr;
t.burst = AAXI_BURST_INCR;
t.kind = AAXI_WRITE;
t.len = 0;
t.size = 2;
t.data.delete();
t.data.push_back(l_data[7:0]);
t.data.push_back(l_data[15:8]);
t.data.push_back(l_data[23:16]);
t.data.push_back(l_data[31:24]);
start_item(t);
finish_item(t);
endtask

task body();
bit [31:0] r_data;
uvm_reg_map_info uvm_reg_map_info_h;

if( rw_info.kind == UVM_READ ) begin
rw_info.value = new[1];
mv_read_reg(rw_info.offset , r_data );
r_data = rw_info.value[0];
end
else begin
`uvm_info(“REG-WRITE”,$psprintf(“ADDR : %0h DATA : %0h”, rw_info.offset,rw_info.value[0]), UVM_LOW)
mv_write_reg(rw_info.offset , rw_info.value[0]);
end
rw_info.status = UVM_IS_OK;
endtask : body

endclass

rw_info.offset is always zero. Could any tell me, what i am missing

In reply to saravanan_mobi:


   uvm_reg the_reg;
   
   $cast(the_reg, rw_info.element);  
   addr = the_reg.get_offset();