Added additional protection for all the signals output to the user
space, to force them to be tristated whenever the user space 1.8V
supply is missing.
diff --git a/verilog/rtl/caravel.v b/verilog/rtl/caravel.v
index 463f127..f0708d2 100644
--- a/verilog/rtl/caravel.v
+++ b/verilog/rtl/caravel.v
@@ -37,6 +37,7 @@
 `include "digital_pll.v"
 `include "caravel_clocking.v"
 `include "mgmt_core.v"
+`include "mgmt_protect.v"
 `include "mprj_io.v"
 `include "chip_io.v"
 `include "user_id_programming.v"
@@ -372,11 +373,49 @@
 		.mask_rev(mask_rev)
     	);
 
-	sky130_fd_sc_hd__ebufn_8 la_buf [127:0] (
-		.Z(la_data_in_mprj),
-		.A(la_output_core),
-		.TE_B(la_oen)
+	/* Clock and reset to user space are passed through a tristate	*/
+	/* buffer like the above, but since they are intended to be	*/
+	/* always active, connect the enable to the logic-1 output from	*/
+	/* the vccd1 domain.						*/
+
+	wire 	    mprj_clock;
+	wire 	    mprj_resetn;
+	wire 	    mprj_cyc_o_user;
+	wire 	    mprj_stb_o_user;
+	wire 	    mprj_we_o_user;
+	wire [3:0]  mprj_sel_o_user;
+	wire [31:0] mprj_adr_o_user;
+	wire [31:0] mprj_dat_o_user;
+
+	mgmt_protect mgmt_buffers (
+	    `ifdef LVS
+		.vccd(vccd),
+		.vssd(vssd),
+		.vccd1(vccd1),
+		.vssd1(vssd1),
+	    `endif
+		.caravel_clk(caravel_clk),
+		.caravel_rstn(caravel_rstn),
+		.mprj_cyc_o_core(mprj_cyc_o_core),
+		.mprj_stb_o_core(mprj_stb_o_core),
+		.mprj_we_o_core(mprj_we_o_core),
+		.mprj_sel_o_core(mprj_sel_o_core),
+		.mprj_adr_o_core(mprj_adr_o_core),
+		.mprj_dat_o_core(mprj_dat_o_core),
+		.la_output_core(la_output_core),
+		.la_oen(la_oen),
+
+		.user_clock(mprj_clock),
+		.user_resetn(mprj_resetn),
+		.mprj_cyc_o_user(mprj_cyc_o_user),
+		.mprj_stb_o_user(mprj_stb_o_user),
+		.mprj_we_o_user(mprj_we_o_user),
+		.mprj_sel_o_user(mprj_sel_o_user),
+		.mprj_adr_o_user(mprj_adr_o_user),
+		.mprj_dat_o_user(mprj_dat_o_user),
+		.la_data_in_mprj(la_data_in_mprj)
 	);
+
 	
 	/*--------------------------------------*/
 	/* User project is instantiated  here	*/
@@ -396,15 +435,15 @@
 		vssa1,	// User area 1 digital ground
 		vssa2,	// User area 2 digital ground
 	    `endif
-    		.wb_clk_i(caravel_clk),
-    		.wb_rst_i(!caravel_rstn),
+    		.wb_clk_i(mprj_clock),
+    		.wb_rst_i(!mprj_resetn),
 		// MGMT SoC Wishbone Slave 
-		.wbs_cyc_i(mprj_cyc_o_core),
-		.wbs_stb_i(mprj_stb_o_core),
-		.wbs_we_i(mprj_we_o_core),
-		.wbs_sel_i(mprj_sel_o_core),
-	    	.wbs_adr_i(mprj_adr_o_core),
-		.wbs_dat_i(mprj_dat_o_core),
+		.wbs_cyc_i(mprj_cyc_o_user),
+		.wbs_stb_i(mprj_stb_o_user),
+		.wbs_we_i(mprj_we_o_user),
+		.wbs_sel_i(mprj_sel_o_user),
+	    	.wbs_adr_i(mprj_adr_o_user),
+		.wbs_dat_i(mprj_dat_o_user),
 	    	.wbs_ack_o(mprj_ack_i_core),
 		.wbs_dat_o(mprj_dat_i_core),
 		// Logic Analyzer
@@ -439,6 +478,12 @@
 	.DM_INIT(3'b110),	// Mode = output, strong up/down
 	.OENB_INIT(1'b0)	// Enable output signaling from wire
     ) gpio_control_bidir [1:0] (
+    	`ifdef LVS
+             inout vccd,
+             inout vssd,
+             inout vccd1,
+             inout vssd1,
+        `endif
 
     	// Management Soc-facing signals
 
@@ -474,6 +519,12 @@
     );
 
     gpio_control_block gpio_control_in [`MPRJ_IO_PADS-1:2] (
+    	`ifdef LVS
+             inout vccd,
+             inout vssd,
+             inout vccd1,
+             inout vssd1,
+        `endif
 
     	// Management Soc-facing signals