Updated all the testbenches to use the new split power supplies and 37-bit
user space GPIO.
diff --git a/verilog/dv/caravel/mgmt_soc/hkspi/hkspi.c b/verilog/dv/caravel/mgmt_soc/hkspi/hkspi.c
index 03cb7f5..826bf59 100644
--- a/verilog/dv/caravel/mgmt_soc/hkspi/hkspi.c
+++ b/verilog/dv/caravel/mgmt_soc/hkspi/hkspi.c
@@ -56,7 +56,7 @@
     while (reg_mprj_xfer == 1);
 
     // Start test
-    reg_mprj_data = 0xa0000000;
+    reg_mprj_datal = 0xa0000000;
 
     // Set clock to 64 kbaud and enable the UART
     reg_uart_clkdiv = 625;
@@ -70,6 +70,6 @@
     print(" |  __/| | (_| (_) |__) | (_) | |___\n");
     print(" |_|   |_|\\___\\___/____/ \\___/ \\____|\n");
 
-    reg_mprj_data = 0xab000000;
+    reg_mprj_datal = 0xab000000;
 }
 
diff --git a/verilog/dv/caravel/mgmt_soc/hkspi/hkspi_tb.v b/verilog/dv/caravel/mgmt_soc/hkspi/hkspi_tb.v
index d139182..1922c63 100644
--- a/verilog/dv/caravel/mgmt_soc/hkspi/hkspi_tb.v
+++ b/verilog/dv/caravel/mgmt_soc/hkspi/hkspi_tb.v
@@ -14,7 +14,7 @@
 
 	wire gpio;
 	wire [15:0] checkbits;
-	wire [9:0] noconnect;
+	wire [36:0] mprj_io;
 	wire uart_tx;
 	wire uart_rx;
 
@@ -234,14 +234,32 @@
 	assign hk_csb = CSB;
 	assign hk_sdi = SDI;
 
+	assign checkbits = mprj_io[31:16];
+	assign uart_tx = mprj_io[6];
+	assign mprj_io[5] = uart_rx;
+	assign mprj_io[4] = hk_sck;
+	assign mprj_io[3] = hk_csb;
+	assign mprj_io[2] = hk_sdi;
+	assign SDO = mprj_io[1];
+	
 	caravel uut (
-		.vdd3v3	  (VDD3V3),
-		.vdd1v8	  (VDD1V8),
-		.vss	  (VSS),
+		.vddio	  (VDD3V3),
+		.vssio	  (VSS),
+		.vdda	  (VDD3V3),
+		.vssa	  (VSS),
+		.vccd	  (VDD1V8),
+		.vssd	  (VSS),
+		.vdda1    (VDD3V3),
+		.vdda2    (VDD3V3),
+		.vssa1	  (VSS),
+		.vssa2	  (VSS),
+		.vccd1	  (VDD1V8),
+		.vccd2	  (VDD1V8),
+		.vssd1	  (VSS),
+		.vssd2	  (VSS),
 		.clock	  (clock),
 		.gpio     (gpio),
-		.mprj_io  ({checkbits, noconnect[9:1], uart_tx, uart_rx,
-				hk_sck, hk_csb, hk_sdi, SDO, noconnect[0]}),
+		.mprj_io  (mprj_io),
 		.flash_csb(flash_csb),
 		.flash_clk(flash_clk),
 		.flash_io0(flash_io0),
diff --git a/verilog/dv/caravel/mgmt_soc/mem/mem.c b/verilog/dv/caravel/mgmt_soc/mem/mem.c
index 8f4b542..7fbf8ad 100644
--- a/verilog/dv/caravel/mgmt_soc/mem/mem.c
+++ b/verilog/dv/caravel/mgmt_soc/mem/mem.c
@@ -39,7 +39,7 @@
     while (reg_mprj_xfer == 1);
 
     // start test
-    reg_mprj_data = 0xA0400000;
+    reg_mprj_datal = 0xA0400000;
 
     // Test Word R/W
     for (i=0; i<10; i++)
@@ -47,30 +47,30 @@
 	
     for (i=0; i<10; i++)
 	if ((i*5000+10000) != ints[i])
-	    reg_mprj_data = 0xAB400000;
+	    reg_mprj_datal = 0xAB400000;
 
-    reg_mprj_data = 0xAB410000;
+    reg_mprj_datal = 0xAB410000;
 	
     // Test Half Word R/W
-    reg_mprj_data = 0xA0200000;
+    reg_mprj_datal = 0xA0200000;
     for (i=0; i<10; i++)
 	shorts[i] = i*500 + 100;
 	
     for(i=0; i<10; i++)
 	if((i*500+100) != shorts[i])
-	    reg_mprj_data = 0xAB200000;
+	    reg_mprj_datal = 0xAB200000;
 
-    reg_mprj_data = 0xAB210000;
+    reg_mprj_datal = 0xAB210000;
 
     // Test byte R/W
-    reg_mprj_data = 0xA0100000;
+    reg_mprj_datal = 0xA0100000;
     for(i=0; i<10; i++)
 	bytes[i] = i*5 + 10;
 	
     for(i=0; i<10; i++)
 	if((i*5+10) != bytes[i])
-	    reg_mprj_data = 0xAB100000;
+	    reg_mprj_datal = 0xAB100000;
 
-    reg_mprj_data = 0xAB110000;
+    reg_mprj_datal = 0xAB110000;
 }
 
