diff --git a/scripts/test_runner.py b/scripts/test_runner.py
index 983de9c..5941830 100755
--- a/scripts/test_runner.py
+++ b/scripts/test_runner.py
@@ -55,19 +55,23 @@
 class RenodeSimulation(Simulation): # pylint: disable=too-few-public-methods
     """ Renode Simulation """
     def __init__(self, path, elf):
-        # TODO(henryherman): Look at using repl platform file.
+        # Get the ROOTDIR path if it exists
+        self.rootdir = os.environ.get('ROOTDIR', default=None)
+        if self.rootdir is None:
+            parser.error("ROOTDIR environment variable not set.")
         renode_script = """
-mach create "springbok"
-machine LoadPlatformDescriptionFromString "cpu: CPU.SpringbokRiscV32 @ sysbus"
-machine LoadPlatformDescriptionFromString "ram_vec_imem: Memory.MappedMemory @ sysbus 0x30000000 {size: 0x00040000}"
-machine LoadPlatformDescriptionFromString "ram_vec_dmem: Memory.MappedMemory @ sysbus 0x34000000 {size: 0x00400000}"
-sysbus LoadELF @%s
-sysbus.cpu PC 0x30000000
-sysbus.cpu PerformanceInMips 2000
+path set @%(rootdir)s
+$bin=@%(elf)s
+include @sim/config/springbok.resc
+sysbus.cpu2 PerformanceInMips 2000
 emulation SetGlobalQuantum "1"
-sysbus.cpu IsHalted False
-start"""
-        self.renode_script = renode_script % elf
+start
+sysbus.vec_controlblock WriteDoubleWord 0xc 0"""
+        self.script_params = {
+            "rootdir": self.rootdir,
+            "elf":elf
+        }
+        self.renode_script = renode_script % self.script_params
 
         self.renode_args = [
             "mono",
diff --git a/softrvv/include/softrvv.h b/softrvv/include/softrvv.h
index 18c2c21..bfc0f54 100644
--- a/softrvv/include/softrvv.h
+++ b/softrvv/include/softrvv.h
@@ -24,6 +24,7 @@
 #include "softrvv_vnsra.h"
 #include "softrvv_vnsrl.h"
 #include "softrvv_vor.h"
+#include "softrvv_vredsum.h"
 #include "softrvv_vrem.h"
 #include "softrvv_vsext_vzext.h"
 #include "softrvv_vsll.h"
diff --git a/softrvv/include/softrvv_vredsum.h b/softrvv/include/softrvv_vredsum.h
new file mode 100644
index 0000000..7f96886
--- /dev/null
+++ b/softrvv/include/softrvv_vredsum.h
@@ -0,0 +1,18 @@
+#ifndef SOFTRVV_VREDSUM_H
+#define SOFTRVV_VREDSUM_H
+
+#include <stddef.h>
+
+namespace softrvv {
+
+template <typename T>
+void vredsum_vs(T *dest, T *src2, T *src1, int32_t avl) {
+  dest[0] = src1[0];
+  for (int32_t idx = 0; idx < avl; idx++) {
+    dest[0] += src2[idx];
+  }
+}
+
+}  // namespace softrvv
+
+#endif  // SOFTRVV_VREDSUM_H
diff --git a/softrvv/tests/CMakeLists.txt b/softrvv/tests/CMakeLists.txt
index 62cbc9a..9614eb4 100644
--- a/softrvv/tests/CMakeLists.txt
+++ b/softrvv/tests/CMakeLists.txt
@@ -260,6 +260,15 @@
    -Xlinker --defsym=__itcm_length__=128K
 )
 
+softrvv_vec_cc_generated_test(
+  NAME
+    vredsum
+  TEMPLATE
+    softrvv_vredsum_test.tpl.cpp
+  LINKOPTS
+   -Xlinker --defsym=__itcm_length__=128K
+)
+
 vec_cc_test(
   NAME
     softrvv_vmax
diff --git a/softrvv/tests/templates/opmvv_vred_test.tpl.cpp b/softrvv/tests/templates/opmvv_vred_test.tpl.cpp
new file mode 100644
index 0000000..c40f1c1
--- /dev/null
+++ b/softrvv/tests/templates/opmvv_vred_test.tpl.cpp
@@ -0,0 +1,44 @@
+<%!
+import vec_test_helpers
+%>\
+<%def name="test_opmvv_vred(template_helper, src2, src1, ref_vv)">
+<%
+src1 = vec_test_helpers.to_carr_str(src1)
+src2 = vec_test_helpers.to_carr_str(src2)
+ref_vv = vec_test_helpers.to_carr_str(ref_vv)
+%>\
+namespace softrvv_${template_helper.op_code}_test {
+namespace {
+${insert_variable_init(template_helper, src2, src1, ref_vv)}
+
+class SoftRvv${template_helper.op_code.capitalize()}Test : public ::testing::Test {
+ protected:
+  void SetUp() override { memset(dest, 0, sizeof(dest)); }
+};
+${insert_test(template_helper)}\
+}  // namespace
+}  // namespace softrvv_${op}_test\
+</%def>\
+
+<%def name="insert_variable_init(template_helper, src2, src1, ref_vv)">
+<%
+  var_types = template_helper.get_var_types()
+%>\
+${var_types.src1_type} src1[] = {${src1}};
+${var_types.src2_type} src2[] = {${src2}};
+const int kAVL = sizeof(src1)/sizeof(src1[0]);
+${var_types.dest_type} dest[kAVL];
+
+${var_types.dest_type} ref_vv[kAVL] = {${ref_vv}};
+</%def>\
+
+<%def name="insert_test(template_helper)">
+<%
+var_types = template_helper.get_var_types()
+datatypes = template_helper.get_softrvv_template_data_type()
+%>\
+TEST_F(SoftRvv${template_helper.op_code.capitalize()}Test, VS) {
+  softrvv::${template_helper.op_code}_vs<${datatypes}>(dest, src2, src1, kAVL);\
+  assert_vec_elem_eq<${var_types.dest_type}>(kAVL, dest, ref_vv);
+}
+</%def>\
diff --git a/softrvv/tests/templates/softrvv_vredsum_test.tpl.cpp b/softrvv/tests/templates/softrvv_vredsum_test.tpl.cpp
new file mode 100644
index 0000000..7eced1a
--- /dev/null
+++ b/softrvv/tests/templates/softrvv_vredsum_test.tpl.cpp
@@ -0,0 +1,12 @@
+<%inherit file="base.tpl.cpp"/>\
+<%namespace name="tests" file="opmvv_vred_test.tpl.cpp"/>
+<%
+import numpy as np
+import vec_test_helpers
+template_helper = vec_test_helpers.VecTemplateHelper(op, 32)
+src2, src1, rs1 = template_helper.get_test_inputs(n=5)
+dest_type = template_helper.get_np_dest_type()
+ref_vv = np.zeros(src2.shape, dtype=dest_type)
+ref_vv[0] = src2.sum() + src1[0]
+%>\
+${tests.test_opmvv_vred(template_helper, src2, src1, ref_vv)}
diff --git a/springbok/crt0.S b/springbok/crt0.S
index f9e46f6..d4ce006 100644
--- a/springbok/crt0.S
+++ b/springbok/crt0.S
@@ -246,13 +246,27 @@
 
 .weak exception_handler
 exception_handler:
-        li   t4, 0 # ERROR logging level
-        la   a0, exception_msg
-        csrr t5, mcause
-        .word 0x001E50EFB # simprint t4, a0, t5 (encoded as custom3<func3=0>)
+        # Exception occurred
+        li   t0, 0x65637845 # "Exce"
+        li   t1, 0x6f697470 # "ptio"
+        li   t2, 0x636f206e # "n oc"
+        li   t3, 0x72727563 # "curr"
+        li   t4, 0x00006465 # "ed\0\0"
+        addi sp, sp, -20
+        sw   t0, 0(sp)
+        sw   t1, 4(sp)
+        sw   t2, 8(sp)
+        sw   t3, 12(sp)
+        sw   t4, 16(sp)
+        csrr a0, mcause
+        li   t6, 0 # ERROR logging level
+        .word 0x00A10FFB # simprint t6, sp, a0 (encoded as custom3<func3=0>)
+        addi sp, sp, 20
+        # Store mcause as the reture value
+        mv   s0, a0
         call print_csrs
-        # Store the return value as mcause to be used in _finish
-        mv   a0, t5
+        # Restore the return value to be used in _finish
+        mv   a0, s0
         # Clear the stack
         la   sp, _stack_ptr
         j _finish
@@ -260,7 +274,3 @@
 .weak print_csrs
 print_csrs:
         mret
-
-.section ".rodata","a",@progbits
-exception_msg:
-        .string "Exception occurred\0"
