diff --git a/tools/quartus/generic.sh b/tools/quartus/generic.sh
index 25ea0f76d3e5a484e53e467306dbecc5f829207e..548f01bd5784dd15ecf3b994b1798286285d30fc 100755
--- a/tools/quartus/generic.sh
+++ b/tools/quartus/generic.sh
@@ -46,7 +46,8 @@ unb_error() {
     echo -en '\E[40;36m'"\033[1m[${caller}]\033[0m "
     echo -e '\E[40;31m'"\033[1mERROR - ${msg}. \033[0m "
     tput sgr0
-    exit ${exitcode} 
+    # Exit if $NO_EXIT does not exist, else only return.
+    if [ -z ${NO_EXIT} ]; then exit ${exitcode}; else return 1; fi
 }
 
 # Non-exiting version of unb_error in case we wish to accumulate errors and