As a brute force method, I can call sample_values() inside an always block @(posedge clk). However, this is not very performance efficient. I'm not quite clear on how a RAL's built in write()/read() API call goes through, but I imagine you could send the handle of the register model to the uvm_driver since before the transaction is over we could call sample_values() then. Is this recommended, or are there other methods users have had success with?