diff --git a/regressiontest/modelsim_regression_test_vhdl.py b/regressiontest/modelsim_regression_test_vhdl.py
index edc3e137d926c1a578b835a29a74c0f7b14ff8e1..3583c16c73811ed14933dd7f115bbde7421df259 100755
--- a/regressiontest/modelsim_regression_test_vhdl.py
+++ b/regressiontest/modelsim_regression_test_vhdl.py
@@ -79,7 +79,7 @@ from terminal import Terminal
 MAX_PROC = 4  # maximum number of processes to run, each process needs a modelsim license
 
 MK_TIMEOUT = 20 * 60  # timeout in seconds (1x60 seconds = 1 min(s)) for each *_mk.do command
-SIM_TIMEOUT = 3 * 3600  # timeout in seconds (1x3600 seconds = 1 hour(s)) for each *_sim.do command
+SIM_TIMEOUT = 4 * 3600  # timeout in seconds (1x3600 seconds = 1 hour(s)) for each *_sim.do command
 
 
 def main(args, time_ordered_tb_dict):
@@ -700,11 +700,17 @@ class TestBenchWorker(multiprocessing.Process):
         The do_log is a string containing e.g. the transcipt output.
         - For make (mk) the error string is 'Error:'
         - For simulation there are several error strings.
+        - Ignore finished Failure: 'Failure: Tb Simulation finished.'
         """
-        if "Fatal:" in do_log or "Error:" in do_log or "Failure:" in do_log:
-            return True
-        else:
-            return False
+        err = False
+        for line in do_log.splitlines():
+            if "Fatal:" in line:
+                err = True
+            if "Error:" in line:
+                err = True
+            if "Failure:" in line and "Tb Simulation finished" not in line:
+                err = True
+        return err
 
     def run_mk_all(self):
         """