Why phase raise_objection and drop_objection is required in test class run_phase?

In reply to Subhra Bera:
Your testbench may have many components with run_phase processes. Some of these processes run forever, like the code in your driver. It is up to the testbench architect to decide when the “test” should end. Usually the test raises an objection before starting a sequence and drops it when the sequence returns because that represents the stimulus to your DUT. But sometimes, the test is not over when the stimulus completes, like if the stimulus only represents configuring the DUT. Then you might have a scoreboard or checker waiting for some results, and has an objection raised waiting for the result to drop it.