diff --git a/makefile b/makefile
index bef867d76de9523757a5e76a480e19ca11153021..23e891d4c7210f71bad3b9bb63baad6b8203f594 100644
--- a/makefile
+++ b/makefile
@@ -167,6 +167,9 @@ SW_MAKE_OPTIONS = CPU_PRODUCT=$(CPU_PRODUCT) TOOL_CHAIN=$(TOOL_CHAIN)
 # How many tests to Run In Parallel in a Regression
 PARALLEL_TESTS = 4
 
+# Regression Simulation Timeout
+TIMEOUT = 30m
+
 # Create a Directory to Run a Regression in
 $(eval REGRESSION_NAME =$(shell date +%Y_%m_%d_%H_%M_%S))
 $(eval REGRESSION_DIR =  $(SIM_TOP_DIR)/regression_$(REGRESSION_NAME))
@@ -181,7 +184,7 @@ define mti_template
 .PHONY: $(1)
 mti_$(1):
 	@echo Running test $(1)
-	@$(MAKE) -j1 run_mti TESTNAME=$(1) > $$(REGRESSION)/$(1).log
+	@timeout $(TIMEOUT) $(MAKE) -j1 run_mti TESTNAME=$(1) > $$(REGRESSION)/$(1).log
 	@if cat $$(REGRESSION)/$(1).log | grep -i "Test Passed"; then echo "$(1): PASSED" >> $$(REGRESSION)/RESULTS.log; else echo "$(1): FAILED" >> $$(REGRESSION)/RESULTS.log; fi > /dev/null
 endef
 
@@ -189,7 +192,7 @@ define xm_template
 .PHONY: $(1)
 xm_$(1):
 	@echo Running test $(1)
-	@$(MAKE) -j1 run_xm TESTNAME=$(1) > $$(REGRESSION)/$(1).log
+	@timeout $(TIMEOUT) @$(MAKE) -j1 run_xm TESTNAME=$(1) > $$(REGRESSION)/$(1).log
 	@if cat $$(REGRESSION)/$(1).log | grep -i "Test Passed"; then echo "$(1): PASSED" >> $$(REGRESSION)/RESULTS.log; else echo "$(1): FAILED" >> $$(REGRESSION)/RESULTS.log; fi > /dev/null
 endef
 
@@ -197,7 +200,7 @@ define vcs_template
 .PHONY: $(1)
 vcs_$(1):
 	@echo Running test $(1)
-	@$(MAKE) -j1 run_vcs TESTNAME=$(1) > $$(REGRESSION)/$(1).log
+	@timeout $(TIMEOUT) @$(MAKE) -j1 run_vcs TESTNAME=$(1) > $$(REGRESSION)/$(1).log
 	@if cat $$(REGRESSION)/$(1).log | grep -i "Test Passed"; then echo "$(1): PASSED" >> $$(REGRESSION)/RESULTS.log; else echo "$(1): FAILED" >> $$(REGRESSION)/RESULTS.log; fi > /dev/null
 endef