$fatal and $error cause simulation to stop when they are executed. I am not able to understand why we have two system tasks for the same purpose.
In reply to Krishna9:
Only $fatal is guaranteed to stop the simulation. A simulator can choose to stop on any other construct. $fatal usually means it’s pointless to continue, whereas some poeple want to collect as many $errors as they can while the test is running.