diff --git a/verilog/dv/caravel/mgmt_soc/mem/mem_tb.v b/verilog/dv/caravel/mgmt_soc/mem/mem_tb.v
index d815b9d..c3afb8b 100644
--- a/verilog/dv/caravel/mgmt_soc/mem/mem_tb.v
+++ b/verilog/dv/caravel/mgmt_soc/mem/mem_tb.v
@@ -29,12 +29,14 @@
 
 	wire gpio;
         wire [15:0] checkbits;
-        wire [15:0] noconnect;
+	wire [36:0] mprj_io;
 	wire flash_csb;
 	wire flash_clk;
 	wire flash_io0;
 	wire flash_io1;
 
+	assign checkbits = mprj_io[31:16];
+
 	// External clock is used by default.  Make this artificially fast for the
 	// simulation.  Normally this would be a slow clock and the digital PLL
 	// would be the fast clock.
@@ -117,12 +119,23 @@
 	assign VDD1V8 = 1'b1;
 
 	caravel uut (
-		.vdd3v3	  (VDD3V3),
-		.vdd1v8	  (VDD1V8),
-		.vss	  (VSS),
+		.vddio	  (VDD3V3),
+		.vssio	  (VSS),
+		.vdda	  (VDD3V3),
+		.vssa	  (VSS),
+		.vccd	  (VDD1V8),
+		.vssd	  (VSS),
+		.vdda1    (VDD3V3),
+		.vdda2    (VDD3V3),
+		.vssa1	  (VSS),
+		.vssa2	  (VSS),
+		.vccd1	  (VDD1V8),
+		.vccd2	  (VDD1V8),
+		.vssd1	  (VSS),
+		.vssd2	  (VSS),
 		.clock	  (clock),
 		.gpio     (gpio),
-                .mprj_io  ({checkbits, noconnect}),
+		.mprj_io  (mprj_io),
 		.flash_csb(flash_csb),
 		.flash_clk(flash_clk),
 		.flash_io0(flash_io0),
diff --git a/verilog/dv/caravel/mgmt_soc/mprj_ctrl/Makefile b/verilog/dv/caravel/mgmt_soc/mprj_ctrl/Makefile
index e60de7e..c69bb9f 100644
--- a/verilog/dv/caravel/mgmt_soc/mprj_ctrl/Makefile
+++ b/verilog/dv/caravel/mgmt_soc/mprj_ctrl/Makefile
@@ -1,3 +1,4 @@
+
 FIRMWARE_PATH = ../..
 RTL_PATH = ../../../../rtl
 IP_PATH = ../../../../ip
@@ -20,13 +21,13 @@
 %.vcd: %.vvp
 	vvp $<
 
-%.elf: %.c  $(FIRMWARE_PATH)/sections.lds  $(FIRMWARE_PATH)/start.s
-	${GCC_PATH}/riscv32-unknown-elf-gcc -march=rv32imc -Wl,-Bstatic,-T,  $(FIRMWARE_PATH)/sections.lds,--strip-debug -ffreestanding -nostdlib -o $@  $(FIRMWARE_PATH)/start.s $<
+%.elf: %.c $(FIRMWARE_PATH)/sections.lds $(FIRMWARE_PATH)/start.s
+	${GCC_PATH}/riscv32-unknown-elf-gcc -march=rv32imc -Wl,-Bstatic,-T,$(FIRMWARE_PATH)/sections.lds,--strip-debug -ffreestanding -nostdlib -o $@ $(FIRMWARE_PATH)/start.s $<
 
 %.hex: %.elf
 	${GCC_PATH}/riscv32-unknown-elf-objcopy -O verilog $< $@ 
 	# to fix flash base address
-	sed -i 's/@10000000/@00000000/g' $@
+	sed -i 's/@10000000/@00000000/g' $@                     
 
 %.bin: %.elf
 	${GCC_PATH}/riscv32-unknown-elf-objcopy -O binary $< /dev/stdout | tail -c +1048577 > $@
@@ -37,3 +38,4 @@
 	rm -f *.elf *.hex *.bin *.vvp *.vcd *.log
 
 .PHONY: clean hex all
+
diff --git a/verilog/dv/caravel/mgmt_soc/mprj_ctrl/mprj_ctrl.c b/verilog/dv/caravel/mgmt_soc/mprj_ctrl/mprj_ctrl.c
index fd9d95e..4413573 100644
--- a/verilog/dv/caravel/mgmt_soc/mprj_ctrl/mprj_ctrl.c
+++ b/verilog/dv/caravel/mgmt_soc/mprj_ctrl/mprj_ctrl.c
@@ -55,37 +55,37 @@
     reg_mprj_xfer = 1;
     while (reg_mprj_xfer == 1);
 
-    reg_mprj_data = 0;
+    reg_mprj_datal = 0;
 
     // start test
-    reg_mprj_data = 0xA040;
+    reg_mprj_datal = 0xA040;
 
     // Write to IO Control
     reg_mprj_io_0 = 0x004F;
     if (reg_mprj_io_0 != 0x004F)
-	reg_mprj_data = 0xAB400000;
+	reg_mprj_datal = 0xAB400000;
      else
-	reg_mprj_data = 0xAB410000;
+	reg_mprj_datal = 0xAB410000;
 
     // Write to IO Control 
     reg_mprj_io_1 = 0x005F;
     if (reg_mprj_io_1 != 0x005F)
-	reg_mprj_data = 0xAB500000;
+	reg_mprj_datal = 0xAB500000;
     else
-	reg_mprj_data = 0xAB510000;
+	reg_mprj_datal = 0xAB510000;
 
     // Write to IO Control
     reg_mprj_io_2 = 0x006F;
     if (reg_mprj_io_2 != 0x006F)
-	reg_mprj_data = 0xAB600000;
+	reg_mprj_datal = 0xAB600000;
     else
-	reg_mprj_data = 0xAB610000;
+	reg_mprj_datal = 0xAB610000;
 
     // Write to IO Control
     reg_mprj_io_3 = 0xF0F5;
     if (reg_mprj_io_3 != 0xF0F5)
-	reg_mprj_data = 0xAB700000;
+	reg_mprj_datal = 0xAB700000;
     else
-	reg_mprj_data = 0xAB710000;
+	reg_mprj_datal = 0xAB710000;
 }
 
