akshay.raoy Posted April 17, 2012 Report Share Posted April 17, 2012 uvm_reg_bit_bash_seq always writes value 1, both the times and always keep the exp value to default value of the register. in this sequence bash_kth_bit task i tried just adding rg.set(val) after write is done. it started working fine. i am using uvm-1.0p1 version of UVM package. Does anyone face this issue in uvm-1.1 also? or is it fixed in new version? Quote Link to comment Share on other sites More sharing options...
janick Posted April 17, 2012 Report Share Posted April 17, 2012 What is the type of bit it is trying to bash? Where there prior errors when bashing this bit or previous bits? Is the DUT "idle"? Quote Link to comment Share on other sites More sharing options...
akshay.raoy Posted April 18, 2012 Author Report Share Posted April 18, 2012 Its a read/write bit, this is the first bit of bit bash. yes DUT is idle, and i am able to see writing value 1 to each bit twice in waveform. Quote Link to comment Share on other sites More sharing options...
janick Posted April 18, 2012 Report Share Posted April 18, 2012 Looks like the mirrored value is not updated in time for the next cycle. I bet you are using explicit monitoring and the write() or read() returns before the monitoring path has completed the mirror update. Quote Link to comment Share on other sites More sharing options...
akshay.raoy Posted April 19, 2012 Author Report Share Posted April 19, 2012 i am just using uvm_reg_bit_bash_seq which is with UVM package. monitoring is not done in my defined sequence. this is how i am using it. uvm_reg_bit_bash_seq pie8_ral_seq = uvm_reg_bit_bash_seq::type_id::create("pie8_ral_seq",this) pie8_ral_seq.model = tbEnv.regmodel; pie8_ral_seq.start(null); Quote Link to comment Share on other sites More sharing options...
janick Posted April 19, 2012 Report Share Posted April 19, 2012 The pre-defined sequence depends on the mirror being properly updated in a timely manner between consecutive register operations. I suspect that it is that mirror update that is too slow. Make a copy of the pre-defined sequence and add a delay before a register read or write and see if that fixes it. if it does, your monitoring path is slower than your stimulus path. Quote Link to comment Share on other sites More sharing options...
ryz Posted April 24, 2012 Report Share Posted April 24, 2012 My guessing is that you have not called set_auto_predict(1) on the register map and then you need to have an explicit monitor to update the field value. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.