Jump to content

Test hang with all objections dropped

Recommended Posts

I was wondering if anyone had any ideas on why my test is hanging at the end of the run phase and how to resolve it correctly. The last of the output is listed below.
The testbench has a series of agents, each including a monitor, producer driver, consumer driver, and scoreboard. At the end of the run phase when the test is hanging I'm able to step through code and see it's executing in a forever loop in the monitor and consumer driver. In both of these I'm never raising any objection. 
Tracing through the UVM code it seems it's waiting for all threads to exit before moving on. 
Some questions:
Why should it wait for threads to exit if they never raised any objection?
Do I need to kill these threads? What is the best practice?


UVM_INFO uvm_objection.svh(1245) @ 31166250: reporter [TEST_DONE] All end-of-test objections have been dropped. Calling stop tasks
UVM_INFO uvm_objection.svh(1268) @ 31166250: reporter [TEST_DONE] 'run' phase is ready to proceed to the 'extract' phase
UVM_INFO uvm_phase.svh(1199) @ 31166250: reporter [PH/TRC/EXE/ALLDROP] Phase 'common.run' (id=255) PHASE EXIT ALL_DROPPED



Share this post

Link to post
Share on other sites

Unless you really need the finer granularity of the separate run-time phases (reset,configure,main, etc), I would strongly recommend doing everything in the run_phase only. As you have found. raising and dropping objections in both run_phase and main_phase can be quite tricky to debug when it doesn't work as expected!




Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now