diff --git a/openlane/user_proj_example/config.tcl b/openlane/user_proj_example/config.tcl
index ca5ed17..d09259c 100755
--- a/openlane/user_proj_example/config.tcl
+++ b/openlane/user_proj_example/config.tcl
@@ -21,70 +21,45 @@
 	$script_dir/../../caravel/verilog/rtl/defines.v \
         $script_dir/../../verilog/rtl/ptc/ptc_defines.v \
         $script_dir/../../verilog/rtl/ptc/ptc_top.v \
+        $script_dir/../../verilog/rtl/i2c/i2c_master_defines.v \
+        $script_dir/../../verilog/rtl/i2c/i2c_master_bit_ctrl.v \
+        $script_dir/../../verilog/rtl/i2c/i2c_master_byte_ctrl.v \
+        $script_dir/../../verilog/rtl/i2c/i2c_master_top.v \
+        $script_dir/../../verilog/rtl/rtc/hexmap.v \
+        $script_dir/../../verilog/rtl/rtc/rtcdate.v \ 
+        $script_dir/../../verilog/rtl/rtc/rtcgps.v \
+        $script_dir/../../verilog/rtl/rtc/rtclight.v \
+        $script_dir/../../verilog/rtl/rtc/rtcclock.v \
+        $script_dir/../../verilog/rtl/pid/16x16bit_multiplier_pipelined.v \
+        $script_dir/../../verilog/rtl/pid/booth.v \
+        $script_dir/../../verilog/rtl/pid/CLA_fixed.v \
+        $script_dir/../../verilog/rtl/pid/PID.v \ 
 	$script_dir/../../verilog/rtl/user_proj_example.v"
-
-        # $script_dir/../../verilog/rtl/pid/16x16bit_multiplier_pipelined.v \
-        # $script_dir/../../verilog/rtl/pid/booth.v \
-        # $script_dir/../../verilog/rtl/pid/CLA_fixed.v \
-        # $script_dir/../../verilog/rtl/pid/PID.v 
 	
 set ::env(CLOCK_PORT) "wb_clk_i"
-set ::env(CLOCK_NET) ""
-set ::env(CLOCK_PERIOD) "10"
+set ::env(CLOCK_NET) "wb_clk_i"
+set ::env(CLOCK_PERIOD) "100"
 
-# default 1
 set ::env(DESIGN_IS_CORE) 0
-
-# default 0
 set ::env(FP_PDN_CORE_RING) 0
-
-# default 6
 set ::env(GLB_RT_MAXLAYER) 5
-
-# Extra settings
-
-#set ::env(FP_SIZING) absolute
-#set ::env(DIE_AREA) "0 0 900 600"
-#set ::env(DIE_AREA) [list 0.0 0.0 1748.0 1360.0]
+set ::env(FP_PIN_ORDER_CFG) $script_dir/pin_order.cfg
 
 set ::env(VDD_NETS) [list {vccd1} {vccd2} {vdda1} {vdda2}]
 set ::env(GND_NETS) [list {vssd1} {vssd2} {vssa1} {vssa2}]
 
-set ::env(FP_PIN_ORDER_CFG) $script_dir/pin_order.cfg
+set ::env(SYNTH_MAX_FANOUT) 6
+set ::env(FP_CORE_UTIL) 24
+set ::env(PL_TARGET_DENSITY) [ expr ($::env(FP_CORE_UTIL)+4) / 100.0 ]
+set ::env(CELL_PAD) 4
 
-set ::env(FP_CORE_UTIL) 25
-set ::env(PL_TARGET_DENSITY) [ expr ($::env(FP_CORE_UTIL)+5) / 100.0 ]
-set ::env(ROUTING_CORES) 12
+set ::env(DIODE_INSERTION_STRATEGY) 0
+#set ::env(SYNTH_STRATEGY) 2
+#set ::env(SYNTH_STRATEGY) "DELAY 1"
+set ::env(SYNTH_NO_FLAT) 0
 
-# default 0
-#set ::env(PL_BASIC_PLACEMENT) 1
+set ::env(ROUTING_CORES) 16
 
-# default 50
-#set ::env(FP_CORE_UTIL) 20
+set ::env(MAGIC_DRC_USE_GDS) 1
+set ::env(LVS_INSERT_POWER_PINS) 1
 
-# default 0.55
-#set ::env(PL_TARGET_DENSITY) 0.05
-
-# If you're going to use multiple power domains, then keep this disabled.
-# default 1
-set ::env(RUN_CVC) 0
-
-# Routing Strategy 14 is more powerful than default
-# default 0
-#set ::env(ROUTING_STRATEGY) 14
-
-# Synthesis parameters
-
-# default 0
-#set ::env(SYNTH_SIZING) 1
-
-# default 1
-#set ::env(SYNTH_BUFFERING) 1
-
-# default AREA 0, try flow.tcl -synth_explore
-set ::env(SYNTH_STRATEGY) "DELAY 1"
-
-#set ::env(SYNTH_DRIVING_CELL) sky130_fd_sc_hc__inv_8
-
-# default 1
-#set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10
diff --git a/verilog/rtl/user_proj_example.v b/verilog/rtl/user_proj_example.v
index c64b092..81ce8b0 100644
--- a/verilog/rtl/user_proj_example.v
+++ b/verilog/rtl/user_proj_example.v
@@ -1,5 +1,3 @@
-// SPDX-FileCopyrightText: 2020 Efabless Corporation
-//
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
@@ -89,75 +87,94 @@
     wire [3:0] wstrb;
     wire [31:0] la_write;
 
