'Do not use global_stop_request()' and 'Do not use uvm_test_done', can anyone please elaborate with examples?

In the UVM cookbook it was given as,

“In the OVM, calling global_stop_request() was not recommended for large testbenches although it was not deprecated. In
the UVM, it works but is now deprecated since it really is not consistent with having multiple time consuming phases” and

“The uvm_test_done objection works in the UVM, but it is not the recommended way of doing things. In the UVM there
are many time consuming phases, so using a global variable is no longer a robust mechanism.”

Can anyone please elaborate the above two statemants given in UVM cookbook with some real time examples, as I am unable to visualize them with the limited explanation provided in it.

Thanks,
Neith

Try looking here: https://verificationacademy.com/cookbook/objections

There aren’t concrete examples, but it’s a pretty good reference to objections.

In OVM (and UVM1.0), there was only one time-consuming phase, run(). Since there was only one phase that had to be managed, having a single global objection, ovm_test_done, was sufficient. In UVM1.1, we added the additional run-time phases pre/post/reset-configure-main-shutdown_phase(), each of which needs its own objection to be managed properly.
Please see Cookbook/endoftest.