In reply to Balu_15:
update() function firstly calls needs_update() function to check if DUT registers need to be written. If a mirror value has been modified in the abstraction model either through randomization or via the uvm_reg::set() method, the mirror and state of the registers are outdated. The corresponding registers in the DUT need to be updated. Then update() function calls write() function to perform register write using the physical DUT interfaces (front-door access) or back-door accesses.
This site has very good pictures to describe register access.
http://cluelogic.com/2013/02/uvm-tutorial-for-candy-lovers-register-access-methods/
This picture shows the update() function:
This is how update() works with step order 1 to 7: