diff --git a/wally-pipelined/src/uncore/uncore.sv b/wally-pipelined/src/uncore/uncore.sv
index 47bce83b6..78a89b02d 100644
--- a/wally-pipelined/src/uncore/uncore.sv
+++ b/wally-pipelined/src/uncore/uncore.sv
@@ -87,31 +87,32 @@ module uncore (
   generate
     // tightly integrated memory
     dtim #(.BASE(`TIM_BASE), .RANGE(`TIM_RANGE)) dtim (.*);
-    if (`BOOTTIM_SUPPORTED) 
+    if (`BOOTTIM_SUPPORTED) begin : bootdtim
       dtim #(.BASE(`BOOTTIM_BASE), .RANGE(`BOOTTIM_RANGE)) bootdtim(.HSELTim(HSELBootTim), .HREADTim(HREADBootTim), .HRESPTim(HRESPBootTim), .HREADYTim(HREADYBootTim), .*);
+    end
 
     // memory-mapped I/O peripherals
-    if (`CLINT_SUPPORTED == 1)
+    if (`CLINT_SUPPORTED == 1) begin : clint
       clint clint(.HADDR(HADDR[15:0]), .MTIME(MTIME_CLINT), .MTIMECMP(MTIMECMP_CLINT), .*);
-    else begin
+    end else begin : clint
       assign MTIME_CLINT = 0; assign MTIMECMP_CLINT = 0;
       assign TimerIntM = 0; assign SwIntM = 0;
     end
-    if (`PLIC_SUPPORTED == 1)
+    if (`PLIC_SUPPORTED == 1) begin : plic
       plic plic(.HADDR(HADDR[27:0]), .*);
-    else begin
+    end else begin : plic
       assign ExtIntM = 0;
     end
-    if (`GPIO_SUPPORTED == 1)
+    if (`GPIO_SUPPORTED == 1) begin : gpio
       gpio gpio(.HADDR(HADDR[7:0]), .*); 
-    else begin
+    end else begin : gpio
       assign GPIOPinsOut = 0; assign GPIOPinsEn = 0; assign GPIOIntr = 0;
     end
-    if (`UART_SUPPORTED == 1)
+    if (`UART_SUPPORTED == 1) begin : uart
       uart uart(.HADDR(HADDR[2:0]), .TXRDYb(), .RXRDYb(), .INTR(UARTIntr), .SIN(UARTSin), .SOUT(UARTSout),
                 .DSRb(1'b1), .DCDb(1'b1), .CTSb(1'b0), .RIb(1'b1), 
                 .RTSb(), .DTRb(), .OUT1b(), .OUT2b(), .*);
-    else begin
+    end else begin : uart
       assign UARTSout = 0; assign UARTIntr = 0; 
     end
   endgenerate
diff --git a/wally-pipelined/testbench/testbench-linux.sv b/wally-pipelined/testbench/testbench-linux.sv
index fc7cf0328..6c44ac6fd 100644
--- a/wally-pipelined/testbench/testbench-linux.sv
+++ b/wally-pipelined/testbench/testbench-linux.sv
@@ -27,7 +27,7 @@
 
 module testbench();
   
-  parameter waveOnICount = `BUSYBEAR*140000 + `BUILDROOT*2790000; // # of instructions at which to turn on waves in graphical sim
+  parameter waveOnICount = `BUSYBEAR*140000 + `BUILDROOT*3160000; // # of instructions at which to turn on waves in graphical sim
   parameter stopICount   = `BUSYBEAR*143898 + `BUILDROOT*0000000; // # instructions at which to halt sim completely (set to 0 to let it run as far as it can)  
 
   ///////////////////////////////////////////////////////////////////////////////
@@ -140,7 +140,7 @@ module testbench();
     end
   // initial loading of memories
   initial begin
-    $readmemh({`LINUX_TEST_VECTORS,"bootmem.txt"}, dut.uncore.bootdtim.RAM, 'h1000 >> 3);
+    $readmemh({`LINUX_TEST_VECTORS,"bootmem.txt"}, dut.uncore.bootdtim.bootdtim.RAM, 'h1000 >> 3);
     $readmemh({`LINUX_TEST_VECTORS,"ram.txt"}, dut.uncore.dtim.RAM);
     $readmemb(`TWO_BIT_PRELOAD, dut.hart.ifu.bpred.bpred.Predictor.DirPredictor.PHT.memory);
     $readmemb(`BTB_PRELOAD, dut.hart.ifu.bpred.bpred.TargetPredictor.memory.memory);
@@ -260,7 +260,7 @@ module testbench();
 
           // Check if PCD is going to be flushed due to a branch or jump
           if (`BPRED_ENABLED) begin
-            PCDwrong = dut.hart.hzu.FlushD || (PCtextE.substr(0,3) == "mret"); //Old version: dut.hart.ifu.bpred.bpred.BPPredWrongE; <-- This old version failed to account for MRET.
+            PCDwrong = dut.hart.hzu.FlushD || (PCtextE.substr(0,3) == "mret") || dut.hart.priv.InstrPageFaultF || dut.hart.priv.InstrPageFaultD || dut.hart.priv.InstrPageFaultE || dut.hart.priv.InstrPageFaultM;
           end
 
           // Check PCD, InstrD
@@ -283,10 +283,10 @@ module testbench();
             scan_file_memR = $fscanf(data_file_memR, "%x\n", readAdrExpected);
             scan_file_memR = $fscanf(data_file_memR, "%x\n", readDataExpected);
             // Next force a timer interrupt (*** this may later need generalizing)
-            force dut.uncore.genblk1.clint.MTIME = dut.uncore.genblk1.clint.MTIMECMP + 1;
+            force dut.uncore.clint.clint.MTIME = dut.uncore.clint.clint.MTIMECMP + 1;
             while (clk != 0) #1;
             while (clk != 1) #1;
-            release dut.uncore.genblk1.clint.MTIME;
+            release dut.uncore.clint.clint.MTIME;
           end
         end
       end
@@ -526,6 +526,7 @@ module testbench();
   string MTVALstring = "MTVAL";
   string SEPCstring = "SEPC";
   string SCAUSEstring = "SCAUSE";
+  string STVALstring = "STVAL";
   string SSTATUSstring = "SSTATUS";
 
   logic [63:0] expectedCSR;
@@ -556,6 +557,7 @@ module testbench();
           if (``CSR``name == MTVALstring) #3; \
           if (``CSR``name == SEPCstring) #1; \
           if (``CSR``name == SCAUSEstring) #2; \
+          if (``CSR``name == STVALstring) #3; \
           if (``CSR``name == SSTATUSstring) #3; \
           scan_file_csr = $fscanf(data_file_csr, "%s\n", expectedCSRname); \
           scan_file_csr = $fscanf(data_file_csr, "%x\n", expectedCSR); \