I have a case where there is a config register with many fields that will be set separately from different sequences/threads. Initial thought would be to do a read-modify-write on the register from each thread.
Is this necessary? The register model should contain the current value of the register (assuming no passive funny business)? So does this mean the read is not necessary and the threads can jump straight to calling set() on the field they want to modify?
Assuming the threads are trying to write different fields of the same register, if the threads are each doing field.set() and reg.write(), are there any scenarios where some thread's new field value gets clobbered?
I guess ultimately what I'm trying to figure out is if I need to implement an atomic RMW method for this register, or does UVM allow for the operations described above in a value-safe way?