I found that UVM register model use semaphore to avoid conflicts, and this may cause some problems:
(1) when one sequence is writing some registers, and at the mean time, a UVM_BACK_DOOR is reading some registers, conflict happened. I found that the uvm_back_door reading is stoped.( in m_atomic.get(1) )
(2)another scenario: when config the registers using uvm register model in one sequence, one on fly reset happened, so I need to kill the sequence. and then uvm_do_on this sequence again. One problem came up, the second sequence will stop at the same writing register as the first sequence. I guess it also because the semaphore problems.
I hope that someone will help me to solve this problems. Thanks.