-    wire pwm1_select , pwm2_select , pid_select ;
-    wire pwm1_wbs_stb_i , pwm2_wbs_stb_i , pid_wbs_stb_i ;
-    wire pwm1_wbs_ack_o , pwm2_wbs_ack_o , pid_wbs_ack_o ; 
+    wire pwm1_select , pwm2_select , i2c_select , rtc_select , pid_select ;
+    wire pwm1_wbs_stb_i , pwm2_wbs_stb_i , i2c_wbs_stb_i , rtc_wbs_stb_i , pid_wbs_stb_i ;
+    wire pwm1_wbs_ack_o , pwm2_wbs_ack_o , i2c_wbs_ack_o , rtc_wbs_ack_o , pid_wbs_ack_o ; 
 
     reg [15:0] pwm1_wbs_dat_o ;
     reg [15:0] pwm2_wbs_dat_o ;
+    reg [7:0] i2c_wbs_dat_o ;
+    reg [31:0] rtc_wbs_dat_o ;
     reg [31:0] pid_wbs_dat_o  ;
 
     wire pwm_out1 , pwm_out2 ;
     wire pwm_out1_oen , pwm_out2_oen ;
-    wire ptc1_intr , ptc2_intr ;
+    wire ptc1_intr , ptc2_intr , i2c_intr , rtc_intr ;
     reg led1, led2, led3 ; 
     wire ptc_clk1,ptc_clk2;
     wire capt_in1,capt_in1;
 
 
