Hi all ,
(I) Consider a register REG with field2 as SW access as “RW” and HW access as “RW” ::
field2.configure(this, 8, 0, "RW", 0, 0, 1, 1, 0) ; // Volatile argument is 0 !!
Lets say we do a write on this register followed by a read . So if the read value doesn’t match ( due to Hardware write ) the written value , we get mismatch error .
(II) If we modify the above code to ::
field2.configure(this, 8, 0, "RW", 1, 0, 1, 1, 0) ; // Volatile argument is 1 !!
So in this case even if there is a mismatch between read value the value written into it , there would be no error since Volatile argument is set .
My question is does the volatile have significance only if the field is writable ( for SW ) ?
Now let’s say field2 above has SW access as “RO” and HW access as “RW” OR “WO” .
[QA] So during hw_reset_seq for for register containing field2 is the default value doesn’t match , will it still be an error if volatile argument
is high ?
[QB] During bit_bash or random write followed by read test on the register REG , the value expected on read would be same as default value ( as REG is RO ) . In case the HW changes the value ( other than default value ) prior to the read , we would get mismatch error on performing read operation .
So in this case if we set the volatile arg. of field2 as 1 should we get an error on mismatch ( due to HW write ) ?