Jump to content

UVM Reg Model: access register error using bitbash seq because of predictor


Recommended Posts

Hi all,

I got problem with uvm bitbash seq with uvm-1.1d. I found, when bitbash sequence writes a value to DUT, the desired value is not updated immediately (because auto predict is disabled at default). The desired value is only updated by uvm predictor via monitor (takes long time to update this value). Therefore, at the next get() function, the value doesnt return correctly (see the following code of uvm_bitbash_seq, line 165).

159          rg.write(status, val, UVM_FRONTDOOR, map, this);
160          if (status != UVM_IS_OK) begin
161             `uvm_error("uvm_reg_bit_bash_seq", $sformatf("Status was %s when writing to register \"%s\" through map \"%s\".",
162                                         status.name(), rg.get_full_name(), map.get_full_name()));
163          end
164          
165          exp = rg.get() & ~dc_mask;
 

My question is, should I enable auto_predict to update desired value immediately after writing to DUT? Why is auto_predict disabled at default? Currently, I worked around by adding #5ns delay before get() function to wait desired value is updated by predictor via monitor, but I think it is not a good way.

Thanks.

Link to comment
Share on other sites

hi,

there are two questions you ask:

 

1. why is auto_predict=off the default?: normally auto_predict==off is the more versatile mode of operation. it works through a monitor when the real transaction is seen on the bus, it works in passive mode, it works with back-to-back transfers etc.

2. does setting auto-predict after the write help?: simply no. for auto predict to work the driver-sequencer handshake has to wait till the real end of transaction on the bus and it has to be switched on before the read/write operation. 

Link to comment
Share on other sites

7 hours ago, uwes said:

hi,

there are two questions you ask:

 

1. why is auto_predict=off the default?: normally auto_predict==off is the more versatile mode of operation. it works through a monitor when the real transaction is seen on the bus, it works in passive mode, it works with back-to-back transfers etc.

2. does setting auto-predict after the write help?: simply no. for auto predict to work the driver-sequencer handshake has to wait till the real end of transaction on the bus and it has to be switched on before the read/write operation. 

1. Thanks!

2. If I don't set auto_predict then uvm_reg_bitbash_seq will be failed. If you say so, I think that is a bug of UVM 1.1d, because currently, the write() function is finished immediately without waiting the real transaction on bus monitor update. Any suggestion to fix the problem if we don't set auto_predict?

Link to comment
Share on other sites

  • 1 year later...

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...