Jump to content

Recommended Posts

Posted

Hi, 

 

I have a top level reg map set up as below. In my adapter I am trying to retrieve all the registers by address of incoming reg_item in bus2reg function to simulate burst condition. The get_reg_by_offset call returns null every time. I don't understand why the address is not found considering all the registers have unique offsets. Infact I retrieved the base address of the incoming reg_item to check if I can the register before incrementing for next offset, but it cannot find the register with base address.

Any help is appreciated.

Top register file:

TOP_map = create_map(.name("TOP_map"), .base_addr('hFE00), .n_bytes(1),.endian(UVM_LITTLE_ENDIAN),.byte_addressing(1) );
  default_map = CONTROL_TOP_map;
TOP_map.add_submap(this.int_reg_blk.I2C_INT_map, .offset(8'h7C));
TOP_map.add_submap(this.scan_blk.SCAN_CTL_map, .offset(8'h84));
TOP_map.add_submap(this.ctrl_int_reg_blk.HOR_CTRL_map, .offset(8'h94));
TOP_map.I2C_INT_map.add_hdl_path("********", "RTL"); //didn't want to add proprietary code paths 

 

 

get_reg_by_offset call 

uvm_reg_item in_item = get_item();

base_addr = in_item.map.get_base_addr();

if(!(in_item.map.get_reg_by_offset(base_addr)))

 `uvm_error(get_type_name(), "Register not found in reg map")

else

 registers[i] = in_item.map.get_reg_by_offset(base_addr+1);

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...