In reply to Somu:
That strategy will not work. First of all, as soon as you execute $fatal, that thread terminates immediately ( along with all other threads). No statement in the block executes after executing $fatal or $finish. Secondly, assuming you could develop the right macro, the order of execution of final blocks is unpredictable.
So you either have to live with the extra information printed out (I don’t know why you would even care if you are going have to go back and debug the test anyway), or set a global flag that each final block checks before printing out.
Of course, if you were using the UVM, you wouldn’t have to worry about any of this and the report_phase takes care of this for you.