diff --git a/gds/pinmux_top.gds.gz b/gds/pinmux_top.gds.gz
index 354df44..e76535d 100644
--- a/gds/pinmux_top.gds.gz
+++ b/gds/pinmux_top.gds.gz
Binary files differ
diff --git a/gds/user_project_wrapper.gds.gz b/gds/user_project_wrapper.gds.gz
index 7147322..66c9343 100644
--- a/gds/user_project_wrapper.gds.gz
+++ b/gds/user_project_wrapper.gds.gz
Binary files differ
diff --git a/gds/wb_host.gds.gz b/gds/wb_host.gds.gz
index 5d71b39..1899d7c 100644
--- a/gds/wb_host.gds.gz
+++ b/gds/wb_host.gds.gz
Binary files differ
diff --git a/lef/pinmux_top.lef.gz b/lef/pinmux_top.lef.gz
index e5f30cf..5efd266 100644
--- a/lef/pinmux_top.lef.gz
+++ b/lef/pinmux_top.lef.gz
Binary files differ
diff --git a/lef/user_project_wrapper.lef.gz b/lef/user_project_wrapper.lef.gz
index 022fb8d..b5fd148 100644
--- a/lef/user_project_wrapper.lef.gz
+++ b/lef/user_project_wrapper.lef.gz
Binary files differ
diff --git a/lef/wb_host.lef.gz b/lef/wb_host.lef.gz
index 75c8c0d..f008fd0 100644
--- a/lef/wb_host.lef.gz
+++ b/lef/wb_host.lef.gz
Binary files differ
diff --git a/spef/pinmux_top.spef.gz b/spef/pinmux_top.spef.gz
index 2571a2c..1179455 100644
--- a/spef/pinmux_top.spef.gz
+++ b/spef/pinmux_top.spef.gz
Binary files differ
diff --git a/spef/user_project_wrapper.spef.gz b/spef/user_project_wrapper.spef.gz
index 9ef5fb4..e7d1c0b 100644
--- a/spef/user_project_wrapper.spef.gz
+++ b/spef/user_project_wrapper.spef.gz
Binary files differ
diff --git a/spef/wb_host.spef.gz b/spef/wb_host.spef.gz
index f8585e7..e075391 100644
--- a/spef/wb_host.spef.gz
+++ b/spef/wb_host.spef.gz
Binary files differ
diff --git a/spi/lvs/user_project_wrapper.spice.gz b/spi/lvs/user_project_wrapper.spice.gz
index ef27853..e79a45e 100644
--- a/spi/lvs/user_project_wrapper.spice.gz
+++ b/spi/lvs/user_project_wrapper.spice.gz
Binary files differ
diff --git a/spi/lvs/wb_host.spice.gz b/spi/lvs/wb_host.spice.gz
index 7da1f53..2882729 100644
--- a/spi/lvs/wb_host.spice.gz
+++ b/spi/lvs/wb_host.spice.gz
Binary files differ
diff --git a/verilog/dv/agents/user_tasks.sv b/verilog/dv/agents/user_tasks.sv
index a2c16ab..2cbdfc6 100644
--- a/verilog/dv/agents/user_tasks.sv
+++ b/verilog/dv/agents/user_tasks.sv
@@ -97,6 +97,35 @@
   end
 endtask
 
+task         apply_strap;
+input [15:0] strap;
+begin
+
+   repeat (10) @(posedge clock);
+   //#1 - Apply Reset
+   wb_rst_i = 1; 
+   //#2 - Apply Strap
+   force u_top.io_in[36:29] = strap[15:8];
+   force u_top.io_in[20:13] = strap[7:0];
+   repeat (10) @(posedge clock);
+    
+   //#3 - Remove Reset
+   wb_rst_i = 0; // Remove Reset
+
+   //#4 - Wait for Power on reset removal
+   wait(u_top.p_reset_n == 1);          
+
+   // #5 - Release the Strap
+   release u_top.io_in[36:29];
+   release u_top.io_in[20:13];
+
+   // #6 - Wait for system reset removal
+   wait(u_top.s_reset_n == 1);          // Wait for system reset removal
+   repeat (10) @(posedge clock);
+
+end
+endtask
+
 genvar gCnt;
 generate
  for(gCnt=0; gCnt<16; gCnt++) begin : g_strap
