How to stop a simulation in a controlled way

In reply to Gollem:

It sounds like from this and your previous questions you are trying to duplicate what is already in the UVM and addressed by objections and timeouts. So my answer to your question is use the UVM.