Jump to content
Sign in to follow this  
walkeranderson

Problem with uvm_mem_region burst_read() task

Recommended Posts

I think there's a bug in the UVM 1.2 burst_read() task of the uvm_mem_region class.

 

The "value" argument is defined as an output, not a reference, so an implementation of say a backdoor read cannot get the size of the value array to use to determine the burst size.

 

I believe this same bug was found and fixed in the burst_read() task of the uvm_mem class but the same fix is needed for the uvm_mem_region class burst_read().

 

Code snippets from UVM 1.2 for uvm_mem_region and uvm_mem shown below.  

 

Does anyone else agree it's a bug?

 

Thanks.

 

 

 

From uvm_mem_mam.svh

 

task uvm_mem_region::burst_read(output uvm_status_e       status,

                                input  uvm_reg_addr_t     offset,

                                output uvm_reg_data_t     value[],

                                input  uvm_path_e         path = UVM_DEFAULT_PATH,

                                input  uvm_reg_map        map    = null,

                                input  uvm_sequence_base  parent = null,

                                input  int                prior = -1,

                                input  uvm_object         extension = null,

                                input  string             fname = "",

                                input  int                lineno = 0);

 

 

From uvm_mem.svh

 

task uvm_mem::burst_read(output uvm_status_e       status,

                         input  uvm_reg_addr_t     offset,

                         ref    uvm_reg_data_t     value[],

                         input  uvm_path_e         path = UVM_DEFAULT_PATH,

                         input  uvm_reg_map        map = null,

                         input  uvm_sequence_base  parent = null,

                         input  int                prior = -1,

                         input  uvm_object         extension = null,

                         input  string             fname = "",

                         input  int                lineno = 0);

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×