diff --git a/verilog/dv/arduino_digital_port_control/Makefile b/verilog/dv/arduino_digital_port_control/Makefile
index bd1353c..7d035ec 100644
--- a/verilog/dv/arduino_digital_port_control/Makefile
+++ b/verilog/dv/arduino_digital_port_control/Makefile
@@ -106,24 +106,24 @@
 	rm *.o *.a
 ifeq ($(SIM),RTL)
    ifeq ($(DUMP),OFF)
-	iverilog -g2012 -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
+	iverilog -g2012 -DFUNCTIONAL -DSIM -DRISC_BOOT -I $(PDK_PATH) \
 	-f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
 	-f$(USER_PROJECT_VERILOG)/includes/includes.rtl.lib  \
 	$< -o $@ 
     else  
-	iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
+	iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DRISC_BOOT -DSIM -I $(PDK_PATH) \
 	-f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) \
 	-f$(USER_PROJECT_VERILOG)/includes/includes.rtl.lib  \
 	$< -o $@ 
    endif
 else  
    ifeq ($(DUMP),OFF)
-	iverilog -g2012 -DFUNCTIONAL -DUSE_POWER_PINS -DGL -I $(PDK_PATH) \
+	iverilog -g2012 -DFUNCTIONAL -DUSE_POWER_PINS -DRISC_BOOT -DGL -I $(PDK_PATH) \
 	-f$(USER_PROJECT_VERILOG)/includes/includes.gl.$(CONFIG) \
 	-f$(USER_PROJECT_VERILOG)/includes/includes.gl.lib \
 	$< -o $@ 
     else  
-	iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DUSE_POWER_PINS -DGL -I $(PDK_PATH) \
+	iverilog -g2012 -DWFDUMP -DFUNCTIONAL -DUSE_POWER_PINS -DRISC_BOOT -DGL -I $(PDK_PATH) \
 	-f$(USER_PROJECT_VERILOG)/includes/includes.gl.$(CONFIG) \
 	-f$(USER_PROJECT_VERILOG)/includes/includes.gl.lib \
 	$< -o $@ 
