Added two additional signals for monitoring the user areas 1 and 2
VDDA status independently of the VCCD status.  NOTE:  The power
monitoring feature needs a testbench.
diff --git a/verilog/rtl/caravel.v b/verilog/rtl/caravel.v
index b42eedf..fffee90 100644
--- a/verilog/rtl/caravel.v
+++ b/verilog/rtl/caravel.v
@@ -344,8 +344,10 @@
 		.la_output(la_output_core),
 		.la_oen(la_oen),
 		// User Project IO Control
-		.mprj_pwrgood(mprj_pwrgood),
-		.mprj2_pwrgood(mprj2_pwrgood),
+		.mprj_vcc_pwrgood(mprj_vcc_pwrgood),
+		.mprj2_vcc_pwrgood(mprj2_vcc_pwrgood),
+		.mprj_vdd_pwrgood(mprj_vdd_pwrgood),
+		.mprj2_vdd_pwrgood(mprj2_vdd_pwrgood),
 		.mprj_io_loader_resetn(mprj_io_loader_resetn),
 		.mprj_io_loader_clock(mprj_io_loader_clock),
 		.mprj_io_loader_data(mprj_io_loader_data),
@@ -382,14 +384,20 @@
 	wire [3:0]  mprj_sel_o_user;
 	wire [31:0] mprj_adr_o_user;
 	wire [31:0] mprj_dat_o_user;
-	wire	    mprj_pwrgood;
-	wire	    mprj2_pwrgood;
+	wire	    mprj_vcc_pwrgood;
+	wire	    mprj2_vcc_pwrgood;
+	wire	    mprj_vdd_pwrgood;
+	wire	    mprj2_vdd_pwrgood;
 
 	mgmt_protect mgmt_buffers (
 		.vccd(vccd),
 		.vssd(vssd),
 		.vccd1(vccd1),
 		.vssd1(vssd1),
+		.vdda1(vdda1),
+		.vssa1(vssa1),
+		.vdda2(vdda2),
+		.vssa2(vssa2),
 
 		.caravel_clk(caravel_clk),
 		.caravel_clk2(caravel_clk2),
@@ -413,8 +421,10 @@
 		.mprj_adr_o_user(mprj_adr_o_user),
 		.mprj_dat_o_user(mprj_dat_o_user),
 		.la_data_in_mprj(la_data_in_mprj),
-		.user1_powergood(mprj_pwrgood),
-		.user2_powergood(mprj2_pwrgood)
+		.user1_vcc_powergood(mprj_vcc_pwrgood),
+		.user2_vcc_powergood(mprj2_vcc_pwrgood),
+		.user1_vdd_powergood(mprj_vdd_pwrgood),
+		.user2_vdd_powergood(mprj2_vdd_pwrgood)
 	);
 
 	
diff --git a/verilog/rtl/mgmt_core.v b/verilog/rtl/mgmt_core.v
index cd8a232..e7511c6 100644
--- a/verilog/rtl/mgmt_core.v
+++ b/verilog/rtl/mgmt_core.v
@@ -45,8 +45,10 @@
 	// User Project Control Signals
 	input [MPRJ_IO_PADS-1:0] mgmt_in_data,
 	output [MPRJ_IO_PADS-1:0] mgmt_out_data,
-	input mprj_pwrgood,
-	input mprj2_pwrgood,
+	input mprj_vcc_pwrgood,
+	input mprj2_vcc_pwrgood,
+	input mprj_vdd_pwrgood,
+	input mprj2_vdd_pwrgood,
 	output mprj_io_loader_resetn,
 	output mprj_io_loader_clock,
 	output mprj_io_loader_data,
@@ -184,8 +186,10 @@
 		.la_output(la_output),
 		.la_oen(la_oen),
 		// User Project I/O Configuration
-		.mprj_pwrgood(mprj_pwrgood),
-		.mprj2_pwrgood(mprj2_pwrgood),
+		.mprj_vcc_pwrgood(mprj_vcc_pwrgood),
+		.mprj2_vcc_pwrgood(mprj2_vcc_pwrgood),
+		.mprj_vdd_pwrgood(mprj_vdd_pwrgood),
+		.mprj2_vdd_pwrgood(mprj2_vdd_pwrgood),
 		.mprj_io_loader_resetn(mprj_io_loader_resetn),
 		.mprj_io_loader_clock(mprj_io_loader_clock),
 		.mprj_io_loader_data(mprj_io_loader_data),
