Call check_phase after UVM_FATAL

Hi All

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)

Thanks!

In reply to apinchev:

Could you please explain what you are doing in both phases, check_phase and report_phase.

In reply to chr_sue:

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

Thanks

In reply to apinchev:

sorry, i mean “scoreboard prints all non-completed transactions during check_phase

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.

In reply to apinchev:

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.

In reply to chr_sue:

Yes, but unfortunately there are cases i do need check_phase/report working

Looking for some “hack” in UVM
Whether override uvm_default_report_server or maybe phase jumping
Hope for some elegant solution

Thanks

In reply to apinchev:

The simple example - Timeout FATAL_ERR

Thanks

In reply to apinchev:

What is the value checking something which results in a UVM_FATAL? You should be carefully to use that when coding your testbench.

In reply to chr_sue:

Timeout in UVM results with fatal
I want to know what stuck and where (EOT checking/prints)

In reply to apinchev:

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.