diff --git a/verilog/dv/caravel/mgmt_soc/mprj_ctrl/mprj_ctrl_tb.v b/verilog/dv/caravel/mgmt_soc/mprj_ctrl/mprj_ctrl_tb.v
index 2557229..ef30bcd 100644
--- a/verilog/dv/caravel/mgmt_soc/mprj_ctrl/mprj_ctrl_tb.v
+++ b/verilog/dv/caravel/mgmt_soc/mprj_ctrl/mprj_ctrl_tb.v
@@ -13,7 +13,7 @@
 	wire flash_clk;
 	wire flash_io0;
 	wire flash_io1;
-	wire [31:0] user_io;
+	wire [36:0] user_io;
 	wire SDO;
 
 	wire [15:0] checkbits;
@@ -67,14 +67,10 @@
 	end
 
 	initial begin
-		CSB <= 1'b1;
-		SCK <= 1'b0;
-		SDI <= 1'b0;
 		RSTB <= 1'b0;
 		#1000;
 		RSTB <= 1'b1;	    // Release reset
 		#2000;
-		CSB <= 1'b0;	    // Apply CSB to start transmission
 	end
 
 	always @(gpio) begin
@@ -90,9 +86,20 @@
 	assign VDD3V3 = 1'b1;
 
 	caravel uut (
-		.vdd3v3	   (VDD3V3),
-		.vdd1v8	   (VDD1V8),
-		.vss	   (VSS),
+		.vddio	  (VDD3V3),
+		.vssio	  (VSS),
+		.vdda	  (VDD3V3),
+		.vssa	  (VSS),
+		.vccd	  (VDD1V8),
+		.vssd	  (VSS),
+		.vdda1    (VDD3V3),
+		.vdda2    (VDD3V3),
+		.vssa1	  (VSS),
+		.vssa2	  (VSS),
+		.vccd1	  (VDD1V8),
+		.vccd2	  (VDD1V8),
+		.vssd1	  (VSS),
+		.vssd2	  (VSS),
 		.clock	   (clock),
 		.gpio      (gpio),
 		.mprj_io   (user_io),
diff --git a/verilog/dv/caravel/mgmt_soc/perf/perf.c b/verilog/dv/caravel/mgmt_soc/perf/perf.c
index b0edcb9..0d83518 100644
--- a/verilog/dv/caravel/mgmt_soc/perf/perf.c
+++ b/verilog/dv/caravel/mgmt_soc/perf/perf.c
@@ -39,15 +39,15 @@
     reg_mprj_xfer = 1;
     while (reg_mprj_xfer == 1);
 
-    reg_mprj_data = 0;
+    reg_mprj_datal = 0;
 
     // start test
-    reg_mprj_data = 0xA0000000;
+    reg_mprj_datal = 0xA0000000;
 	
     for (i=0; i<100; i++)
         sum += (sum + i);
     
-    reg_mprj_data = 0xAB000000;
+    reg_mprj_datal = 0xAB000000;
     
     return sum;
 }
