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 d802e86..068f2a2 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
@@ -36,8 +36,8 @@
     `define NO_HC_CACHE
     `include "DFFRAM_beh.v"
 `else
-    `include "user_project/IPs/DFFRAM.v"
-    `include "user_project/IPs/DFFRAMBB.v"
+    // `include "user_project/IPs/DFFRAM.v"
+    // `include "user_project/IPs/DFFRAMBB.v"
 `endif
 
 `include "user_project/AHB_sys_0/AHBlite_sys_0.v"
@@ -112,7 +112,7 @@
     // assign GPIOIN_Sys0_S2 = GPIO_PINS;
 
 	// Serial Terminal connected to UART0 TX*/
-    terminal term(.rx(mprj_io[22]));
+    terminal term(.rx(mprj_io[21]));  // RsTx_Sys0_SS0_S0
 
     // SPI SRAM connected to SPI0
     wire SPI_HOLD = 1'b1;
@@ -161,10 +161,6 @@
 		power4 <= 1'b1;
 	end
 
-	always @(mprj_io) begin
-		#1 $display("MPRJ-IO state = %b ", mprj_io[7:0]);
-	end
-
 	wire flash_csb;
 	wire flash_clk;
 	wire flash_io0;
diff --git a/verilog/dv/caravel/user_proj_example/sw_n5/test.c b/verilog/dv/caravel/user_proj_example/sw_n5/test.c
index d48a2f1..e06b253 100644
--- a/verilog/dv/caravel/user_proj_example/sw_n5/test.c
+++ b/verilog/dv/caravel/user_proj_example/sw_n5/test.c
@@ -95,7 +95,6 @@
 
     // PWM
     uart_puts (0, "PWM Test: ", 10);
-    tmr_init(0, 100, 10);       // 1usec
     pwm_init(0, 250, 99, 5);
  	pwm_enable(0);
     DELAY(300);
@@ -106,41 +105,7 @@
     DELAY(400);
    
     // Done!
-    uart_puts(0, "Done!\n", 5);
+    uart_puts(0, "Done!\n ", 6);
+    DELAY(100);
     return 0;
-}
-
-/*
-
-    (unsigned int *)(0x49000000) = -20;
-    (unsigned int *)(0x49000004) = 50;
-    
-    int x = 10;
-    int y = 50;
-
-    int z = x * y;
-
-    x = fact(5);
-
-    gpio_write(x);
-
-    uart_init (0, 0);
-    uart_puts (0, "Hello World!\n", 13);
-
-    gpio_write(z);
-
-    for(int i=0; i<z; i++);
-
-    gpio_write(0x00AA);
-
-    x = 5;
-    //asm volatile ("csrrw   zero, mie, %0" :: "r" (x));
-    asm volatile ("csrrwi   zero, mie, %0" :: "i" (5));
-
-    x = 0x100;
-    asm volatile ("csrrw   zero, 0x310, %0" :: "r" (x));
-
-    gpio_im(0x0100);
-
-    for(int i=0; i<50; i++);
-    */
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/verilog/rtl/user_project/rtl/IPs/DFFRAMBB.v b/verilog/rtl/user_project/rtl/IPs/DFFRAMBB.v
index 5599bc8..2825426 100644
--- a/verilog/rtl/user_project/rtl/IPs/DFFRAMBB.v
+++ b/verilog/rtl/user_project/rtl/IPs/DFFRAMBB.v
@@ -67,14 +67,46 @@
 endmodule
 
 module DEC2x4 (
+`ifdef USE_POWER_PINS
+    input VPWR,
+    input VGND,
+`endif
     input           EN,
     input   [1:0]   A,
     output  [3:0]   SEL
 );
-    sky130_fd_sc_hd__nor3b_4    AND0 ( .Y(SEL[0]), .A(A[0]),   .B(A[1]), .C_N(EN) );
-    sky130_fd_sc_hd__and3b_4    AND1 ( .X(SEL[1]), .A_N(A[1]), .B(A[0]), .C(EN) );
-    sky130_fd_sc_hd__and3b_4    AND2 ( .X(SEL[2]), .A_N(A[0]), .B(A[1]), .C(EN) );
-    sky130_fd_sc_hd__and3_4     AND3 ( .X(SEL[3]), .A(A[1]),   .B(A[0]), .C(EN) );
+    sky130_fd_sc_hd__nor3b_4    AND0 ( 
+    `ifdef USE_POWER_PINS
+        .VPWR(VPWR),
+        .VGND(VGND),
+        .VPB(VPWR),
+        .VNB(VGND),
+    `endif
+        .Y(SEL[0]), .A(A[0]),   .B(A[1]), .C_N(EN) );
+    sky130_fd_sc_hd__and3b_4    AND1 ( 
+    `ifdef USE_POWER_PINS
+        .VPWR(VPWR),
+        .VGND(VGND),
+        .VPB(VPWR),
+        .VNB(VGND),
+    `endif
+        .X(SEL[1]), .A_N(A[1]), .B(A[0]), .C(EN) );
+    sky130_fd_sc_hd__and3b_4    AND2 ( 
+    `ifdef USE_POWER_PINS
+        .VPWR(VPWR),
+        .VGND(VGND),
+        .VPB(VPWR),
+        .VNB(VGND),
+    `endif
+        .X(SEL[2]), .A_N(A[0]), .B(A[1]), .C(EN) );
+    sky130_fd_sc_hd__and3_4     AND3 ( 
+    `ifdef USE_POWER_PINS
+        .VPWR(VPWR),
+        .VGND(VGND),
+        .VPB(VPWR),
+        .VNB(VGND),
+    `endif
+        .X(SEL[3]), .A(A[1]),   .B(A[0]), .C(EN) );
     
 endmodule
 