diff --git a/verilog/rtl/mgmt_protect.v b/verilog/rtl/mgmt_protect.v
index df32f81..4dcf111 100644
--- a/verilog/rtl/mgmt_protect.v
+++ b/verilog/rtl/mgmt_protect.v
@@ -20,6 +20,10 @@
     inout	  vssd1,
     inout	  vccd2,
     inout	  vssd2,
+    inout	  vdda1,
+    inout	  vssa1,
+    inout	  vdda2,
+    inout	  vssa2,
 
     input 	  caravel_clk,
     input 	  caravel_clk2,
@@ -43,14 +47,24 @@
     output [31:0] mprj_adr_o_user,
     output [31:0] mprj_dat_o_user,
     output [127:0] la_data_in_mprj,
-    output	  user1_powergood,
-    output	  user2_powergood
+    output	  user1_vcc_powergood,
+    output	  user2_vcc_powergood,
+    output	  user1_vdd_powergood,
+    output	  user2_vdd_powergood
 );
 
 	wire [74:0] mprj_logic1;
 	wire mprj2_logic1;
-	wire user1_powergood;
-	wire user2_powergood;
+
+	wire mprj_vdd_logic1_h;
+	wire mprj2_vdd_logic1_h;
+	wire mprj_vdd_logic1;
+	wire mprj2_vdd_logic1;
+
+	wire user1_vcc_powergood;
+	wire user2_vcc_powergood;
+	wire user1_vdd_powergood;
+	wire user2_vdd_powergood;
 
         sky130_fd_sc_hd__conb_1 mprj_logic_high [74:0] (
                 .VPWR(vccd1),
@@ -70,6 +84,47 @@
                 .LO()
         );
 
+	// Logic high in the VDDA (3.3V) domains
+
+        sky130_fd_sc_hvl__conb_1 mprj_logic_high_hvl (
+                .VPWR(vdda1),
+                .VGND(vssa1),
+                .VPB(vdda1),
+                .VNB(vssa1),
+                .HI(mprj_vdd_logic1_h),
+                .LO()
+        );
+
+        sky130_fd_sc_hvl__conb_1 mprj2_logic_high_hvl (
+                .VPWR(vdda2),
+                .VGND(vssa2),
+                .VPB(vdda2),
+                .VNB(vssa2),
+                .HI(mprj2_vdd_logic1_h),
+                .LO()
+        );
+
+	// Level shift the logic high signals into the 1.8V domain
+
+	sky130_fd_sc_hvl__lsbufhv2lv mprj_logic_high_lv (
+		.VPWR(vdda1),
+		.VGND(vssd),
+		.LVPWR(vccd),
+		.VPB(vdda1),
+		.VNB(vssd),
+		.X(mprj_vdd_logic1),
+		.A(mprj_vdd_logic1_h)
+	);
+
+	sky130_fd_sc_hvl__lsbufhv2lv mprj2_logic_high_lv (
+		.VPWR(vdda2),
+		.VGND(vssd),
+		.LVPWR(vccd),
+		.VPB(vdda2),
+		.VNB(vssd),
+		.X(mprj2_vdd_logic1),
+		.A(mprj2_vdd_logic1_h)
+	);
 
         sky130_fd_sc_hd__einvp_8 mprj_rstn_buf (
                 .VPWR(vccd),
@@ -187,7 +242,7 @@
                 .VPB(vccd),
                 .VNB(vssd),
                 .A(mprj_logic1[74]),
-                .X(user1_powergood)
+                .X(user1_vcc_powergood)
 	);
 
         sky130_fd_sc_hd__buf_8 mprj2_pwrgood (
@@ -195,8 +250,25 @@
                 .VGND(vssd),
                 .VPB(vccd),
                 .VNB(vssd),
-                .A(mprj_logic2),
-                .X(user2_powergood)
+                .A(mprj2_logic1),
+                .X(user2_vcc_powergood)
 	);
 
+        sky130_fd_sc_hd__buf_8 mprj_vdd_pwrgood (
+                .VPWR(vccd),
+                .VGND(vssd),
+                .VPB(vccd),
+                .VNB(vssd),
+                .A(mprj_vdd_logic1),
+                .X(user_vdd_powergood)
+	);
+
+        sky130_fd_sc_hd__buf_8 mprj2_vdd_pwrgood (
+                .VPWR(vccd),
+                .VGND(vssd),
+                .VPB(vccd),
+                .VNB(vssd),
+                .A(mprj2_vdd_logic1),
+                .X(user2_vdd_powergood)
+	);
 endmodule