diff --git a/verilog/dv/arduino_digital_port_control/arduino_digital_port_control.ino.cpp b/verilog/dv/arduino_digital_port_control/arduino_digital_port_control.ino.cpp
index d4dd6f5..ba6c295 100644
--- a/verilog/dv/arduino_digital_port_control/arduino_digital_port_control.ino.cpp
+++ b/verilog/dv/arduino_digital_port_control/arduino_digital_port_control.ino.cpp
@@ -49,16 +49,16 @@
   // go through the six channels of the digital pot:
   for (int channel = 0; channel < 6; channel++) {
     // change the resistance on this channel from min to max:
-    for (int level = 0; level < 255; level++) {
+    for (int level = 0; level < 64; level++) {
       digitalPotWrite(channel, level);
-      delayMicroseconds(10);
+      delayMicroseconds(5);
     }
     // wait a second at the top:
-    delayMicroseconds(100);
+    delayMicroseconds(20);
     // change the resistance on this channel from max to min:
-    for (int level = 0; level < 255; level++) {
-      digitalPotWrite(channel, 255 - level);
-      delayMicroseconds(10);
+    for (int level = 0; level < 64; level++) {
+      digitalPotWrite(channel, 64 - level);
+      delayMicroseconds(5);
     }
   }
 
diff --git a/verilog/dv/arduino_digital_port_control/arduino_digital_port_control_tb.v b/verilog/dv/arduino_digital_port_control/arduino_digital_port_control_tb.v
index 07d7b46..e91855d 100644
--- a/verilog/dv/arduino_digital_port_control/arduino_digital_port_control_tb.v
+++ b/verilog/dv/arduino_digital_port_control/arduino_digital_port_control_tb.v
@@ -166,31 +166,34 @@
        
 
 	initial begin
+		$value$plusargs("risc_core_id=%d", d_risc_id);
 
 		#200; // Wait for reset removal
 	        repeat (10) @(posedge clock);
 		$display("Monitor: Standalone User Risc Boot Test Started");
+   
+       init();
+       wait_riscv_boot();
 
-		$value$plusargs("risc_core_id=%d", d_risc_id);
 		// Remove Wb Reset
-		wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,'h1);
+		//wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,'h1);
 
 	    repeat (2) @(posedge clock);
 		#1;
 
         // Remove WB and SPI Reset and CORE under Reset
-        wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h01F);
+        //wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h01F);
 
 		// QSPI SRAM:CS#2 Switch to QSPI Mode
-        wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_BANK_SEL,'h1000); // Change the Bank Sel 1000
-		wb_user_core_write(`ADDR_SPACE_QSPI+`QSPIM_IMEM_CTRL1,{16'h0,1'b0,1'b0,4'b0000,P_MODE_SWITCH_IDLE,P_SINGLE,P_SINGLE,4'b0100});
-		wb_user_core_write(`ADDR_SPACE_QSPI+`QSPIM_IMEM_CTRL2,{8'h0,2'b00,2'b00,P_FSM_C,8'h00,8'h38});
-		wb_user_core_write(`ADDR_SPACE_QSPI+`QSPIM_IMEM_WDATA,32'h0);
+        //wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_BANK_SEL,'h1000); // Change the Bank Sel 1000
+		//wb_user_core_write(`ADDR_SPACE_QSPI+`QSPIM_IMEM_CTRL1,{16'h0,1'b0,1'b0,4'b0000,P_MODE_SWITCH_IDLE,P_SINGLE,P_SINGLE,4'b0100});
+		//wb_user_core_write(`ADDR_SPACE_QSPI+`QSPIM_IMEM_CTRL2,{8'h0,2'b00,2'b00,P_FSM_C,8'h00,8'h38});
+		//wb_user_core_write(`ADDR_SPACE_QSPI+`QSPIM_IMEM_WDATA,32'h0);
 
         // Remove all the reset
         if(d_risc_id == 0) begin
              $display("STATUS: Working with Risc core 0");
-             wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h11F);
+             //wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h11F);
         end else if(d_risc_id == 1) begin
              $display("STATUS: Working with Risc core 1");
              wb_user_core_write(`ADDR_SPACE_GLBL+`GLBL_CFG_CFG0,'h21F);
@@ -205,27 +208,27 @@
         repeat (100) @(posedge clock);  // wait for Processor Get Ready
 
 
-        repeat (20000) @(posedge clock);  // wait for Processor Get Ready
+        repeat (1000) @(posedge clock);  // wait for Processor Get Ready
         flag = 1;
 
       fork
       begin
-          for (channel = 0; channel < 1; channel = channel+1) begin
+          for (channel = 0; channel < 6; channel = channel+1) begin
             // change the resistance on this channel from min to max:
-            for (level = 0; level < 255; level = level+1) begin
+            for (level = 0; level < 64; level = level+1) begin
                 wait(u_ad5205.channel == channel && u_ad5205.position ==  level);
                 $display("Channel: %x and Position: %x",u_ad5205.channel,u_ad5205.position);
             end
             // change the resistance on this channel from min to max:
-            for (level = 0; level < 255; level = level+1) begin
-                wait((u_ad5205.channel == channel) && (u_ad5205.position ==  (255 -level)));
+            for (level = 0; level < 64; level = level+1) begin
+                wait((u_ad5205.channel == channel) && (u_ad5205.position ==  (64 -level)));
                 $display("Channel: %x and Position: %x",u_ad5205.channel,u_ad5205.position);
             end
           end
           test_fail = 0;
       end
       begin
-         repeat (6000000) @(posedge clock);  // wait for Processor Get Ready
+         repeat (1000000) @(posedge clock);  // wait for Processor Get Ready
          test_fail = 1;
       end
       join_any
@@ -251,11 +254,6 @@
 	    $finish;
 	end
 
-	initial begin
-		wb_rst_i <= 1'b1;
-		#100;
-		wb_rst_i <= 1'b0;	    	// Release reset
-	end
 wire USER_VDD1V8 = 1'b1;
 wire VSS = 1'b0;
 
@@ -509,6 +507,7 @@
 
 `endif
 **/
+`include "user_tasks.sv"
 endmodule
 `include "s25fl256s.sv"
 `default_nettype wire
diff --git a/verilog/dv/common/riscduino_board b/verilog/dv/common/riscduino_board
index 5b5dd05..ec9ef12 160000
--- a/verilog/dv/common/riscduino_board
+++ b/verilog/dv/common/riscduino_board
@@ -1 +1 @@
-Subproject commit 5b5dd057677b00948b02288291ad2141f0543108
+Subproject commit ec9ef12933c2435d28bb91d4f653bfc99377f151
diff --git a/verilog/dv/user_basic/user_basic_tb.v b/verilog/dv/user_basic/user_basic_tb.v
index f6c36e5..3317eab 100644
--- a/verilog/dv/user_basic/user_basic_tb.v
+++ b/verilog/dv/user_basic/user_basic_tb.v
@@ -260,12 +260,6 @@
    repeat (2) @(posedge clock);
 
    test_fail=0;
-   // Run in Fast Sim Mode
-   `ifdef GL
-       force u_top.u_wb_host._8654_.Q= 1'b1; 
-   `else
-       force u_top.u_wb_host.u_fastsim_buf.X = 1'b1; 
-    `endif
 
    fork
    begin
@@ -273,34 +267,10 @@
        $display("Step-1, Checking the Strap Loading");
        test_id = 1;
        for(i = 0; i < 16; i = i+1) begin
-          //#1 - Apply Reset
-          wb_rst_i = 1; 
-          test_step = 1;
-          //#2 - Apply Strap
-          strap_in = 1 << i; 
-          force u_top.io_in[36:29] = strap_in[15:8];
-          force u_top.io_in[20:13] = strap_in[7:0];
-          repeat (10) @(posedge clock);
-          test_step = 2;
-         
-          //#3 - Remove Reset
-          wb_rst_i = 0; // Remove Reset
-          test_step = 3;
-
-          //#4 - Wait for Power on reset removal
-          wait(u_top.p_reset_n == 1);          
-          test_step = 4;
-
-          // #5 - Release the Strap
-          release u_top.io_in[36:29];
-          release u_top.io_in[20:13];
-          test_step = 5;
-
-          // #6 - Wait for system reset removal
-          wait(u_top.s_reset_n == 1);          // Wait for system reset removal
-          repeat (10) @(posedge clock);
-          test_step = 6;
-
+          strap_in = 0;
+          strap_in = 1 << i;
+          apply_strap(strap_in);
+     
           //#7 - Check the strap reg value
           wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_PAD_STRAP,read_data,strap_in);
           wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_STRAP_STICKY,read_data,strap_sticky);
@@ -318,29 +288,10 @@
        $display("Step-2, Checking the Clock Skew Configuration");
        test_id = 2;
        for(i = 0; i < 4; i = i+1) begin
-          //#1 - Apply Reset
-          wb_rst_i = 1; 
-          //#2 - Apply Strap
           strap_in = 0;
           strap_in[12:11] = i;
           strap_skew = i;
-          force u_top.io_in[36:29] = strap_in[15:8];
-          force u_top.io_in[20:13] = strap_in[7:0];
-          repeat (10) @(posedge clock);
-         
-          //#3 - Remove Reset
-          wb_rst_i = 0; // Remove Reset
-
-          //#4 - Wait for Power on reset removal
-          wait(u_top.p_reset_n == 1);          
-
-          // #5 - Release the Strap
-          release u_top.io_in[36:29];
-          release u_top.io_in[20:13];
-
-          // #6 - Wait for system reset removal
-          wait(u_top.s_reset_n == 1);          // Wait for system reset removal
-          repeat (10) @(posedge clock);
+          apply_strap(strap_in);
 
           //#7 - Check the strap reg value
           wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_PAD_STRAP,read_data,strap_in);
@@ -358,37 +309,16 @@
        test_id = 3;
        for(i = 0; i < 4; i = i+1) begin
           for(j = 0; j < 4; j = j+1) begin
-              //#1 - Apply Reset
-              wb_rst_i = 1; 
-              //#2 - Apply Strap
               strap_in = 0;
-
               strap_in[1:0] = i;
               cpu_clk_cfg[1:0]=i;
               wbs_clk_cfg[1:0]=i;
-
               strap_in[3:2] = j;
               cpu_clk_cfg[3:2]=j;
               wbs_clk_cfg[3:2]=j;
-
               strap_in[3:2] = j;
-              force u_top.io_in[36:29] = strap_in[15:8];
-              force u_top.io_in[20:13] = strap_in[7:0];
-              repeat (10) @(posedge clock);
-         
-              //#3 - Remove Reset
-              wb_rst_i = 0; // Remove Reset
-
-              //#4 - Wait for Power on reset removal
-              wait(u_top.p_reset_n == 1);          
-
-              // #5 - Release the Strap
-              release u_top.io_in[36:29];
-              release u_top.io_in[20:13];
-
-              // #6 - Wait for system reset removal
-              wait(u_top.s_reset_n == 1);          // Wait for system reset removal
-              repeat (10) @(posedge clock);
+ 
+              apply_strap(strap_in);
 
               //#7 - Check the strap reg value
               wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_PAD_STRAP,read_data,strap_in);
@@ -430,7 +360,21 @@
           $display("STATUS: Step-4, Checking the soft reboot sequence - PASSED");
        end
        $display("##########################################################");
+       /****
+       $display("Step-5, Checking the uart Master baud-16x clock is 9600* 16");
+       test_id = 5;
 
+       apply_strap(16'h10); // [4] -  // uart master config control - constant value based on system clock selection
+
+       uartm_clock_monitor(6510); // 1/(9600*16) = 6510 ns
+
+       if(test_fail == 1) begin
+          $display("ERROR: Step-5,  Checking the uart Master baud-16x clock - FAILED");
+       end else begin
+          $display("STATUS: Step-5,  Checking the uart Master baud-16x clock - PASSED");
+       end
+       $display("##########################################################");
+       ***/
        /*** 
        `ifndef GL  
        $display("###################################################");
@@ -486,8 +430,8 @@
         wb_user_core_write(`ADDR_SPACE_WBHOST+`WBHOST_GLBL_CFG,'h1);
 
          wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_0,read_data,32'h8273_8343);
-         wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_1,read_data,32'h2608_2022);
-         wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_2,read_data,32'h0005_2000);
+         wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_1,read_data,32'h0309_2022);
+         wb_user_core_read_check(`ADDR_SPACE_GLBL+`GLBL_CFG_SOFT_REG_2,read_data,32'h0005_3000);
          if(test_fail == 1) begin
             $display("ERROR: Step-7,Monitor: Checking the chip signature - FAILED");
          end else begin
@@ -664,6 +608,15 @@
 end
 endtask
 
+task uartm_clock_monitor;
+input real exp_period;
+begin
+   force clock_mon = u_top.u_wb_host.u_uart2wb.u_core.line_clk_16x;
+   check_clock_period("UART CLock",exp_period);
+   release clock_mon;
+end
+endtask
+
 
 wire dbg_clk_mon = io_out[33];
 
@@ -867,5 +820,6 @@
 
 `endif
 **/
+`include "user_tasks.sv"
 endmodule
 `default_nettype wire
diff --git a/verilog/dv/user_uart/user_uart.c b/verilog/dv/user_uart/user_uart.c
index e75590d..b19a157 100644
--- a/verilog/dv/user_uart/user_uart.c
+++ b/verilog/dv/user_uart/user_uart.c
@@ -26,6 +26,7 @@
 {
 
    reg_glbl_cfg0 |= 0x1F;       // Remove Reset for UART
+   reg_glbl_multi_func &=0x7FFFFFFF; // Disable UART Master Bit[31] = 0
    reg_glbl_multi_func |=0x100; // Enable UART Multi func
    reg_uart0_ctrl = 0x07;       // Enable Uart Access {3'h0,2'b00,1'b1,1'b1,1'b1}
 
diff --git a/verilog/dv/user_uart_master/user_uart_master_tb.v b/verilog/dv/user_uart_master/user_uart_master_tb.v
index 5d9006b..2d909f4 100644
--- a/verilog/dv/user_uart_master/user_uart_master_tb.v
+++ b/verilog/dv/user_uart_master/user_uart_master_tb.v
@@ -68,6 +68,7 @@
 
 `include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v"
 `include "uart_agent.v"
+`include "user_params.svh"
 
 module user_uart_master_tb;
 
@@ -100,10 +101,10 @@
 // Uart Configuration
 // ---------------------------------
 reg [1:0]      uart_data_bit        ;
-reg	       uart_stop_bits       ; // 0: 1 stop bit; 1: 2 stop bit;
-reg	       uart_stick_parity    ; // 1: force even parity
-reg	       uart_parity_en       ; // parity enable
-reg	       uart_even_odd_parity ; // 0: odd parity; 1: even parity
+reg	           uart_stop_bits       ; // 0: 1 stop bit; 1: 2 stop bit;
+reg	           uart_stick_parity    ; // 1: force even parity
+reg	           uart_parity_en       ; // parity enable
+reg	           uart_even_odd_parity ; // 0: odd parity; 1: even parity
 
 reg [7:0]      uart_data            ;
 reg [15:0]     uart_divisor         ;	// divided by n * 16
@@ -115,7 +116,8 @@
 reg 	       uart_fifo_enable     ;	// fifo mode disable
 
 reg  [127:0]   la_data_in;
-reg       flag;
+reg            flag;
+reg  [15:0]    strap_in;
 
 
 integer i,j;
@@ -149,7 +151,10 @@
 	end
 initial
 begin
-   init();
+   strap_in = 0;
+   strap_in[`PSTRAP_UARTM_CFG] = 0; // uart master config control - load from LA
+   apply_strap(strap_in);
+
    uart_data_bit           = 2'b11;
    uart_stop_bits          = 1; // 0: 1 stop bit; 1: 2 stop bit;
    uart_stick_parity       = 0; // 1: force even parity
@@ -269,7 +274,8 @@
 
 );
 // SSPI Slave I/F
-assign io_in[0]  = 1'b1; // RESET
+assign io_in[5]  = 1'b1; // RESET
+assign io_in[21] = 1'b0; // CLOCK
 
 `ifndef GL // Drive Power for Hold Fix Buf
     // All standard cell need power hook-up for functionality work
@@ -283,8 +289,8 @@
 // --------------------------
 wire uart_txd,uart_rxd;
 
-assign uart_txd   = io_out[23];
-assign io_in[22]  = uart_rxd ;
+assign uart_txd   = io_out[7];
+assign io_in[6]  = uart_rxd ;
  
 uart_agent tb_master_uart(
 	.mclk                (clock              ),
diff --git a/verilog/gl/pinmux_top.v.gz b/verilog/gl/pinmux_top.v.gz
index 095577f..de6b8ca 100644
--- a/verilog/gl/pinmux_top.v.gz
+++ b/verilog/gl/pinmux_top.v.gz
Binary files differ
diff --git a/verilog/gl/user_project_wrapper.v.gz b/verilog/gl/user_project_wrapper.v.gz
index 845e6ee..62622e0 100644
--- a/verilog/gl/user_project_wrapper.v.gz
+++ b/verilog/gl/user_project_wrapper.v.gz
Binary files differ
diff --git a/verilog/gl/wb_host.v.gz b/verilog/gl/wb_host.v.gz
index c6edce6..22f381f 100644
--- a/verilog/gl/wb_host.v.gz
+++ b/verilog/gl/wb_host.v.gz
Binary files differ
diff --git a/verilog/rtl/pinmux/src/pinmux.sv b/verilog/rtl/pinmux/src/pinmux.sv
index 652305d..f8143ed 100755
--- a/verilog/rtl/pinmux/src/pinmux.sv
+++ b/verilog/rtl/pinmux/src/pinmux.sv
@@ -44,8 +44,8 @@
 * Pin Mapping    Arduino              ATMGE CONFIG
 *   ATMEGA328     Port                                                      caravel Pin Mapping
 *   Pin-1         22            PC6/WS[0]/RESET*                            digital_io[5]
-*   Pin-2         0             PD0/WS[0]/RXD[0]                            digital_io[6]
-*   Pin-3         1             PD1/WS[0]/TXD[0]                            digital_io[7]
+*   Pin-2         0             PD0/WS[0]/MRXD/RXD[0]                       digital_io[6]
+*   Pin-3         1             PD1/WS[0]/MRXD/TXD[0]                       digital_io[7]
 *   Pin-4         2             PD2/WS[0]/RXD[1]/INT0                       digital_io[8]
 *   Pin-5         3             PD3/WS[1]INT1/OC2B(PWM0)                    digital_io[9]
 *   Pin-6         4             PD4/WS[1]TXD[1]                             digital_io[10]
@@ -65,8 +65,8 @@
 *   Pin-20                      AVCC                -
 *   Pin-21                      AREF                                        analog_io[10]
 *   Pin-22                      GND                 -
-*   Pin-23        14            PC0/uartm_rxd/ADC0                          digital_io[22]/analog_io[11]
-*   Pin-24        15            PC1/uartm_txd/ADC1                          digital_io[23]/analog_io[12]
+*   Pin-23        14            PC0/ADC0                          digital_io[22]/analog_io[11]
+*   Pin-24        15            PC1/ADC1                          digital_io[23]/analog_io[12]
 *   Pin-25        16            PC2/usb_dp/ADC2                             digital_io[24]/analog_io[13]
 *   Pin-26        17            PC3/usb_dn/ADC3                             digital_io[25]/analog_io[14]
 *   Pin-27        18            PC4/ADC4/SDA                                digital_io[26]/analog_io[15]
@@ -236,21 +236,23 @@
      port_b_in = 'h0;
      port_c_in = 'h0;
      port_d_in = 'h0;
-     uart_rxd   = 'h0;
+     uart_rxd   = 'b1;
      ext_intr_in= 'h0;
      spim_mosi  = 'h0;
      i2cm_data_i= 'h0;
      i2cm_clk_i = 'h0;
+     uartm_rxd  = 'b1;
 
      //Pin-1        PC6/RESET*          digital_io[5]
      port_c_in[6] = digital_io_in[5];
      pin_resetn   = digital_io_in[5];
 
-     //Pin-2        PD0/RXD[0]             digital_io[6]
+     //Pin-2        PD0/MRXD/RXD[0]             digital_io[6]
      port_d_in[0] = digital_io_in[6];
-     if(cfg_uart_enb[0])  uart_rxd[0]   = digital_io_in[6];
+     if (cfg_muart_enb)        uartm_rxd     = digital_io_in[6];
+     else if(cfg_uart_enb[0])  uart_rxd[0]   = digital_io_in[6];
   
-     //Pin-3        PD1/TXD[0]             digital_io[7]
+     //Pin-3        PD1/MTXD/TXD[0]             digital_io[7]
      port_d_in[1] = digital_io_in[7];
 
 
@@ -302,11 +304,10 @@
      port_b_in[5]= digital_io_in[21];
      spis_sck    = (spis_boot) ? digital_io_in[21] : 1'b1;   // SPIM SCK (Output) = SPIS SCK (Input)
      
-     //Pin-23       PC0/ADC0            digital_io[22]/uartm_rxd/analog_io[11]
-     uartm_rxd    = (cfg_muart_enb) ?  digital_io_in[22]: 1'b1;
+     //Pin-23       PC0/ADC0            digital_io[22]/analog_io[11]
      port_c_in[0] = digital_io_in[22];
 
-     //Pin-24       PC1/ADC1            digital_io[23]/uartm_txd/analog_io[12]
+     //Pin-24       PC1/ADC1            digital_io[23]/analog_io[12]
      port_c_in[1] = digital_io_in[23];
 
      //Pin-25       PC2/ADC2            digital_io[24]/usb_dp/analog_io[13]
@@ -345,12 +346,13 @@
      if(cfg_port_c_port_type[6])       digital_io_out[5]   = ws_txd[0];
      else if(cfg_port_c_dir_sel[6])    digital_io_out[5]   = port_c_out[6];
 
-     //Pin-2        PD0/WS[0]/RXD[0]       digital_io[6]
+     //Pin-2        PD0/WS[0]/MRXD/RXD[0]       digital_io[6]
      if(cfg_port_d_port_type[0])       digital_io_out[6]   = ws_txd[0];
      else if(cfg_port_d_dir_sel[0])    digital_io_out[6]   = port_d_out[0];
   
-     //Pin-3        PD1/WS[0]/TXD[0]       digital_io[7]
-     if     (cfg_uart_enb[0])         digital_io_out[7]  = uart_txd[0];
+     //Pin-3        PD1/WS[0]/MTXD/TXD[0]       digital_io[7]
+     if     (cfg_muart_enb)           digital_io_out[7]  = uartm_txd;
+     else if(cfg_uart_enb[0])         digital_io_out[7]  = uart_txd[0];
      else if(cfg_port_d_port_type[1]) digital_io_out[7]  = ws_txd[0];
      else if(cfg_port_d_dir_sel[1])   digital_io_out[7]  = port_d_out[1];
 
@@ -426,13 +428,11 @@
      if(cfg_spim_enb)             digital_io_out[21]  = spim_sck;      // SPIM SCK (Output) = SPIS SCK (Input)
      else if(cfg_port_b_dir_sel[5])  digital_io_out[21]  = port_b_out[5];
      
-     //Pin-23       PC0/MRXD/ADC0    digital_io[22]/analog_io[11]
-     if(cfg_muart_enb)               digital_io_out[22]  = 1'b1;
-     else if(cfg_port_c_dir_sel[0])  digital_io_out[22]  = port_c_out[0];
+     //Pin-23       PC0/ADC0    digital_io[22]/analog_io[11]
+     if(cfg_port_c_dir_sel[0])  digital_io_out[22]  = port_c_out[0];
 
-     //Pin-24       PC1/MTXD/ADC1    digital_io[23]/analog_io[12]
-     if(cfg_muart_enb)               digital_io_out[23]  = uartm_txd;
-     else if(cfg_port_c_dir_sel[1])  digital_io_out[23]  = port_c_out[1];
+     //Pin-24       PC1/ADC1    digital_io[23]/analog_io[12]
+     if(cfg_port_c_dir_sel[1])  digital_io_out[23]  = port_c_out[1];
 
      //Pin-25       PC2/USB_DP/ADC2  digital_io[24]/analog_io[13]
      if(cfg_usb_enb)                 digital_io_out[24]  = usb_dp_o;
@@ -479,13 +479,15 @@
      if(cfg_port_c_port_type[6])       digital_io_oen[5]   = 1'b1;
      else if(cfg_port_c_dir_sel[6])    digital_io_oen[5]   = 1'b0;
 
-     //Pin-2        PD0/WS[0]/RXD[0]          digital_io[6]
-     if     (cfg_uart_enb[0])        digital_io_oen[6]   = 1'b1;
+     //Pin-2        PD0/WS[0]/MRXD/RXD[0]          digital_io[6]
+     if     (cfg_muart_enb)          digital_io_oen[6]   = 1'b1;
+     else if(cfg_uart_enb[0])        digital_io_oen[6]   = 1'b1;
      else if(cfg_port_d_port_type[0])digital_io_oen[6]   = 1'b1;
      else if(cfg_port_d_dir_sel[0])  digital_io_oen[6]   = 1'b0;
 
-     //Pin-3        PD1/WS[0]/TXD[0]          digital_io[7]
-     if     (cfg_uart_enb[0])        digital_io_oen[7]   = 1'b0;
+     //Pin-3        PD1/WS[0]/MTXD/TXD[0]          digital_io[7]
+     if     (cfg_muart_enb)          digital_io_oen[7]   = 1'b0;
+     else if(cfg_uart_enb[0])        digital_io_oen[7]   = 1'b0;
      else if(cfg_port_d_port_type[1])digital_io_oen[7]   = 1'b1;
      else if(cfg_port_d_dir_sel[1])  digital_io_oen[7]   = 1'b0;
 
@@ -572,12 +574,10 @@
      else if(cfg_port_b_dir_sel[5])  digital_io_oen[21]  = 1'b0;
      else if(spis_boot)              digital_io_oen[21]  = 1'b1; // SPIS SCK (Input)
      
-     //Pin-23       PC0/MRXD/ADC0    digital_io[22]/analog_io[11]
-     if(cfg_muart_enb)               digital_io_oen[22]  = 1'b1; 
-     else if(cfg_port_c_dir_sel[0])  digital_io_oen[22]  = 1'b0;
+     //Pin-23       PC0/ADC0    digital_io[22]/analog_io[11]
+     if(cfg_port_c_dir_sel[0])       digital_io_oen[22]  = 1'b0;
 
-     //Pin-24       PC1/MTXD/ADC1    digital_io[23]/analog_io[12]
-     if(cfg_muart_enb)               digital_io_oen[23]  = 1'b0; 
+     //Pin-24       PC1/ADC1    digital_io[23]/analog_io[12]
      if(cfg_port_c_dir_sel[1])       digital_io_oen[23]  = 1'b0;
 
      //Pin-25       PC2/USB_DP/ADC2  digital_io[24]/analog_io[13]
diff --git a/verilog/rtl/wb_host/src/wb_host.sv b/verilog/rtl/wb_host/src/wb_host.sv
index 766a87d..df3c656 100644
--- a/verilog/rtl/wb_host/src/wb_host.sv
+++ b/verilog/rtl/wb_host/src/wb_host.sv
@@ -320,11 +320,11 @@
 
 wire strap_uart_cfg_mode = system_strap[`STRAP_UARTM_CFG];
 
-wire       cfg_uartm_tx_enable   = (strap_uart_cfg_mode) ? la_data_in[1]     : 1'b1;
-wire       cfg_uartm_rx_enable   = (strap_uart_cfg_mode) ? la_data_in[2]     : 1'b1;
-wire       cfg_uartm_stop_bit    = (strap_uart_cfg_mode) ? la_data_in[3]     : 1'b1;
-wire [11:0]cfg_uart_baud_16x     = (strap_uart_cfg_mode) ? la_data_in[15:4]  : 259;
-wire [1:0] cfg_uartm_cfg_pri_mod = (strap_uart_cfg_mode) ? la_data_in[17:16] : 2'b0;
+wire       cfg_uartm_tx_enable   = (strap_uart_cfg_mode==0) ? la_data_in[1]     : 1'b1;
+wire       cfg_uartm_rx_enable   = (strap_uart_cfg_mode==0) ? la_data_in[2]     : 1'b1;
+wire       cfg_uartm_stop_bit    = (strap_uart_cfg_mode==0) ? la_data_in[3]     : 1'b1;
+wire [11:0]cfg_uart_baud_16x     = (strap_uart_cfg_mode==0) ? la_data_in[15:4]  : 258;
+wire [1:0] cfg_uartm_cfg_pri_mod = (strap_uart_cfg_mode==0) ? la_data_in[17:16] : 2'b0;
 
 
 // UART Master
