In reply to bachan21:
You have race conditions in your environment. That’s the issue. There is no guarantee that messages generated at time 0 will be displayed in a known order.
In general, you should reduce the amount of testbench messaging to the bare minimum. This will likely improve your testbench performance as messaging is often the highest consumer of time in a UVM environment. Why are you printing out messages for each component/driver? I recommend that you only enable those messages with UVM_HIGH verbosity.