diff --git a/verilog/rtl/mgmt_soc.v b/verilog/rtl/mgmt_soc.v
index 8d7dc71..ac4fdf5 100644
--- a/verilog/rtl/mgmt_soc.v
+++ b/verilog/rtl/mgmt_soc.v
@@ -70,8 +70,10 @@
     output [127:0] la_oen,              // LA output enable (active low) 
 
     // User Project I/O Configuration (serial load)
-    input  mprj_pwrgood,
-    input  mprj2_pwrgood,
+    input  mprj_vcc_pwrgood,
+    input  mprj2_vcc_pwrgood,
+    input  mprj_vdd_pwrgood,
+    input  mprj2_vdd_pwrgood,
     output mprj_io_loader_resetn,
     output mprj_io_loader_clock,
     output mprj_io_loader_data,
@@ -588,8 +590,10 @@
         .wb_ack_o(sys_ack_o),
         .wb_dat_o(sys_dat_o),
 
-	.usr1_pwrgood(mprj_pwrgood),
-	.usr2_pwrgood(mprj2_pwrgood),
+	.usr1_vcc_pwrgood(mprj_vcc_pwrgood),
+	.usr2_vcc_pwrgood(mprj2_vcc_pwrgood),
+	.usr1_vdd_pwrgood(mprj_vdd_pwrgood),
+	.usr2_vdd_pwrgood(mprj2_vdd_pwrgood),
         .trap_output_dest(trap_output_dest),
         .clk1_output_dest(clk1_output_dest),
         .clk2_output_dest(clk2_output_dest),
diff --git a/verilog/rtl/sysctrl.v b/verilog/rtl/sysctrl.v
index acdb045..6c2d376 100644
--- a/verilog/rtl/sysctrl.v
+++ b/verilog/rtl/sysctrl.v
@@ -18,8 +18,10 @@
     output [31:0] wb_dat_o,
     output wb_ack_o,
     
-    input  usr1_pwrgood,
-    input  usr2_pwrgood,
+    input  usr1_vcc_pwrgood,
+    input  usr2_vcc_pwrgood,
+    input  usr1_vdd_pwrgood,
+    input  usr2_vdd_pwrgood,
     output clk1_output_dest,
     output clk2_output_dest,
     output trap_output_dest,
@@ -56,8 +58,10 @@
         .iomem_rdata(wb_dat_o),
         .iomem_ready(ready),
         
-	.usr1_pwrgood(usr1_pwrgood),
-	.usr2_pwrgood(usr2_pwrgood),
+	.usr1_vcc_pwrgood(usr1_vcc_pwrgood),
+	.usr2_vcc_pwrgood(usr2_vcc_pwrgood),
+	.usr1_vdd_pwrgood(usr1_vdd_pwrgood),
+	.usr2_vdd_pwrgood(usr2_vdd_pwrgood),
         .clk1_output_dest(clk1_output_dest),
         .clk2_output_dest(clk2_output_dest),
         .trap_output_dest(trap_output_dest), 
@@ -84,8 +88,10 @@
     output reg [31:0] iomem_rdata,
     output reg iomem_ready,
 
-    input  usr1_pwrgood,
-    input  usr2_pwrgood,
+    input  usr1_vcc_pwrgood,
+    input  usr2_vcc_pwrgood,
+    input  usr1_vdd_pwrgood,
+    input  usr2_vdd_pwrgood,
     output clk1_output_dest,
     output clk2_output_dest,
     output trap_output_dest,
@@ -99,8 +105,10 @@
     reg irq_7_inputsrc;
     reg irq_8_inputsrc;
 
-    wire usr1_pwrgood;
-    wire usr2_pwrgood;
+    wire usr1_vcc_pwrgood;
+    wire usr2_vcc_pwrgood;
+    wire usr1_vdd_pwrgood;
+    wire usr2_vdd_pwrgood;
 
     assign pwrgood_sel  = (iomem_addr[7:0] == PWRGOOD);
     assign clk_out_sel  = (iomem_addr[7:0] == CLK_OUT);
@@ -120,7 +128,8 @@
                 iomem_ready <= 1'b 1;
                 
                 if (pwrgood_sel) begin
-                    iomem_rdata <= {30'd0, usr2_pwrgood, usr1_pwrgood};
+                    iomem_rdata <= {28'd0, usr2_vdd_pwrgood, usr1_vdd_pwrgood,
+				usr2_vcc_pwrgood, usr1_vcc_pwrgood};
 		    // These are read-only bits;  no write behavior on wstrb.
 
                 end else if (clk_out_sel) begin