-    // Outputs
-    assign io_out = {33'b0,pwm_out2,pwm_out1,led3,led2,led1};
-    assign io_oeb = {33'b0,pwm_out2_oen,pwm_out1_oen,3'b111};
-    //assign io_out = {35'b0,led3,led2,led1};
-    //assign io_oeb = {35'b0,3'b111};
+    assign ptc_clk1 = io_in[0] ;                           // IO[0]
+    assign io_oeb[0]= 1'b1;
+
+    assign ptc_clk2 = io_in[1] ;                           // IO[1]
+    assign io_oeb[1]= 1'b1;
+
+    assign capt_in1 = io_in[2] ;                           // IO[2]
+    assign io_oeb[1]= 1'b1;
+
+    assign capt_in2 = io_in[3] ;                           // IO[3]
+    assign io_oeb[1]= 1'b1;
+
+    
+    assign io_out[5:4] = la_data_in[1:0] ;                 // IO[5:4]
+    assign io_oeb[5:4] = la_oenb[1:0]    ;
+
+    assign io_out[7:6] = {pwm_out2,pwm_out1} ;             // IO[7:6]
+    assign io_oeb[7:6] = {pwm_out2_oen,pwm_out1_oen} ;
+
+    assign io_out[8] = scl_pad_o ;                         // IO[8]
+    assign io_oeb[8] = scl_padoen_o ;
+
+    assign i2c_scl_in = io_in[9] ;                         // IO[9]
+    assign io_oeb[9]= 1'b1;
+
+    assign io_out[10] = sda_pad_o ;                        // IO[10]
+    assign io_oeb[10] = sda_padoen_o;
+
+    assign i2c_sda_in = io_in[11] ;                        // IO[11]
+    assign io_oeb[11]= 1'b1;
+
     // Inputs
-    assign ptc_clk1 = io_in[0] ;
-    assign ptc_clk2 = io_in[1] ;
-    assign capt_in1 = io_in[2] ;
-    assign capt_in2 = io_in[3] ;
 
     // IRQ
-    assign irq = {1'b0,ptc2_intr,ptc1_intr};	// Unused
+    assign irq = {rtc_intr , i2c_intr , {ptc2_intr || ptc1_intr} };	
 
     // LA
-    //assign la_data_out = {{(127-BITS){1'b0}}, count};
-    assign la_data_out = 128'b0;
-    // Assuming LA probes [63:32] are for controlling the count register  
-    //assign la_write = ~la_oenb[63:32] & ~{BITS{valid}};
-    // Assuming LA probes [65:64] are for controlling the count clk & reset  
-    //assign clk = (~la_oenb[64]) ? la_data_in[64]: wb_clk_i;
-    //assign rst = (~la_oenb[65]) ? la_data_in[65]: wb_rst_i;
+   assign la_data_out = 128'b0;
    assign clk = wb_clk_i ;
    assign rst = wb_rst_i ;
 
    // Module Address Select Logic
    assign pwm1_select = (wbs_adr_i[31:12] == 20'h30001) ;
    assign pwm2_select = (wbs_adr_i[31:12] == 20'h30002) ;
+   assign i2c_select  = (wbs_adr_i[31:12] == 20'h30003) ;
+   assign rtc_select  = (wbs_adr_i[31:12] == 20'h30004) ;
    assign pid_select  = (wbs_adr_i[31:12] == 20'h30005) ;
   
    // Module STROBE Select based on Address Range
    assign pwm1_wbs_stb_i = (wbs_stb_i && pwm1_select) ;
    assign pwm2_wbs_stb_i = (wbs_stb_i && pwm2_select) ;
-   assign pid_wbs_stb_i  = (wbs_stb_i && pid_select) ;
+   assign i2c_wbs_stb_i  = (wbs_stb_i && i2c_select)  ;
+   assign rtc_wbs_stb_i  = (wbs_stb_i && rtc_select)  ;
+   assign pid_wbs_stb_i  = (wbs_stb_i && pid_select)  ;
 
-   // Led assigned from LA data in
-   always @(posedge clk) begin
-	   led1 <= la_data_in[0] && la_oenb[0] ; 
-	   led2 <= la_data_in[1] && la_oenb[1] ; 
-	   led3 <= la_data_in[2] && la_oenb[2] ; 
-   end
 
    // Slave Acknowledge Response 
    always @(posedge clk)
-	   wbs_ack_o <= (pwm1_wbs_ack_o || pwm2_wbs_ack_o || pid_wbs_ack_o) ;
-	   //wbs_ack_o <=  pid_wbs_ack_o ;
+	   wbs_ack_o <= (pwm1_wbs_ack_o || pwm2_wbs_ack_o || i2c_wbs_ack_o || rtc_wbs_ack_o || pid_wbs_ack_o) ;
 
    // Slave Return Data
    always @(posedge clk)
 	   if (pwm1_wbs_ack_o)
-		   wbs_dat_o <= {pwm1_wbs_dat_o} ;
+		   wbs_dat_o <= pwm1_wbs_dat_o ;
 	   else if (pwm2_wbs_ack_o)
-		   wbs_dat_o <= {pwm2_wbs_dat_o} ;
+		   wbs_dat_o <= pwm2_wbs_dat_o ;
+	   else if (i2c_wbs_ack_o)
+		   wbs_dat_o <= {24'b0,i2c_wbs_dat_o} ;
+	   else if (rtc_wbs_ack_o)
+		   wbs_dat_o <= rtc_wbs_dat_o ;
 	   else if (pid_wbs_ack_o)
 		   wbs_dat_o <= pid_wbs_dat_o ;
 	   else
@@ -206,7 +223,45 @@
 	   .oen_padoen_o (pwm_out2_oen)
    );
 
-/*
+   // I2C Module Instanciation 
+ i2c_master_top i2c_i (
+	   .wb_clk_i (clk),
+	   .wb_rst_i (rst),
+	   .arst_i   (1'b1),
+	   .wb_adr_i (wbs_adr_i[2:0]), // 3-bit address
+	   .wb_dat_i (wbs_dat_i[7:0]), // 8-bit data    
+	   .wb_dat_o (i2c_wbs_dat_o),  // 8-bit data
+	   .wb_we_i  (wbs_we_i),
+	   .wb_stb_i (rtc_wbs_stb_i),
+	   .wb_cyc_i (wbs_cyc_i),
+	   .wb_ack_o (i2c_wbs_ack_o),
+	   .wb_inta_o (i2c_intr),
+	   .scl_pad_i (i2c_scl_in),
+	   .scl_pad_o (scl_pad_o),
+	   .scl_padoen_o (scl_padoen_o),
+	   .sda_pad_i (i2c_sda_in),
+	   .sda_pad_o (sda_pad_o),
+	   .sda_padoen_o (sda_padoen_o)
+   );
+
+   // RTC Module Instanciation
+
+  rtcclock rtc_i (
+	  .i_clk (clk),
+	  .i_wb_cyc (wbs_cyc_i),
+	  .i_wb_stb (rtc_wbs_stb_i),
+	  .i_wb_we (wbs_we_i),
+	  .i_wb_addr (wbs_adr_i[2:0]),
+	  .i_wb_data (wbs_dat_i),
+	  .o_data (rtc_wbs_dat_o),
+	  .o_sseg (),
+	  .o_led (),
+	  .o_interrupt (rtc_intr),
+	  .o_ppd (),
+	  .i_hack (la_data_in[2])
+  );
+
+   // PID Module Instantiation 
   PID pid (
 	  .i_clk (clk),
 	  .i_rst (rst),
@@ -220,6 +275,6 @@
 	  .o_un (),
 	  .o_valid ()
   ); 
-*/
+
 endmodule
 `default_nettype wire