diff --git a/verilog/dv/caravel/mgmt_soc/perf/perf_tb.v b/verilog/dv/caravel/mgmt_soc/perf/perf_tb.v
index 985ca3f..3323480 100644
--- a/verilog/dv/caravel/mgmt_soc/perf/perf_tb.v
+++ b/verilog/dv/caravel/mgmt_soc/perf/perf_tb.v
@@ -29,12 +29,14 @@
 
 	wire gpio;
 	wire [15:0] checkbits;
-	wire [15:0] noconnect;
+	wire [36:0] mprj_io;
 	wire flash_csb;
 	wire flash_clk;
 	wire flash_io0;
 	wire flash_io1;
 
+	assign checkbits = mprj_io[31:16];
+
 	// External clock is used by default.  Make this artificially fast for the
 	// simulation.  Normally this would be a slow clock and the digital PLL
 	// would be the fast clock.
@@ -93,12 +95,23 @@
 	assign VDD3V3 = 1'b1;
 
 	caravel uut (
-		.vdd3v3	  (VDD3V3  ),
-		.vdd1v8	  (VDD1V8),
-		.vss	  (VSS),
+		.vddio	  (VDD3V3),
+		.vssio	  (VSS),
+		.vdda	  (VDD3V3),
+		.vssa	  (VSS),
+		.vccd	  (VDD1V8),
+		.vssd	  (VSS),
+		.vdda1    (VDD3V3),
+		.vdda2    (VDD3V3),
+		.vssa1	  (VSS),
+		.vssa2	  (VSS),
+		.vccd1	  (VDD1V8),
+		.vccd2	  (VDD1V8),
+		.vssd1	  (VSS),
+		.vssd2	  (VSS),
 		.clock	  (clock),
 		.gpio     (gpio),
-		.mprj_io  ({checkbits, noconnect}),
+		.mprj_io  (mprj_io),
 		.flash_csb(flash_csb),
 		.flash_clk(flash_clk),
 		.flash_io0(flash_io0),
diff --git a/verilog/dv/caravel/mgmt_soc/sysctrl/sysctrl.c b/verilog/dv/caravel/mgmt_soc/sysctrl/sysctrl.c
index 023a08c..70b5b4a 100644
--- a/verilog/dv/caravel/mgmt_soc/sysctrl/sysctrl.c
+++ b/verilog/dv/caravel/mgmt_soc/sysctrl/sysctrl.c
@@ -2,42 +2,46 @@
 
 // --------------------------------------------------------
 
+// NOTE:  Testbench to be completed.  Needs to use the new
+// architecture in which the SPI master is enabled and used
+// to access the housekeeping SPI directly as an SPI slave
+
 /*
-	System Control Test
-        - Reads default value of SPI-Controlled registers
-        - Flags failure/success using gpio
-*/
+ *	System Control Test
+ *      - Reads default value of SPI-Controlled registers
+ *      - Flags failure/success using gpio
+ */
 void main()
 {
 	int i;
 
-    reg_gpio_data = 0;
+    reg_gpio_datal = 0;
 	reg_gpio_ena =  0x0000;
 
 	// start test
-	reg_gpio_data = 0xA040;
+	reg_gpio_datal = 0xA040;
 
     // Read Product ID value
-    if(0x05 != reg_spi_prod_id) reg_gpio_data = 0xAB40;
-	reg_gpio_data = 0xAB41;
+    if(0x05 != reg_spi_prod_id) reg_gpio_datal = 0xAB40;
+	reg_gpio_datal = 0xAB41;
 
     // Read Manufacturer ID value
-    if(0x456 != reg_spi_mfgr_id) reg_gpio_data = 0xAB50;
-	reg_gpio_data = 0xAB51;
+    if(0x456 != reg_spi_mfgr_id) reg_gpio_datal = 0xAB50;
+	reg_gpio_datal = 0xAB51;
 
     // Read Mask revision 
-    if(0x1 != reg_spi_mask_rev) reg_gpio_data = 0xAB60;
-	reg_gpio_data = 0xAB61;
+    if(0x1 != reg_spi_mask_rev) reg_gpio_datal = 0xAB60;
+	reg_gpio_datal = 0xAB61;
 
     // Read PLL-Bypass
-    if(0x1 != reg_spi_pll_bypass) reg_gpio_data = 0xAB70;
-	reg_gpio_data = 0xAB71;
+    if(0x1 != reg_spi_pll_bypass) reg_gpio_datal = 0xAB70;
+	reg_gpio_datal = 0xAB71;
 
-    if(0x7FFDFFF != reg_spi_pll_config) reg_gpio_data = 0xAB80;
-	reg_gpio_data = 0xAB81;
+    if(0x7FFDFFF != reg_spi_pll_config) reg_gpio_datal = 0xAB80;
+	reg_gpio_datal = 0xAB81;
 
     // Read spi enables
-    if(0x83 != reg_spi_enables) reg_gpio_data = 0xAB90;
-	reg_gpio_data = 0xAB91;
+    if(0x83 != reg_spi_enables) reg_gpio_datal = 0xAB90;
+	reg_gpio_datal = 0xAB91;
 }
 
diff --git a/verilog/dv/caravel/mgmt_soc/sysctrl/sysctrl_tb.v b/verilog/dv/caravel/mgmt_soc/sysctrl/sysctrl_tb.v
index 708bc9e..c1a1e2a 100644
--- a/verilog/dv/caravel/mgmt_soc/sysctrl/sysctrl_tb.v
+++ b/verilog/dv/caravel/mgmt_soc/sysctrl/sysctrl_tb.v
@@ -6,18 +6,19 @@
 
 module sysctrl_tb;
 	reg clock;
+	reg RSTB;
 
-	reg SDI, CSB, SCK, RSTB;
-
-	wire [1:0] gpio;
+	wire gpio;
+	wire [15:0] checkbits;
+	wire [36:0] mprj_io;
 	wire flash_csb;
 	wire flash_clk;
 	wire flash_io0;
 	wire flash_io1;
-	wire flash_io2;
-	wire flash_io3;
 	wire SDO;
 
+	assign checkbits = mprj_io[31:16];
+
 	// External clock is used by default.  Make this artificially fast for the
 	// simulation.  Normally this would be a slow clock and the digital PLL
 	// would be the fast clock.
@@ -32,7 +33,7 @@
 		$dumpfile("sysctrl_tb.vcd");
 		$dumpvars(0, sysctrl_tb);
 		repeat (25) begin
-			repeat (1000) @(posedge XCLK);
+			repeat (1000) @(posedge clock);
 			$display("+1000 cycles");
 		end
 		$display("%c[1;31m",27);
@@ -41,57 +42,57 @@
 		$finish;
 	end
 
-	always @(gpio) begin
-		if(gpio == 16'hA040) begin
+	always @(checkbits) begin
+		if(checkbits == 16'hA040) begin
 			$display("System control Test started");
 		end
-		else if(gpio == 16'hAB40) begin
+		else if(checkbits == 16'hAB40) begin
 			$display("%c[1;31m",27);
 			$display("Monitor: System control (RTL) Test failed");
 			$display("%c[0m",27);
 			$finish;
 		end
-		else if(gpio == 16'hAB41) begin
+		else if(checkbits == 16'hAB41) begin
 			$display("Monitor: System control product ID read passed");
 		end
-        else if(gpio == 16'hAB50) begin
+        else if(checkbits == 16'hAB50) begin
             $display("%c[1;31m",27);
 			$display("Monitor: System control manufacture ID read failed");
 			$display("%c[0m",27);
 			$finish;
-        end else if(gpio == 16'hAB51) begin
+        end else if(checkbits == 16'hAB51) begin
 			$display("Monitor: System control manufacture ID read passed");
         end
-        else if(gpio == 16'hAB60) begin
+        else if(checkbits == 16'hAB60) begin
             $display("%c[1;31m",27);
 			$display("Monitor: System control mask rev read failed");
 			$display("%c[0m",27);
 			$finish;
-        end else if(gpio == 16'hAB61) begin
+        end else if(checkbits == 16'hAB61) begin
 			$display("Monitor: System control mask rev read passed");
         end
-        else if(gpio == 16'hAB70) begin
+        else if(checkbits == 16'hAB70) begin
             $display("%c[1;31m",27);
 			$display("Monitor: System control pll-bypass read failed");
 			$display("%c[0m",27);
 			$finish;
-        end else if(gpio == 16'hAB71) begin
+        end else if(checkbits == 16'hAB71) begin
 			$display("Monitor: System control pll-bypass read passed");
         end
-        else if(gpio == 16'hAB80) begin
+        else if(checkbits == 16'hAB80) begin
             $display("%c[1;31m",27);
 			$display("Monitor: System control pll-config read failed");
 			$display("%c[0m",27);
 			$finish;
-        end else if(gpio == 16'hAB81) begin
+        end else if(checkbits == 16'hAB81) begin
 			$display("Monitor: System control pll-config read passed");
         end
-        else if(gpio == 16'hAB90) begin
+        else if(checkbits == 16'hAB90) begin
             $display("%c[1;31m",27);
 			$display("Monitor: System control spi-enables read failed");
 			$display("%c[0m",27);
 			$finish;
-        end else if(gpio == 16'hAB91) begin
+        end else if(checkbits == 16'hAB91) begin
 			$display("Monitor: System control spi-enables read passed");
 			$display("Monitor: Sysctrl (RTL) test passed.");
             $finish;
@@ -109,8 +110,8 @@
 		CSB <= 1'b0;	    // Apply CSB to start transmission
 	end
 
-	always @(gpio) begin
-		#1 $display("GPIO state = %b ", gpio);
+	always @(checkbits) begin
+		#1 $display("GPIO state = %b ", checkbits);
 	end
 
 	wire VDD3V3;
@@ -122,25 +123,28 @@
 	assign VDD3V3 = 1'b1;
 
 	caravel uut (
-		.vdd3v3	  (VDD3V3),
-		.vdd1v8	  (VDD1V8),
-		.vss	  (VSS),
+		.vddio	  (VDD3V3),
+		.vssio	  (VSS),
+		.vdda	  (VDD3V3),
+		.vssa	  (VSS),
+		.vccd	  (VDD1V8),
+		.vssd	  (VSS),
+		.vdda1    (VDD3V3),
+		.vdda2    (VDD3V3),
+		.vssa1	  (VSS),
+		.vssa2	  (VSS),
+		.vccd1	  (VDD1V8),
+		.vccd2	  (VDD1V8),
+		.vssd1	  (VSS),
+		.vssd2	  (VSS),
 		.clock    (clock),
-		.SDI	  (SDI),
-		.SDO	  (SDO),
-		.CSB	  (CSB),
-		.SCK	  (SCK),
-		.ser_rx	  (1'b0),
-		.ser_tx	  (),
-		.irq	  (1'b0),
 		.gpio     (gpio),
+		.mprj_io  (mprj_io),
 		.flash_csb(flash_csb),
 		.flash_clk(flash_clk),
 		.flash_io0(flash_io0),
 		.flash_io1(flash_io1),
-		.flash_io2(flash_io2),
-		.flash_io3(flash_io3),
-		.RSTB	  (RSTB)
+		.resetb	  (RSTB)
 	);
 
 	spiflash #(
@@ -150,8 +154,8 @@
 		.clk(flash_clk),
 		.io0(flash_io0),
 		.io1(flash_io1),
-		.io2(flash_io2),
-		.io3(flash_io3)
+		.io2(),			// not used
+		.io3()			// not used
 	);
 
 endmodule
diff --git a/verilog/dv/caravel/mgmt_soc/uart/uart.c b/verilog/dv/caravel/mgmt_soc/uart/uart.c
index a0b5cc3..d89741f 100644
--- a/verilog/dv/caravel/mgmt_soc/uart/uart.c
+++ b/verilog/dv/caravel/mgmt_soc/uart/uart.c
@@ -41,12 +41,12 @@
     reg_uart_enable = 1;
 
     // Start test
-    reg_mprj_data = 0xa0000000;
+    reg_mprj_datal = 0xa0000000;
 
     // This should appear at the output, received by the testbench UART.
     print("\n");
     // print("Monitor: Test UART (RTL) passed\n\n");
     print("X\n\n");
 
-    reg_mprj_data = 0xab000000;
+    reg_mprj_datal = 0xab000000;
 }
diff --git a/verilog/dv/caravel/mgmt_soc/uart/uart_tb.v b/verilog/dv/caravel/mgmt_soc/uart/uart_tb.v
index a52693b..aa1a91b 100644
--- a/verilog/dv/caravel/mgmt_soc/uart/uart_tb.v
+++ b/verilog/dv/caravel/mgmt_soc/uart/uart_tb.v
@@ -33,7 +33,7 @@
 	wire flash_clk;
 	wire flash_io0;
 	wire flash_io1;
-	wire [31:0] mprj_io;
+	wire [36:0] mprj_io;
 	wire [15:0] checkbits;
 	wire uart_tx;
 	wire SDO;
@@ -86,9 +86,20 @@
 	assign VDD3V3 = 1'b1;
 
 	caravel uut (
-		.vdd3v3	  (VDD3V3),
-		.vdd1v8	  (VDD1V8),
-		.vss	  (VSS),
+		.vddio	  (VDD3V3),
+		.vssio	  (VSS),
+		.vdda	  (VDD3V3),
+		.vssa	  (VSS),
+		.vccd	  (VDD1V8),
+		.vssd	  (VSS),
+		.vdda1    (VDD3V3),
+		.vdda2    (VDD3V3),
+		.vssa1	  (VSS),
+		.vssa2	  (VSS),
+		.vccd1	  (VDD1V8),
+		.vccd2	  (VDD1V8),
+		.vssd1	  (VSS),
+		.vssd2	  (VSS),
 		.clock	  (clock),
 		.gpio     (gpio),
 		.mprj_io  (mprj_io),
diff --git a/verilog/dv/caravel/user_proj_example/io_ports/io_ports_tb.v b/verilog/dv/caravel/user_proj_example/io_ports/io_ports_tb.v
index 39fc3d6..a83b64f 100644
--- a/verilog/dv/caravel/user_proj_example/io_ports/io_ports_tb.v
+++ b/verilog/dv/caravel/user_proj_example/io_ports/io_ports_tb.v
@@ -10,7 +10,7 @@
 	wire SDO;
 
     	wire gpio;
-    	wire [31:0] mprj_io;
+    	wire [36:0] mprj_io;
 	wire [7:0] mprj_io_0;
 
 	assign mprj_io_0 = mprj_io[7:0];
@@ -84,9 +84,20 @@
 	assign VDD3V3 = 1'b1;
 
 	caravel uut (
-		.vdd3v3	  (VDD3V3),
-		.vdd1v8	  (VDD1V8),
-		.vss	  (VSS),
+		.vddio	  (VDD3V3),
+		.vssio	  (VSS),
+		.vdda	  (VDD3V3),
+		.vssa	  (VSS),
+		.vccd	  (VDD1V8),
+		.vssd	  (VSS),
+		.vdda1    (VDD3V3),
+		.vdda2    (VDD3V3),
+		.vssa1	  (VSS),
+		.vssa2	  (VSS),
+		.vccd1	  (VDD1V8),
+		.vccd2	  (VDD1V8),
+		.vssd1	  (VSS),
+		.vssd2	  (VSS),
 		.clock	  (clock),
 		.gpio     (gpio),
         	.mprj_io  (mprj_io),
diff --git a/verilog/dv/caravel/user_proj_example/la_test1/la_test1.c b/verilog/dv/caravel/user_proj_example/la_test1/la_test1.c
index 708a761..d3b08d7 100644
--- a/verilog/dv/caravel/user_proj_example/la_test1/la_test1.c
+++ b/verilog/dv/caravel/user_proj_example/la_test1/la_test1.c
@@ -74,7 +74,7 @@
 	reg_la3_ena = 0xFFFFFFFF;    // [127:96]
 
 	// Flag start of the test 
-	reg_mprj_data = 0xAB400000;
+	reg_mprj_datal = 0xAB400000;
 
 	// Set Counter value to zero through LA probes [63:32]
 	reg_la1_data = 0x00000000;
@@ -84,12 +84,12 @@
 
 	while (1) {
 		if (reg_la0_data > 0x1F4) {
-			reg_mprj_data = 0xAB410000;
+			reg_mprj_datal = 0xAB410000;
 			break;
 		}
 	}
 	print("\n");
 	print("Monitor: Test 2 Passed\n\n");
-	reg_mprj_data = 0xAB510000;
+	reg_mprj_datal = 0xAB510000;
 }
 
diff --git a/verilog/dv/caravel/user_proj_example/la_test1/la_test1_tb.v b/verilog/dv/caravel/user_proj_example/la_test1/la_test1_tb.v
index 722efe6..df9bfaf 100644
--- a/verilog/dv/caravel/user_proj_example/la_test1/la_test1_tb.v
+++ b/verilog/dv/caravel/user_proj_example/la_test1/la_test1_tb.v
@@ -12,7 +12,7 @@
 
     	wire gpio;
 	wire uart_tx;
-    	wire [31:0] mprj_io;
+    	wire [36:0] mprj_io;
 	wire [15:0] checkbits;
 
 	assign checkbits  = mprj_io[31:16];
@@ -69,9 +69,20 @@
 	assign VDD3V3 = 1'b1;
 
 	caravel uut (
-		.vdd3v3	  (VDD3V3),
-		.vdd1v8	  (VDD1V8),
-		.vss	  (VSS),
+		.vddio	  (VDD3V3),
+		.vssio	  (VSS),
+		.vdda	  (VDD3V3),
+		.vssa	  (VSS),
+		.vccd	  (VDD1V8),
+		.vssd	  (VSS),
+		.vdda1    (VDD3V3),
+		.vdda2    (VDD3V3),
+		.vssa1	  (VSS),
+		.vssa2	  (VSS),
+		.vccd1	  (VDD1V8),
+		.vccd2	  (VDD1V8),
+		.vssd1	  (VSS),
+		.vssd2	  (VSS),
 		.clock	  (clock),
 		.gpio     (gpio),
         	.mprj_io  (mprj_io),
diff --git a/verilog/dv/caravel/user_proj_example/la_test2/la_test2.c b/verilog/dv/caravel/user_proj_example/la_test2/la_test2.c
index 54dabb6..18e185b 100644
--- a/verilog/dv/caravel/user_proj_example/la_test2/la_test2.c
+++ b/verilog/dv/caravel/user_proj_example/la_test2/la_test2.c
@@ -60,7 +60,7 @@
 	reg_la3_ena = 0xFFFFFFFF;    // [127:96]
 
 	// Flag start of the test
-	reg_mprj_data = 0xAB600000;
+	reg_mprj_datal = 0xAB600000;
 
 	// Configure LA[64] LA[65] as outputs from the cpu
 	reg_la2_ena  = 0xFFFFFFFC; 
@@ -75,7 +75,7 @@
 	}
 
 	if (reg_la0_data == 0x05) {
-		reg_mprj_data = 0xAB610000;
+		reg_mprj_datal = 0xAB610000;
 	}
 
 }
diff --git a/verilog/dv/caravel/user_proj_example/la_test2/la_test2_tb.v b/verilog/dv/caravel/user_proj_example/la_test2/la_test2_tb.v
index 99c9cca..7494ddc 100644
--- a/verilog/dv/caravel/user_proj_example/la_test2/la_test2_tb.v
+++ b/verilog/dv/caravel/user_proj_example/la_test2/la_test2_tb.v
@@ -10,7 +10,7 @@
 	wire SDO;
 
     	wire gpio;
-    	wire [31:0] mprj_io;
+    	wire [36:0] mprj_io;
 	wire [15:0] checkbits;
 
 	assign checkbits = mprj_io[15:8];
@@ -65,9 +65,20 @@
 	assign VDD3V3 = 1'b1;
 
 	caravel uut (
-		.vdd3v3	  (VDD3V3),
-		.vdd1v8	  (VDD1V8),
-		.vss	  (VSS),
+		.vddio	  (VDD3V3),
+		.vssio	  (VSS),
+		.vdda	  (VDD3V3),
+		.vssa	  (VSS),
+		.vccd	  (VDD1V8),
+		.vssd	  (VSS),
+		.vdda1    (VDD3V3),
+		.vdda2    (VDD3V3),
+		.vssa1	  (VSS),
+		.vssa2	  (VSS),
+		.vccd1	  (VDD1V8),
+		.vccd2	  (VDD1V8),
+		.vssd1	  (VSS),
+		.vssd2	  (VSS),
 		.clock	  (clock),
 		.gpio     (gpio),
         	.mprj_io  (mprj_io),