I’m looking for a way to call check_phase and report_phase phases after FATAL was fired.
I do want that fatal to stop the test as usual, but before, I want to run check_phase function of all components.
In general - I need the same for UVM_ERR, but here I implemented some solution (which kind of hack)
Yes
for example: my scoreboard prints all non-completed transactions → so I want to see those prints even if test failed on UVM_FATAL
Actually - I can think about many examples
In reply to apinchev:
A fatal is a heavy error and stops the simuöation. The run_phase will be left unexpectedly and does not continue to the remaining phases.
In terms of verification it is completely uninteresting to count non-completed transactions. It might be only a few.
UVM_FATAL should be reserved for unrecoverable errors where it makes no sense to continue and no data is to be trusted.
Normally simulation continues on a UVM_ERROR, but you can make the test end by killing all you sequences, or dropping all objections in a report catcher. What method you use would use to abruptly end your test might depend on the method you normally use to end the test.
You are right. The timeout results in a fatal. But you ahve only 1 timeout and you have set it. The timeout becomes active if something goes wrong in your testbench. There is no need to get the numbers of non-completed transaction a the scoreboard. You have to fix the issue.