@@ -123,11 +155,22 @@
 endmodule
 
 module MUX4x1_32(
+`ifdef USE_POWER_PINS
+    input VPWR,
+    input VGND,
+`endif
     input   [31:0]      A0, A1, A2, A3,
     input   [1:0]       S,
     output  [31:0]      X
 );
-    sky130_fd_sc_hd__mux4_1 MUX[31:0] (.A0(A0), .A1(A1), .A2(A2), .A3(A3), .S0(S[0]), .S1(S[1]), .X(X) );
+    sky130_fd_sc_hd__mux4_1 MUX[31:0] (
+    `ifdef USE_POWER_PINS
+        .VPWR(VPWR),
+        .VGND(VGND),
+        .VPB(VPWR),
+        .VNB(VGND),
+    `endif
+        .A0(A0), .A1(A1), .A2(A2), .A3(A3), .S0(S[0]), .S1(S[1]), .X(X) );
 endmodule
 
 module PASS (input [31:0] A, output [31:0] X);
diff --git a/verilog/rtl/user_project/rtl/IPs/RAM_3Kx32.v b/verilog/rtl/user_project/rtl/IPs/RAM_3Kx32.v
index 57f8fa5..d9d1125 100644
--- a/verilog/rtl/user_project/rtl/IPs/RAM_3Kx32.v
+++ b/verilog/rtl/user_project/rtl/IPs/RAM_3Kx32.v
@@ -2,6 +2,10 @@
 `default_nettype none
 
 module RAM_3Kx32 (
+`ifdef USE_POWER_PINS
+    VPWR,
+    VGND,
+`endif
     CLK,
     WE,
     EN,
@@ -41,9 +45,29 @@
         
     endgenerate 
     
-    MUX4x1_32 MUX ( .A0(_Do_[0]), .A1(_Do_[1]), .A2(_Do_[2]), .A3(32'b0), .S(A[11:10]), .X(Do_pre) );
-    DEC2x4 DEC ( .EN(EN), .A(A[11:10]), .SEL(_EN_) );
+    MUX4x1_32 MUX ( 
+    `ifdef USE_POWER_PINS
+        .VPWR(VPWR),
+        .VGND(VGND),
+    `endif
+        .A0(_Do_[0]), .A1(_Do_[1]), .A2(_Do_[2]), .A3(32'b0), .S(A[11:10]), .X(Do_pre) 
+    );
+    DEC2x4 DEC ( 
+    `ifdef USE_POWER_PINS
+        .VPWR(VPWR),
+        .VGND(VGND),
+    `endif
+        .EN(EN), .A(A[11:10]), .SEL(_EN_)
+    );
 
-    sky130_fd_sc_hd__clkbuf_4 DOBUF[31:0] (.X(Do), .A(Do_pre));
+    sky130_fd_sc_hd__clkbuf_4 DOBUF[31:0] (
+    `ifdef USE_POWER_PINS
+        .VPWR(VPWR),
+        .VGND(VGND),
+        .VPB(VPWR),
+        .VNB(VGND),
+    `endif
+        .X(Do), .A(Do_pre)
+    );
     
-endmodule
\ No newline at end of file
+endmodule
diff --git a/verilog/rtl/user_project/rtl/soc_core.v b/verilog/rtl/user_project/rtl/soc_core.v
index 115fc2c..bc70016 100644
--- a/verilog/rtl/user_project/rtl/soc_core.v
+++ b/verilog/rtl/user_project/rtl/soc_core.v
@@ -3,6 +3,10 @@
 `timescale 1ns/1ns
 
 module soc_core (
+`ifdef USE_POWER_PINS
+	input VPWR,
+	input VGND,
+`endif
 	input HCLK, 
 	input HRESETn,
 	
@@ -182,6 +186,10 @@
 
 
 	RAM_3Kx32 RAM (
+	`ifdef USE_POWER_PINS
+		.VPWR(VPWR),
+		.VGND(VGND),
+	`endif
 		.CLK(HCLK),
 		.WE(SRAMWEN_Sys0_S1),
 		.EN(SRAMCS0_Sys0_S1),
diff --git a/verilog/rtl/user_project/rtl/user_project_wrapper.v b/verilog/rtl/user_project/rtl/user_project_wrapper.v
index caa1883..863412a 100644
--- a/verilog/rtl/user_project/rtl/user_project_wrapper.v
+++ b/verilog/rtl/user_project/rtl/user_project_wrapper.v
@@ -121,6 +121,10 @@
     assign io_oeb[17:14] = {4{~fdoeb}};
 
     soc_core core(
+    `ifdef USE_POWER_PINS
+        .VPWR(vccd1),
+        .VGND(vssd1)
+    `endif
 
         .HCLK(wb_clk_i), 
 	    .HRESETn(~wb_rst_i),
diff --git a/verilog/rtl/user_project_wrapper.v b/verilog/rtl/user_project_wrapper.v
index a0f87c7..65df046 100644
--- a/verilog/rtl/user_project_wrapper.v
+++ b/verilog/rtl/user_project_wrapper.v
@@ -121,6 +121,10 @@
     assign io_oeb[17:14] = {4{~fdoeb}};
 
     soc_core core(
+    `ifdef USE_POWER_PINS
+        .VPWR(vccd1),
+        .VGND(vssd1),
+    `endif
 
         .HCLK(wb_clk_i), 
 	    .HRESETn(la_data_in[9]),
