diff --git a/wally-pipelined/lint-wally b/wally-pipelined/lint-wally
index 9d5a20ba2..791435aca 100755
--- a/wally-pipelined/lint-wally
+++ b/wally-pipelined/lint-wally
@@ -1,11 +1,25 @@
 # check for warnings in Verilog code
 # The verilator lint tool is faster and better than Modelsim so it is best to run this first.
 
-echo "rv64ic linting..."
-verilator --lint-only --top-module wallypipelinedsoc -Iconfig/rv64ic src/*/*.sv 
-echo "rv32ic linting..."
-verilator --lint-only --top-module wallypipelinedsoc -Iconfig/rv32ic src/*/*.sv 
-#verilator --lint-only --top-module wallypipelinedsoc -Iconfig/rv64ic src/*/*.sv src/*/div/*.sv
+if [ -n "$1" ]; then
+    echo "rv64ic linting..."
+    if verilator --lint-only --top-module "$1" -Iconfig/rv64ic src/*/*.sv; then
+        echo "rv32ic linting..."
+        verilator --lint-only --top-module "$1" -Iconfig/rv32ic src/*/*.sv 
+    else
+        echo "Skipping rv32ic because rv64ic had errors or warnings"
+        exit 1
+    fi
+else
+    echo "rv64ic linting..."
+    if verilator --lint-only --top-module wallypipelinedsoc -Iconfig/rv64ic src/*/*.sv; then
+        echo "rv32ic linting..."
+        verilator --lint-only --top-module wallypipelinedsoc -Iconfig/rv32ic src/*/*.sv 
+    else
+        echo "Skipping rv32ic because rv64ic had errors or warnings"
+        exit 1
+    fi
+fi
 
 # --lint-only just runs lint rather than trying to compile and simulate
 # -I points to the include directory where files such as `include wally-config.vh  are found