bus repeater south addition
diff --git a/Makefile b/Makefile
index 2d433bf..a54eedb 100644
--- a/Makefile
+++ b/Makefile
@@ -324,6 +324,6 @@
 .PHONY: caravel-sta
 caravel-sta: ./env/spef-mapping.tcl
 	@$(MAKE) -C $(TIMING_ROOT) -f $(TIMING_ROOT)/timing.mk caravel-timing-typ
-#	@$(MAKE) -C $(TIMING_ROOT) -f $(TIMING_ROOT)/timing.mk caravel-timing-fast
-#	@$(MAKE) -C $(TIMING_ROOT) -f $(TIMING_ROOT)/timing.mk caravel-timing-slow
+	@$(MAKE) -C $(TIMING_ROOT) -f $(TIMING_ROOT)/timing.mk caravel-timing-fast
+	@$(MAKE) -C $(TIMING_ROOT) -f $(TIMING_ROOT)/timing.mk caravel-timing-slow
 	@echo "You can find results for all corners in $(CUP_ROOT)/signoff/caravel/openlane-signoff/timing/"
diff --git a/env/spef-mapping.tcl b/env/spef-mapping.tcl
new file mode 100644
index 0000000..ce5a1ec
--- /dev/null
+++ b/env/spef-mapping.tcl
@@ -0,0 +1,12 @@
+set spef_mapping(mprj/u_4x8bit_dac) "$::env(PROJECT_ROOT)/signoff/not-found/dac_top.$::env(RCX_CORNER).spef"
+set spef_mapping(mprj/u_aes) "$::env(PROJECT_ROOT)/signoff/aes_top/openlane-signoff/spef/aes_top.$::env(RCX_CORNER).spef"
+set spef_mapping(mprj/u_fpu) "$::env(PROJECT_ROOT)/signoff/fpu_wrapper/openlane-signoff/spef/fpu_wrapper.$::env(RCX_CORNER).spef"
+set spef_mapping(mprj/u_intercon) "$::env(PROJECT_ROOT)/signoff/wb_interconnect/openlane-signoff/spef/wb_interconnect.$::env(RCX_CORNER).spef"
+set spef_mapping(mprj/u_pinmux) "$::env(PROJECT_ROOT)/signoff/pinmux_top/openlane-signoff/spef/pinmux_top.$::env(RCX_CORNER).spef"
+set spef_mapping(mprj/u_pll) "$::env(PROJECT_ROOT)/signoff/dg_pll/openlane-signoff/spef/dg_pll.$::env(RCX_CORNER).spef"
+set spef_mapping(mprj/u_qspi_master) "$::env(PROJECT_ROOT)/signoff/qspim_top/openlane-signoff/spef/qspim_top.$::env(RCX_CORNER).spef"
+set spef_mapping(mprj/\u_riscv_top.i_core_top_0) "$::env(PROJECT_ROOT)/signoff/ycr_core_top/openlane-signoff/spef/ycr_core_top.$::env(RCX_CORNER).spef"
+set spef_mapping(mprj/\u_riscv_top.u_connect) "$::env(PROJECT_ROOT)/signoff/ycr_iconnect/openlane-signoff/spef/ycr_iconnect.$::env(RCX_CORNER).spef"
+set spef_mapping(mprj/\u_riscv_top.u_intf) "$::env(PROJECT_ROOT)/signoff/ycr_intf/openlane-signoff/spef/ycr_intf.$::env(RCX_CORNER).spef"
+set spef_mapping(mprj/u_uart_i2c_usb_spi) "$::env(PROJECT_ROOT)/signoff/uart_i2c_usb_spi_top/openlane-signoff/spef/uart_i2c_usb_spi_top.$::env(RCX_CORNER).spef"
+set spef_mapping(mprj/u_wb_host) "$::env(PROJECT_ROOT)/signoff/wb_host/openlane-signoff/spef/wb_host.$::env(RCX_CORNER).spef"
diff --git a/gds/aes_top.gds.gz b/gds/aes_top.gds.gz
deleted file mode 100644
index cbd7222..0000000
--- a/gds/aes_top.gds.gz
+++ /dev/null
Binary files differ
diff --git a/gds/dac_top.gds.gz b/gds/dac_top.gds.gz
deleted file mode 100644
index 2dbfa41..0000000
--- a/gds/dac_top.gds.gz
+++ /dev/null
Binary files differ
diff --git a/gds/dg_pll.gds.gz b/gds/dg_pll.gds.gz
deleted file mode 100644
index d290c13..0000000
--- a/gds/dg_pll.gds.gz
+++ /dev/null
Binary files differ
diff --git a/gds/fpu_wrapper.gds.gz b/gds/fpu_wrapper.gds.gz
deleted file mode 100644
index eae5ad0..0000000
--- a/gds/fpu_wrapper.gds.gz
+++ /dev/null
Binary files differ
diff --git a/gds/pinmux_top.gds.gz b/gds/pinmux_top.gds.gz
deleted file mode 100644
index 8770f2c..0000000
--- a/gds/pinmux_top.gds.gz
+++ /dev/null
Binary files differ
diff --git a/gds/qspim_top.gds.gz b/gds/qspim_top.gds.gz
deleted file mode 100644
index 97eda45..0000000
--- a/gds/qspim_top.gds.gz
+++ /dev/null
Binary files differ
diff --git a/gds/uart_i2c_usb_spi_top.gds.gz b/gds/uart_i2c_usb_spi_top.gds.gz
deleted file mode 100644
index 127d77d..0000000
--- a/gds/uart_i2c_usb_spi_top.gds.gz
+++ /dev/null
Binary files differ
diff --git a/gds/user_project_wrapper.gds.gz b/gds/user_project_wrapper.gds.gz
index 8ee6bed..3a26931 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
deleted file mode 100644
index 545827a..0000000
--- a/gds/wb_host.gds.gz
+++ /dev/null
Binary files differ
diff --git a/gds/wb_interconnect.gds.gz b/gds/wb_interconnect.gds.gz
deleted file mode 100644
index 4215a7d..0000000
--- a/gds/wb_interconnect.gds.gz
+++ /dev/null
Binary files differ
diff --git a/gds/ycr_core_top.gds.gz b/gds/ycr_core_top.gds.gz
deleted file mode 100644
index cc2e1d3..0000000
--- a/gds/ycr_core_top.gds.gz
+++ /dev/null
Binary files differ
diff --git a/gds/ycr_iconnect.gds.gz b/gds/ycr_iconnect.gds.gz
deleted file mode 100644
index bf35859..0000000
--- a/gds/ycr_iconnect.gds.gz
+++ /dev/null
Binary files differ
diff --git a/gds/ycr_intf.gds.gz b/gds/ycr_intf.gds.gz
deleted file mode 100644
index 5d1e7e0..0000000
--- a/gds/ycr_intf.gds.gz
+++ /dev/null
Binary files differ
diff --git a/lef/aes_top.lef.gz b/lef/aes_top.lef.gz
deleted file mode 100644
index 31232e1..0000000
--- a/lef/aes_top.lef.gz
+++ /dev/null
Binary files differ
diff --git a/lef/dac_top.lef.gz b/lef/dac_top.lef.gz
deleted file mode 100644
index 90d033e..0000000
--- a/lef/dac_top.lef.gz
+++ /dev/null
Binary files differ
diff --git a/lef/dg_pll.lef.gz b/lef/dg_pll.lef.gz
deleted file mode 100644
index fcbd319..0000000
--- a/lef/dg_pll.lef.gz
+++ /dev/null
Binary files differ
diff --git a/lef/fpu_wrapper.lef.gz b/lef/fpu_wrapper.lef.gz
deleted file mode 100644
index f0dbe37..0000000
--- a/lef/fpu_wrapper.lef.gz
+++ /dev/null
Binary files differ
diff --git a/lef/pinmux_top.lef.gz b/lef/pinmux_top.lef.gz
deleted file mode 100644
index bc5b0ce..0000000
--- a/lef/pinmux_top.lef.gz
+++ /dev/null
Binary files differ
diff --git a/lef/qspim_top.lef.gz b/lef/qspim_top.lef.gz
deleted file mode 100644
index 5e80b24..0000000
--- a/lef/qspim_top.lef.gz
+++ /dev/null
Binary files differ
diff --git a/lef/uart_i2c_usb_spi_top.lef.gz b/lef/uart_i2c_usb_spi_top.lef.gz
deleted file mode 100644
index b1d98bd..0000000
--- a/lef/uart_i2c_usb_spi_top.lef.gz
+++ /dev/null
Binary files differ
diff --git a/lef/user_project_wrapper.lef.gz b/lef/user_project_wrapper.lef.gz
index 76e768e..56b6bca 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
deleted file mode 100644
index c319c4f..0000000
--- a/lef/wb_host.lef.gz
+++ /dev/null
Binary files differ
diff --git a/lef/wb_interconnect.lef.gz b/lef/wb_interconnect.lef.gz
deleted file mode 100644
index 9d38f02..0000000
--- a/lef/wb_interconnect.lef.gz
+++ /dev/null
Binary files differ
diff --git a/lef/ycr_core_top.lef.gz b/lef/ycr_core_top.lef.gz
deleted file mode 100644
index ca37a90..0000000
--- a/lef/ycr_core_top.lef.gz
+++ /dev/null
Binary files differ
diff --git a/lef/ycr_iconnect.lef.gz b/lef/ycr_iconnect.lef.gz
deleted file mode 100644
index 8160c33..0000000
--- a/lef/ycr_iconnect.lef.gz
+++ /dev/null
Binary files differ
diff --git a/lef/ycr_intf.lef.gz b/lef/ycr_intf.lef.gz
deleted file mode 100644
index a9e1e1d..0000000
--- a/lef/ycr_intf.lef.gz
+++ /dev/null
Binary files differ
diff --git a/openlane/aes_top/pin_order.cfg b/openlane/aes_top/pin_order.cfg
index 1d8dedd..847e469 100644
--- a/openlane/aes_top/pin_order.cfg
+++ b/openlane/aes_top/pin_order.cfg
@@ -3,7 +3,7 @@
 #MANUAL_PLACE
 
 
-#W
+#E
 
 mclk               0100 0 2
 rst_n 
diff --git a/openlane/bus_rep_south/config.tcl b/openlane/bus_rep_south/config.tcl
new file mode 100755
index 0000000..bcfd99c
--- /dev/null
+++ b/openlane/bus_rep_south/config.tcl
@@ -0,0 +1,127 @@
+# SPDX-FileCopyrightText:  2021 , Dinesh Annayya
+#
+# 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
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileContributor: Modified by Dinesh Annayya <dinesha@opencores.org>
+
+# Global
+# ------
+
+set script_dir [file dirname [file normalize [info script]]]
+# Name
+set ::env(DESIGN_NAME) bus_rep_south
+
+
+set ::env(DESIGN_IS_CORE) "1"
+set ::env(FP_PDN_CORE_RING) {1}
+
+# Timing configuration
+set ::env(CLOCK_PERIOD) "10"
+set ::env(CLOCK_PORT) ""
+set ::env(CLOCK_NET) ""
+
+set ::env(SYNTH_MAX_FANOUT) 4
+set ::env(SYNTH_BUFFERING) {0}
+
+
+## CTS BUFFER
+set ::env(CTS_CLK_BUFFER_LIST) "sky130_fd_sc_hd__clkbuf_4 sky130_fd_sc_hd__clkbuf_8"
+set ::env(CTS_SINK_CLUSTERING_SIZE) "16"
+set ::env(CLOCK_BUFFER_FANOUT) "8"
+
+# Sources
+# -------
+
+# Local sources + no2usb sources
+set ::env(VERILOG_FILES) "\
+        $::env(DESIGN_DIR)/../../verilog/rtl/bus_rep/bus_rep_south.sv \
+	"
+
+set ::env(SYNTH_DEFINES) [list SYNTHESIS ]
+
+set ::env(SYNTH_PARAMETERS) "BUS_REP_WD=124 "
+
+set ::env(SYNTH_READ_BLACKBOX_LIB) 1
+#set ::env(SDC_FILE) $::env(DESIGN_DIR)/base.sdc
+#set ::env(BASE_SDC_FILE) $::env(DESIGN_DIR)/base.sdc
+
+set ::env(LEC_ENABLE) 0
+
+set ::env(VDD_PIN) [list {vccd1}]
+set ::env(GND_PIN) [list {vssd1}]
+
+
+# Floorplanning
+# -------------
+
+set ::env(FP_PIN_ORDER_CFG) $::env(DESIGN_DIR)/pin_order.cfg
+
+set ::env(FP_SIZING) absolute
+set ::env(DIE_AREA) "0 0 2030 50"
+
+#set ::env(GRT_OBS) "met4  0 0 300 1725"
+
+# If you're going to use multiple power domains, then keep this disabled.
+set ::env(RUN_CVC) 0
+
+#set ::env(PDN_CFG) $::env(DESIGN_DIR)/pdn.tcl
+
+
+
+set ::env(PL_TIME_DRIVEN) 1
+set ::env(PL_TARGET_DENSITY) "0.20"
+set ::env(CELL_PAD) "8"
+
+# helps in anteena fix
+set ::env(USE_ARC_ANTENNA_CHECK) "0"
+
+
+#set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10
+set ::env(DIODE_INSERTION_STRATEGY) 4
+
+## CTS
+set ::env(CLOCK_TREE_SYNTH) {0}
+
+## Placement
+set ::env(PL_RESIZER_DESIGN_OPTIMIZATIONS) 0
+set ::env(PL_RESIZER_TIMING_OPTIMIZATIONS) 0
+set ::env(PL_RESIZER_BUFFER_INPUT_PORTS) "0"
+set ::env(PL_RESIZER_BUFFER_OUTPUT_PORTS) "1"
+
+## Routing
+set ::env(GLB_RESIZER_TIMING_OPTIMIZATIONS) "0"
+
+#LVS Issue - DEF Base looks to having issue
+set ::env(MAGIC_EXT_USE_GDS) {1}
+
+#set ::env(GLB_RT_MAXLAYER) 3
+set ::env(RT_MAX_LAYER) {met3}
+set ::env(FP_PDN_LOWER_LAYER) {met2}
+set ::env(FP_PDN_UPPER_LAYER) {met3}
+
+set ::env(FP_IO_HLAYER) {met2}
+set ::env(FP_IO_VLAYER) {met1}
+
+#Lef 
+set ::env(MAGIC_GENERATE_LEF) {1}
+set ::env(MAGIC_WRITE_FULL_LEF) {0}
+
+
+set ::env(ECO_ENABLE) {0}
+#set ::env(CURRENT_STEP) "synthesis"
+#set ::env(LAST_STEP) "parasitics_sta"
+
+set ::env(QUIT_ON_TIMING_VIOLATIONS) "0"
+set ::env(QUIT_ON_MAGIC_DRC) "1"
+set ::env(QUIT_ON_LVS_ERROR) "1"
+set ::env(QUIT_ON_SLEW_VIOLATIONS) "0"
diff --git a/openlane/bus_rep_south/interactive.tcl b/openlane/bus_rep_south/interactive.tcl
new file mode 100755
index 0000000..a96ddb6
--- /dev/null
+++ b/openlane/bus_rep_south/interactive.tcl
@@ -0,0 +1,355 @@
+#!/usr/bin/env tclsh
+# Copyright 2020-2022 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
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+package require openlane; # provides the utils as well
+
+proc run_placement_step {args} {
+    if { ! [ info exists ::env(PLACEMENT_CURRENT_DEF) ] } {
+        set ::env(PLACEMENT_CURRENT_DEF) $::env(CURRENT_DEF)
+    } else {
+        set ::env(CURRENT_DEF) $::env(PLACEMENT_CURRENT_DEF)
+    }
+
+    run_placement
+}
+
+proc run_cts_step {args} {
+    if { ! [ info exists ::env(CTS_CURRENT_DEF) ] } {
+        set ::env(CTS_CURRENT_DEF) $::env(CURRENT_DEF)
+    } else {
+        set ::env(CURRENT_DEF) $::env(CTS_CURRENT_DEF)
+    }
+
+    run_cts
+    run_resizer_timing
+}
+
+proc run_routing_step {args} {
+    if { ! [ info exists ::env(ROUTING_CURRENT_DEF) ] } {
+        set ::env(ROUTING_CURRENT_DEF) $::env(CURRENT_DEF)
+    } else {
+        set ::env(CURRENT_DEF) $::env(ROUTING_CURRENT_DEF)
+    }
+    if { $::env(ECO_ENABLE) == 0 } {
+        run_routing
+    }
+}
+
+proc run_parasitics_sta_step {args} {
+    if { ! [ info exists ::env(PARSITICS_CURRENT_DEF) ] } {
+        set ::env(PARSITICS_CURRENT_DEF) $::env(CURRENT_DEF)
+    } else {
+        set ::env(CURRENT_DEF) $::env(PARSITICS_CURRENT_DEF)
+    }
+
+    if { $::env(RUN_SPEF_EXTRACTION) && ($::env(ECO_ENABLE) == 0)} {
+        run_parasitics_sta
+    }
+}
+
+proc run_diode_insertion_2_5_step {args} {
+    if { ! [ info exists ::env(DIODE_INSERTION_CURRENT_DEF) ] } {
+        set ::env(DIODE_INSERTION_CURRENT_DEF) $::env(CURRENT_DEF)
+    } else {
+        set ::env(CURRENT_DEF) $::env(DIODE_INSERTION_CURRENT_DEF)
+    }
+    if { ($::env(DIODE_INSERTION_STRATEGY) == 2) || ($::env(DIODE_INSERTION_STRATEGY) == 5) } {
+        run_antenna_check
+        heal_antenna_violators; # modifies the routed DEF
+    }
+
+}
+
+proc run_irdrop_report_step {args} {
+    if { $::env(RUN_IRDROP_REPORT) } {
+        run_irdrop_report
+    }
+}
+
+proc run_lvs_step {{ lvs_enabled 1 }} {
+    if { ! [ info exists ::env(LVS_CURRENT_DEF) ] } {
+        set ::env(LVS_CURRENT_DEF) $::env(CURRENT_DEF)
+    } else {
+        set ::env(CURRENT_DEF) $::env(LVS_CURRENT_DEF)
+    }
+
+    if { $lvs_enabled && $::env(RUN_LVS) } {
+        run_magic_spice_export;
+        run_lvs; # requires run_magic_spice_export
+    }
+
+}
+
+proc run_drc_step {{ drc_enabled 1 }} {
+    if { ! [ info exists ::env(DRC_CURRENT_DEF) ] } {
+        set ::env(DRC_CURRENT_DEF) $::env(CURRENT_DEF)
+    } else {
+        set ::env(CURRENT_DEF) $::env(DRC_CURRENT_DEF)
+    }
+    if { $drc_enabled } {
+        if { $::env(RUN_MAGIC_DRC) } {
+            run_magic_drc
+        }
+        if {$::env(RUN_KLAYOUT_DRC)} {
+            run_klayout_drc
+        }
+    }
+}
+
+proc run_antenna_check_step {{ antenna_check_enabled 1 }} {
+    if { ! [ info exists ::env(ANTENNA_CHECK_CURRENT_DEF) ] } {
+        set ::env(ANTENNA_CHECK_CURRENT_DEF) $::env(CURRENT_DEF)
+    } else {
+        set ::env(CURRENT_DEF) $::env(ANTENNA_CHECK_CURRENT_DEF)
+    }
+    if { $antenna_check_enabled } {
+        run_antenna_check
+    }
+}
+
+proc run_eco_step {args} {
+    if { $::env(ECO_ENABLE) == 1 } {
+        run_eco_flow
+    }
+}
+
+proc run_magic_step {args} {
+    if {$::env(RUN_MAGIC)} {
+        run_magic
+    }
+}
+
+proc run_klayout_step {args} {
+    if {$::env(RUN_KLAYOUT)} {
+        run_klayout
+    }
+    if {$::env(RUN_KLAYOUT_XOR)} {
+        run_klayout_gds_xor
+    }
+}
+
+proc run_post_run_hooks {} {
+    if { [file exists $::env(DESIGN_DIR)/hooks/post_run.py]} {
+        puts_info "Running post run hook"
+        set result [exec $::env(OPENROAD_BIN) -python $::env(DESIGN_DIR)/hooks/post_run.py]
+        puts_info "$result"
+    } else {
+        puts_info "hooks/post_run.py not found, skipping"
+    }
+}
+
+proc run_magic_drc_batch {args} {
+    set options {
+        {-magicrc optional}
+        {-tech optional}
+        {-report required}
+        {-design required}
+        {-gds required}
+    }
+    set flags {}
+    parse_key_args "run_magic_drc_batch" args arg_values $options flags_mag $flags
+    if { [info exists arg_values(-magicrc)] } {
+        set magicrc [file normalize $arg_values(-magicrc)]
+    }
+    if { [info exists arg_values(-tech)] } {
+        set ::env(TECH) [file normalize $arg_values(-tech)]
+    }
+    set ::env(GDS_INPUT) [file normalize $arg_values(-gds)]
+    set ::env(REPORT_OUTPUT) [file normalize $arg_values(-report)]
+    set ::env(DESIGN_NAME) $arg_values(-design)
+
+    if { [info exists magicrc] } {
+        exec magic \
+            -noconsole \
+            -dnull \
+            -rcfile $magicrc \
+            $::env(OPENLANE_ROOT)/scripts/magic/drc_batch.tcl \
+            </dev/null |& tee /dev/tty
+    } else {
+        exec magic \
+            -noconsole \
+            -dnull \
+            $::env(OPENLANE_ROOT)/scripts/magic/drc_batch.tcl \
+            </dev/null |& tee /dev/tty
+    }
+}
+
+proc run_lvs_batch {args} {
+    # runs device level lvs on -gds/CURRENT_GDS and -net/CURRENT_NETLIST
+    # extracts gds only if EXT_NETLIST does not exist
+    set options {
+        {-design required}
+        {-gds optional}
+        {-net optional}
+    }
+    set flags {}
+    parse_key_args "run_lvs_batch" args arg_values $options flags_lvs $flags -no_consume
+
+    prep {*}$args
+
+    if { [info exists arg_values(-gds)] } {
+        set ::env(CURRENT_GDS) [file normalize $arg_values(-gds)]
+    } else {
+        set ::env(CURRENT_GDS) $::env(signoff_results)/$::env(DESIGN_NAME).gds
+    }
+    if { [info exists arg_values(-net)] } {
+        set ::env(CURRENT_NETLIST) [file normalize $arg_values(-net)]
+    }
+
+    assert_files_exist "$::env(CURRENT_GDS) $::env(CURRENT_NETLIST)"
+
+    set ::env(MAGIC_EXT_USE_GDS) 1
+    set ::env(EXT_NETLIST) $::env(signoff_results)/$::env(DESIGN_NAME).gds.spice
+    if { [file exists $::env(EXT_NETLIST)] } {
+        puts_warn "The file $::env(EXT_NETLIST) will be used. If you would like the file re-exported, please delete it."
+    } else {
+        run_magic_spice_export
+    }
+
+    run_lvs
+}
+
+
+proc run_file {args} {
+    set ::env(TCLLIBPATH) $::auto_path
+    exec tclsh {*}$args >&@stdout
+}
+
+
+
+proc run_flow {args} {
+    set options {
+        {-design optional}
+        {-from optional}
+        {-to optional}
+        {-save_path optional}
+        {-override_env optional}
+    }
+    set flags {-save -run_hooks -no_lvs -no_drc -no_antennacheck -gui}
+    parse_key_args "run_non_interactive_mode" args arg_values $options flags_map $flags -no_consume
+
+    prep {*}$args
+    # signal trap SIGINT save_state;
+
+    if { [info exists flags_map(-gui)] } {
+        or_gui
+        return
+    }
+    if { [info exists arg_values(-override_env)] } {
+        load_overrides $arg_values(-override_env)
+    }
+
+    set LVS_ENABLED 1
+    set DRC_ENABLED 1
+
+    set ANTENNACHECK_ENABLED [expr ![info exists flags_map(-no_antennacheck)] ]
+
+    set steps [dict create \
+        "synthesis" "run_synthesis" \
+        "floorplan" "run_floorplan" \
+        "placement" "run_placement_step" \
+        "cts" "run_cts_step" \
+        "routing" "run_routing_step" \
+        "parasitics_sta" "run_parasitics_sta_step" \
+        "eco" "run_eco_step" \
+        "diode_insertion" "run_diode_insertion_2_5_step" \
+        "irdrop" "run_irdrop_report_step" \
+        "gds_magic" "run_magic_step" \
+        "gds_klayout" "run_klayout_step" \
+        "lvs" "run_lvs_step $LVS_ENABLED " \
+        "drc" "run_drc_step $DRC_ENABLED " \
+        "antenna_check" "run_antenna_check_step $ANTENNACHECK_ENABLED " \
+        "cvc" "run_lef_cvc"
+    ]
+
+    if { [info exists arg_values(-from) ]} {
+        puts_info "Starting flow at $arg_values(-from)..."
+        set ::env(CURRENT_STEP) $arg_values(-from)
+    } elseif {  [info exists ::env(CURRENT_STEP) ] } {
+        puts_info "Resuming flow from $::env(CURRENT_STEP)..."
+    } else {
+        set ::env(CURRENT_STEP) "synthesis"
+    }
+    #Dinesh-A: Addition for LAST_STEP
+    if { [info exists arg_values(-to) ]} {
+        puts_info "Last flow Will be at $arg_values(-to)..."
+        set ::env(LAST_STEP) $arg_values(-to)
+    } elseif {  [info exists ::env(LAST_STEP) ] } {
+        puts_info "Last flow Will be at $::env(LAST_STEP)..."
+    } else {
+        set ::env(LAST_STEP) "cvc"
+    }
+
+    set_if_unset arg_values(-from) $::env(CURRENT_STEP)
+    set_if_unset arg_values(-to)   $::env(LAST_STEP)
+
+    set exe 0;
+    dict for {step_name step_exe} $steps {
+        if { [ string equal $arg_values(-from) $step_name ] } {
+            set exe 1;
+        }
+
+        if { $exe } {
+            # For when it fails
+            set ::env(CURRENT_STEP) $step_name
+            [lindex $step_exe 0] [lindex $step_exe 1] ;
+        }
+
+        if { [ string equal $arg_values(-to) $step_name ] } {
+            set exe 0:
+            break;
+        }
+
+    }
+
+    # for when it resumes
+    set steps_as_list [dict keys $steps]
+    set next_idx [expr [lsearch $steps_as_list $::env(CURRENT_STEP)] + 1]
+    set ::env(CURRENT_STEP) [lindex $steps_as_list $next_idx]
+
+    # Saves to <RUN_DIR>/results/final
+    save_final_views
+
+    # Saves to design directory or custom
+    if {  [info exists flags_map(-save) ] } {
+        if { ! [info exists arg_values(-save_path)] } {
+            set arg_values(-save_path) $::env(DESIGN_DIR)
+        }
+        save_final_views\
+            -save_path $arg_values(-save_path)\
+            -tag $::env(RUN_TAG)
+    }
+    calc_total_runtime
+    save_state
+    generate_final_summary_report
+
+    check_timing_violations
+
+    if { [info exists arg_values(-save_path)]\
+        && $arg_values(-save_path) != "" } {
+        set ::env(HOOK_OUTPUT_PATH) "[file normalize $arg_values(-save_path)]"
+    } else {
+        set ::env(HOOK_OUTPUT_PATH) $::env(RESULTS_DIR)/final
+    }
+
+    if {[info exists flags_map(-run_hooks)]} {
+        run_post_run_hooks
+    }
+
+    puts_success "Flow complete."
+
+    show_warnings "Note that the following warnings have been generated:"
+}
+
+run_flow {*}$argv
diff --git a/openlane/bus_rep_south/pdn.tcl b/openlane/bus_rep_south/pdn.tcl
new file mode 100644
index 0000000..1fe689b
--- /dev/null
+++ b/openlane/bus_rep_south/pdn.tcl
@@ -0,0 +1,49 @@
+# 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
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+
+# Power nets
+set ::power_nets $::env(VDD_PIN)
+set ::ground_nets $::env(GND_PIN)
+
+set ::macro_blockage_layer_list "li1 met1 met2 met3 met4 met5"
+
+pdngen::specify_grid stdcell {
+    name grid
+    rails {
+	    met1 {width 0.48 pitch $::env(PLACE_SITE_HEIGHT) offset 0}
+    }
+    straps {
+	    met4 {width 1.6 pitch $::env(FP_PDN_VPITCH) offset $::env(FP_PDN_VOFFSET)}
+	    met5 {width 1.6 pitch $::env(FP_PDN_HPITCH) offset $::env(FP_PDN_HOFFSET)}
+    }
+    connect {{met1 met4} {met4 met5}}
+}
+
+pdngen::specify_grid macro {
+    power_pins "VPWR"
+    ground_pins "VGND"
+    blockages "li1 met1 met2 met3 met4"
+    straps { 
+    } 
+    connect {{met4_PIN_ver met5}}
+}
+
+set ::halo 5
+
+# POWER or GROUND #Std. cell rails starting with power or ground rails at the bottom of the core area
+set ::rails_start_with "POWER" ;
+
+# POWER or GROUND #Upper metal stripes starting with power or ground rails at the left/bottom of the core area
+set ::stripes_start_with "POWER" ;
diff --git a/openlane/bus_rep_south/pin_order.cfg b/openlane/bus_rep_south/pin_order.cfg
new file mode 100644
index 0000000..74cee02
--- /dev/null
+++ b/openlane/bus_rep_south/pin_order.cfg
@@ -0,0 +1,258 @@
+#BUS_SORT
+
+#MANUAL_PLACE
+
+#N
+ch_out\[105\]    1730 0 2
+ch_out\[104\]
+ch_in\[103\]
+ch_out\[102\]
+ch_out\[101\]
+ch_out\[100\]
+ch_out\[99\]
+ch_out\[98\]
+ch_in\[97\]
+ch_out\[96\]
+ch_out\[95\]
+ch_out\[94\]
+ch_in\[93\]
+ch_out\[92\]
+ch_out\[91\]
+ch_out\[90\]
+ch_in\[89\]
+ch_out\[88\]
+ch_out\[87\]
+ch_out\[86\]
+ch_in\[85\]
+ch_out\[84\]
+ch_out\[83\]
+ch_out\[82\]
+ch_in\[81\]
+ch_out\[80\]
+ch_out\[79\]
+ch_in\[78\]
+ch_out\[77\]
+ch_out\[76\]
+ch_in\[75\]
+ch_out\[74\]
+ch_out\[73\]
+ch_in\[72\]
+ch_out\[71\]
+ch_out\[70\]
+ch_in\[69\]
+ch_out\[68\]
+ch_out\[67\]
+ch_in\[66\]
+ch_out\[65\]
+ch_out\[64\]
+ch_in\[63\]
+ch_out\[62\]
+ch_out\[61\]
+ch_in\[60\]
+ch_out\[59\]
+ch_out\[58\]
+ch_in\[57\]
+ch_out\[56\]
+ch_out\[55\]
+ch_in\[54\]
+ch_out\[53\]
+ch_out\[52\]
+ch_in\[51\]
+ch_out\[50\]
+ch_out\[49\]
+ch_in\[48\]
+ch_out\[47\]
+ch_out\[46\]
+ch_in\[45\]
+ch_out\[44\]
+ch_out\[43\]
+ch_in\[42\]
+ch_out\[41\]
+ch_out\[40\]
+ch_in\[39\]
+ch_out\[38\]
+ch_out\[37\]
+ch_in\[36\]
+ch_out\[35\]
+ch_out\[34\]
+ch_in\[33\]
+ch_out\[32\]
+ch_out\[31\]
+ch_in\[30\]
+ch_out\[29\]
+ch_out\[28\]
+ch_in\[27\]
+ch_out\[26\]
+ch_out\[25\]
+ch_in\[24\]
+ch_out\[23\]
+ch_out\[22\]
+ch_in\[21\]
+ch_out\[20\]
+ch_out\[19\]
+ch_in\[18\]
+ch_out\[17\]
+ch_out\[16\]
+ch_in\[15\]
+ch_out\[14\]
+ch_out\[13\]
+ch_in\[12\]
+ch_out\[11\]
+ch_out\[10\]
+ch_in\[9\]
+ch_out\[8\]
+ch_out\[7\]
+ch_in\[6\]
+ch_out\[5\]
+ch_out\[4\]
+ch_in\[3\]
+ch_out\[2\]
+ch_out\[1\]
+ch_in\[0\]
+
+ch_out\[123\] 1980 0 2
+ch_out\[122\] 
+ch_out\[121\] 
+ch_out\[120\] 
+ch_out\[119\] 
+ch_out\[118\] 
+ch_out\[117\] 
+ch_out\[116\] 
+ch_out\[115\] 
+ch_out\[114\] 
+ch_out\[113\] 
+ch_out\[112\] 
+ch_out\[111\] 
+ch_out\[110\] 
+ch_out\[109\] 
+ch_out\[108\] 
+ch_out\[107\] 
+ch_out\[106\] 
+
+
+#S
+ch_in\[105\]    0 0 16
+ch_in\[104\]   
+ch_out\[103\]  
+ch_in\[102\]  
+ch_in\[101\]  
+ch_in\[100\]  
+ch_in\[99\]   
+ch_in\[98\]   
+ch_out\[97\]  
+ch_in\[96\]   
+ch_in\[95\]   
+ch_in\[94\]   
+ch_out\[93\]  
+ch_in\[92\]   
+ch_in\[91\]   
+ch_in\[90\]   
+ch_out\[89\]  
+ch_in\[88\]   
+ch_in\[87\]   
+ch_in\[86\]   
+ch_out\[85\]  
+ch_in\[84\]   
+ch_in\[83\]   
+ch_in\[82\]   
+ch_out\[81\]  
+ch_in\[80\]   
+ch_in\[79\]   
+ch_out\[78\]  
+ch_in\[77\]   
+ch_in\[76\]   
+ch_out\[75\]  
+ch_in\[74\]   
+ch_in\[73\]   
+ch_out\[72\]  
+ch_in\[71\]   
+ch_in\[70\]   
+ch_out\[69\]  
+ch_in\[68\]   
+ch_in\[67\]   
+ch_out\[66\]  
+ch_in\[65\]   
+ch_in\[64\]   
+ch_out\[63\]  
+ch_in\[62\]   
+ch_in\[61\]   
+ch_out\[60\]  
+ch_in\[59\]   
+ch_in\[58\]   
+ch_out\[57\]  
+ch_in\[56\]   
+ch_in\[55\]   
+ch_out\[54\]  
+ch_in\[53\]   
+ch_in\[52\]   
+ch_out\[51\]  
+ch_in\[50\]   
+ch_in\[49\]   
+ch_out\[48\]  
+ch_in\[47\]   
+ch_in\[46\]   
+ch_out\[45\]  
+ch_in\[44\]   
+ch_in\[43\]   
+ch_out\[42\]  
+ch_in\[41\]   
+ch_in\[40\]   
+ch_out\[39\]  
+ch_in\[38\]   
+ch_in\[37\]   
+ch_out\[36\]  
+ch_in\[35\]   
+ch_in\[34\]   
+ch_out\[33\]  
+ch_in\[32\]   
+ch_in\[31\]   
+ch_out\[30\]  
+ch_in\[29\]   
+ch_in\[28\]   
+ch_out\[27\]  
+ch_in\[26\]   
+ch_in\[25\]   
+ch_out\[24\]  
+ch_in\[23\]   
+ch_in\[22\]   
+ch_out\[21\]  
+ch_in\[20\]   
+ch_in\[19\]   
+ch_out\[18\]  
+ch_in\[17\]   
+ch_in\[16\]   
+ch_out\[15\]  
+ch_in\[14\]   
+ch_in\[13\]   
+ch_out\[12\]  
+ch_in\[11\]   
+ch_in\[10\]   
+ch_out\[9\]   
+ch_in\[8\]    
+ch_in\[7\]    
+ch_out\[6\]   
+ch_in\[5\]    
+ch_in\[4\]    
+ch_out\[3\]   
+ch_in\[2\]    
+ch_in\[1\]    
+ch_out\[0\]   
+
+ch_in\[123\] 700 0 16
+ch_in\[122\] 
+ch_in\[121\] 
+ch_in\[120\] 
+ch_in\[119\] 
+ch_in\[118\] 
+ch_in\[117\] 
+ch_in\[116\] 
+ch_in\[115\] 
+ch_in\[114\] 
+ch_in\[113\] 
+ch_in\[112\] 
+ch_in\[111\] 
+ch_in\[110\] 
+ch_in\[109\] 
+ch_in\[108\] 
+ch_in\[107\] 
+ch_in\[106\] 
diff --git a/openlane/fpu_wrapper/pin_order.cfg b/openlane/fpu_wrapper/pin_order.cfg
index 3cf0a29..edb7b03 100644
--- a/openlane/fpu_wrapper/pin_order.cfg
+++ b/openlane/fpu_wrapper/pin_order.cfg
@@ -3,7 +3,7 @@
 #MANUAL_PLACE
 
 
-#W
+#E
 
 mclk               0100 0 2
 rst_n 
diff --git a/openlane/pinmux_top/config.tcl b/openlane/pinmux_top/config.tcl
index d0e0a8f..3900d26 100755
--- a/openlane/pinmux_top/config.tcl
+++ b/openlane/pinmux_top/config.tcl
@@ -41,7 +41,7 @@
 
 # Local sources + no2usb sources
 set ::env(VERILOG_FILES) "\
-     $::env(DESIGN_DIR)/../../verilog/rtl/clk_skew_adjust/src/clk_skew_adjust.gv \
+     $::env(DESIGN_DIR)/../../verilog/rtl/lib/clk_skew_adjust.gv \
      $::env(DESIGN_DIR)/../../verilog/rtl/pinmux/src/pinmux_top.sv     \
      $::env(DESIGN_DIR)/../../verilog/rtl/pinmux/src/pinmux.sv     \
      $::env(DESIGN_DIR)/../../verilog/rtl/pinmux/src/glbl_reg.sv  \
@@ -141,7 +141,7 @@
 
 
 #LVS Issue - DEF Base looks to having issue
-set ::env(MAGIC_EXT_USE_GDS) {0}
+set ::env(MAGIC_EXT_USE_GDS) {1}
 
 set ::env(GLB_RESIZER_MAX_SLEW_MARGIN) {1.5}
 set ::env(PL_RESIZER_MAX_SLEW_MARGIN) {1.5}
diff --git a/openlane/uart_i2c_usb_spi_top/config.tcl b/openlane/uart_i2c_usb_spi_top/config.tcl
index 7576c81..358a009 100644
--- a/openlane/uart_i2c_usb_spi_top/config.tcl
+++ b/openlane/uart_i2c_usb_spi_top/config.tcl
@@ -41,7 +41,7 @@
 
 # Local sources + no2usb sources
 set ::env(VERILOG_FILES) "\
-    $::env(DESIGN_DIR)/../../verilog/rtl/clk_skew_adjust/src/clk_skew_adjust.gv \
+    $::env(DESIGN_DIR)/../../verilog/rtl/lib/clk_skew_adjust.gv \
     $::env(DESIGN_DIR)/../../verilog/rtl/uart/src/uart_core.sv  \
     $::env(DESIGN_DIR)/../../verilog/rtl/uart/src/uart_cfg.sv   \
     $::env(DESIGN_DIR)/../../verilog/rtl/uart/src/uart_rxfsm.sv \
diff --git a/openlane/user_project_wrapper/config.tcl b/openlane/user_project_wrapper/config.tcl
index 756c6da..26d4cc6 100644
--- a/openlane/user_project_wrapper/config.tcl
+++ b/openlane/user_project_wrapper/config.tcl
@@ -74,10 +74,11 @@
 	    $::env(DESIGN_DIR)/../../verilog/gl/ycr_core_top.v \
 	    $::env(DESIGN_DIR)/../../verilog/gl/ycr_iconnect.v \
 	    $::env(DESIGN_DIR)/../../verilog/gl/dg_pll.v \
-	    $::env(PDK_ROOT)/sky130B/libs.ref/sky130_sram_macros/verilog/sky130_sram_2kbyte_1rw1r_32x512_8.v \
+	    $::env(PDK_ROOT)/$::env(PDK)/libs.ref/sky130_sram_macros/verilog/sky130_sram_2kbyte_1rw1r_32x512_8.v \
 	    $::env(DESIGN_DIR)/../../verilog/gl/dac_top.v \
 	    $::env(DESIGN_DIR)/../../verilog/gl/aes_top.v \
 	    $::env(DESIGN_DIR)/../../verilog/gl/fpu_wrapper.v \
+	    $::env(DESIGN_DIR)/../../verilog/gl/bus_rep_south.v \
 	    "
 
 set ::env(EXTRA_LEFS) "\
@@ -94,6 +95,7 @@
 	$lef_root/dac_top.lef \
 	$lef_root/aes_top.lef \
 	$lef_root/fpu_wrapper.lef \
+	$lef_root/bus_rep_south.lef \
 	"
 
 set ::env(EXTRA_GDS_FILES) "\
@@ -107,8 +109,10 @@
 	$gds_root/ycr_iconnect.gds \
 	$gds_root/dg_pll.gds \
 	$gds_root/dac_top.gds \
+	$::env(PDK_ROOT)/$::env(PDK)/libs.ref/sky130_sram_macros/gds/sky130_sram_2kbyte_1rw1r_32x512_8.gds \
 	$gds_root/aes_top.gds \
 	$gds_root/fpu_wrapper.gds \
+	$gds_root/bus_rep_south.gds \
 	"
 
 set ::env(SYNTH_DEFINES) [list SYNTHESIS ]
@@ -120,12 +124,19 @@
 
 ## Internal Macros
 ### Macro PDN Connections
+### Follow checks are temp masked due to PDNGEN issue in 
+### handling SRAM Power Strip in MET3, This issue occured due
+### Enabling MET3 to MET4 connectivity to handle power hook up
+### for bus repeater macro
+set ::env(FP_PDN_CHECK_NODES) 1
+set ::env(FP_PDN_IRDROP) "1"
+set ::env(RUN_IRDROP_REPORT) "1"
+####################
 
 set ::env(FP_PDN_ENABLE_MACROS_GRID) {1}
 set ::env(FP_PDN_ENABLE_GLOBAL_CONNECTIONS) "0"
-set ::env(FP_PDN_CHECK_NODES) 1
 set ::env(FP_PDN_ENABLE_RAILS) 0
-set ::env(FP_PDN_IRDROP) "1"
+set ::env(FP_PDN_IRDROP) "0"
 set ::env(FP_PDN_HORIZONTAL_HALO) "10"
 set ::env(FP_PDN_VERTICAL_HALO) "10"
 set ::env(FP_PDN_VOFFSET) "5"
@@ -179,7 +190,8 @@
 	u_riscv_top.u_intf          vccd1 vssd1 vccd1 vssd1,\
 	u_4x8bit_dac                vdda1 vssa1 vccd1 vssd1,\
 	u_aes                       vdda1 vssa1 vccd1 vssd1,\
-	u_fpu                       vdda1 vssa1 vccd1 vssd1
+	u_fpu                       vdda1 vssa1 vccd1 vssd1,\
+	u_rp_south                  vdda1 vssa1 vccd1 vssd1
       	"
 
 
diff --git a/openlane/user_project_wrapper/macro.cfg b/openlane/user_project_wrapper/macro.cfg
index e7437d8..9169bcd 100644
--- a/openlane/user_project_wrapper/macro.cfg
+++ b/openlane/user_project_wrapper/macro.cfg
@@ -1,18 +1,19 @@
-u_4x8bit_dac                 1850            2500            N
-u_qspi_master                2250             450           N
-u_uart_i2c_usb_spi           2250            1100           N
-u_pinmux                     2250            2000           N
-u_pll                        2500            3028           N
+u_4x8bit_dac                 1850            2500        N
+u_qspi_master                2250             450        N
+u_uart_i2c_usb_spi           2250            1100        N
+u_pinmux                     2250            2000        N
+u_pll                        2500            3028        N
 
-u_fpu                       1000            2600           N
-u_aes                       50              2600           N
-u_riscv_top.i_core_top_0    50	     1400 	     N
-u_riscv_top.u_connect       740	     1400	     N
-u_riscv_top.u_intf          950 	     650	     N
-u_dcache_2kb                150             130            N
-u_icache_2kb                950             130            N
-u_tsram0_2kb                150             750            N
+u_fpu                       1000            2600         N
+u_aes                       50              2600         N
+u_riscv_top.i_core_top_0    50	            1400 	     N
+u_riscv_top.u_connect       740	            1400	     N
+u_riscv_top.u_intf          950 	         650	     N
+u_dcache_2kb                150              130         N
+u_icache_2kb                950              130         N
+u_tsram0_2kb                150              750         N
 
 
-u_intercon                  1850            650             N
-u_wb_host                   1750            100             N
+u_intercon                  1850            650          N
+u_wb_host                   1750            100          N
+u_rp_south                   20             20           N
diff --git a/openlane/user_project_wrapper/pdn_cfg.tcl b/openlane/user_project_wrapper/pdn_cfg.tcl
index b2a2b42..ace04ab 100644
--- a/openlane/user_project_wrapper/pdn_cfg.tcl
+++ b/openlane/user_project_wrapper/pdn_cfg.tcl
@@ -150,14 +150,32 @@
         -spacings "$::env(FP_PDN_CORE_RING_VSPACING) $::env(FP_PDN_CORE_RING_HSPACING)" \
         -core_offset "$::env(FP_PDN_CORE_RING_VOFFSET) $::env(FP_PDN_CORE_RING_HOFFSET)"
 }
+##################################
+# Common Macro Power Hook Up
+#   Power Connect met-4 to met-5
+##################################
 
 define_pdn_grid \
     -macro \
-    -default \
-    -name macro \
+    -name macro_1 \
+    -instances "u_pll u_intercon u_pinmux u_qspi_master u_tsram0_2kb u_icache_2kb u_dcache_2kb u_uart_i2c_usb_spi u_wb_host u_riscv_top.i_core_top_0 u_riscv_top.u_connect u_riscv_top.u_intf u_4x8bit_dac u_aes u_fpu" \
     -starts_with POWER \
     -halo "$::env(FP_PDN_HORIZONTAL_HALO) $::env(FP_PDN_VERTICAL_HALO)"
 
 add_pdn_connect \
-    -grid macro \
+    -grid macro_1 \
     -layers "$::env(FP_PDN_LOWER_LAYER) $::env(FP_PDN_UPPER_LAYER)"
+
+##################################
+# u_rp_south Power Hook Up
+#  Power connect met-3 to met-4
+##################################
+
+define_pdn_grid \
+    -macro \
+    -name macro_2 \
+    -instances "u_rp_south" \
+    -starts_with POWER \
+    -halo "$::env(FP_PDN_HORIZONTAL_HALO) $::env(FP_PDN_VERTICAL_HALO)"
+
+add_pdn_connect -grid macro_2 -layers "met3 met4"
diff --git a/openlane/wb_host/config.tcl b/openlane/wb_host/config.tcl
index 407a338..48a791b 100755
--- a/openlane/wb_host/config.tcl
+++ b/openlane/wb_host/config.tcl
@@ -42,7 +42,7 @@
 
 # Local sources + no2usb sources
 set ::env(VERILOG_FILES) "\
-     $::env(DESIGN_DIR)/../../verilog/rtl/clk_skew_adjust/src/clk_skew_adjust.gv \
+     $::env(DESIGN_DIR)/../../verilog/rtl/lib/clk_skew_adjust.gv \
      $::env(DESIGN_DIR)/../../verilog/rtl/wb_host/src/wb_host.sv \
      $::env(DESIGN_DIR)/../../verilog/rtl/wb_host/src/wbh_reset_fsm.sv \
      $::env(DESIGN_DIR)/../../verilog/rtl/wb_host/src/wbh_reg.sv \
@@ -85,7 +85,7 @@
 set ::env(FP_PIN_ORDER_CFG) $::env(DESIGN_DIR)/pin_order.cfg
 
 set ::env(FP_SIZING) absolute
-set ::env(DIE_AREA) "0 0 400 425"
+set ::env(DIE_AREA) "0 0 425 425"
 
 set ::env(GRT_OBS) "                              \
 	                met4  0 0 400 425"
diff --git a/openlane/wb_host/pin_order.cfg b/openlane/wb_host/pin_order.cfg
index 8c93e59..8ac589d 100644
--- a/openlane/wb_host/pin_order.cfg
+++ b/openlane/wb_host/pin_order.cfg
@@ -3,12 +3,6 @@
 #MANUAL_PLACE
 
 
-#W
-
-cpu_clk               0100 0 2
-
-
-
 #S
 user_clock2         0000 0  2
 user_clock1     
@@ -158,16 +152,8 @@
 
 
 #N
-cfg_clk_skew_ctrl2\[31\]   0000 0 2 
-cfg_clk_skew_ctrl2\[30\]
-cfg_clk_skew_ctrl2\[29\]
-cfg_clk_skew_ctrl2\[28\]
-cfg_clk_skew_ctrl2\[27\]
-cfg_clk_skew_ctrl2\[26\]
-cfg_clk_skew_ctrl2\[25\]
-cfg_clk_skew_ctrl2\[24\]
 
-cfg_clk_skew_ctrl1\[31\]
+cfg_clk_skew_ctrl1\[31\]   0000 0 2
 cfg_clk_skew_ctrl1\[30\]
 cfg_clk_skew_ctrl1\[29\]
 cfg_clk_skew_ctrl1\[28\]
@@ -181,7 +167,9 @@
 cfg_clk_skew_ctrl1\[4\]
 cfg_cska_wh\[0\]
 
-wbd_int_rst_n              0100 0 2
+cpu_clk                    0100 0 2
+
+wbd_int_rst_n              0120 0 2
 cfg_clk_skew_ctrl2\[23\]
 cfg_clk_skew_ctrl2\[22\]
 cfg_clk_skew_ctrl2\[21\]
@@ -347,7 +335,16 @@
 wbs_cyc_o      
 
 
-strap_sticky\[31\] 325 0 2
+cfg_clk_skew_ctrl2\[31\]   325 0 2 
+cfg_clk_skew_ctrl2\[30\]
+cfg_clk_skew_ctrl2\[29\]
+cfg_clk_skew_ctrl2\[28\]
+cfg_clk_skew_ctrl2\[27\]
+cfg_clk_skew_ctrl2\[26\]
+cfg_clk_skew_ctrl2\[25\]
+cfg_clk_skew_ctrl2\[24\]
+
+strap_sticky\[31\] 
 strap_sticky\[30\]
 strap_sticky\[29\]
 strap_sticky\[28\]
diff --git a/openlane/wb_interconnect/config.tcl b/openlane/wb_interconnect/config.tcl
index e83bae6..a87255c 100755
--- a/openlane/wb_interconnect/config.tcl
+++ b/openlane/wb_interconnect/config.tcl
@@ -30,6 +30,8 @@
 set ::env(CLOCK_NET) "clk_i"
 
 set ::env(SYNTH_MAX_FANOUT) 4
+set ::env(SYNTH_BUFFERING) {0}
+
 
 ## CTS BUFFER
 set ::env(CTS_CLK_BUFFER_LIST) "sky130_fd_sc_hd__clkbuf_4 sky130_fd_sc_hd__clkbuf_8"
@@ -41,7 +43,8 @@
 
 # Local sources + no2usb sources
 set ::env(VERILOG_FILES) "\
-        $::env(DESIGN_DIR)/../../verilog/rtl/clk_skew_adjust/src/clk_skew_adjust.gv \
+        $::env(DESIGN_DIR)/../../verilog/rtl/lib/clk_skew_adjust.gv \
+        $::env(DESIGN_DIR)/../../verilog/rtl/lib/ctech_cells.sv     \
         $::env(DESIGN_DIR)/../../verilog/rtl/lib/sync_wbb.sv                \
         $::env(DESIGN_DIR)/../../verilog/rtl/lib/sync_fifo2.sv                \
         $::env(DESIGN_DIR)/../../verilog/rtl/wb_interconnect/src/wb_arb.sv     \
@@ -51,7 +54,7 @@
 
 set ::env(SYNTH_DEFINES) [list SYNTHESIS ]
 
-set ::env(SYNTH_PARAMETERS) "CH_CLK_WD=4\
+set ::env(SYNTH_PARAMETERS) "CH_CLK_WD=14\
 	                 CH_DATA_WD=154 \
 			 "
 
@@ -102,7 +105,7 @@
 set ::env(PL_RESIZER_DESIGN_OPTIMIZATIONS) 1
 set ::env(PL_RESIZER_TIMING_OPTIMIZATIONS) 1
 set ::env(PL_RESIZER_MAX_CAP_MARGIN) 2
-set ::env(PL_RESIZER_MAX_WIRE_LENGTH) "2000"
+set ::env(PL_RESIZER_MAX_WIRE_LENGTH) "500"
 set ::env(PL_RESIZER_MAX_SLEW_MARGIN) "2.0"
 set ::env(PL_RESIZER_BUFFER_INPUT_PORTS) "0"
 set ::env(PL_RESIZER_BUFFER_OUTPUT_PORTS) "1"
@@ -117,7 +120,7 @@
 set ::env(GLB_RESIZER_MAX_WIRE_LENGTH) {500}
 
 #LVS Issue - DEF Base looks to having issue
-set ::env(MAGIC_EXT_USE_GDS) {0}
+set ::env(MAGIC_EXT_USE_GDS) {1}
 
 #set ::env(GLB_RT_MAXLAYER) 5
 set ::env(RT_MAX_LAYER) {met4}
diff --git a/openlane/wb_interconnect/pin_order.cfg b/openlane/wb_interconnect/pin_order.cfg
index 7038097..51bfa57 100644
--- a/openlane/wb_interconnect/pin_order.cfg
+++ b/openlane/wb_interconnect/pin_order.cfg
@@ -3,7 +3,19 @@
 #MANUAL_PLACE
 
 #S
-rst_n                000  0 2
+ch_clk_in\[13\]  000 0 2
+ch_clk_in\[12\]
+ch_clk_in\[11\]
+ch_clk_in\[10\]
+ch_clk_in\[9\]
+ch_clk_in\[8\]
+ch_clk_in\[7\]
+ch_clk_in\[6\]
+ch_clk_in\[5\]
+ch_clk_in\[4\]
+
+
+rst_n                020  0 2
 ch_data_in\[43\]
 ch_data_in\[42\]
 ch_data_in\[41\]
@@ -260,6 +272,7 @@
 ch_data_out\[22\] 
 ch_data_out\[21\] 
 ch_data_out\[20\] 
+ch_clk_out\[4\]
 
 ch_data_out\[3\]   050 0 2
 ch_data_out\[2\]
@@ -587,19 +600,34 @@
 ch_data_out\[42\] 
 ch_data_out\[41\] 
 ch_data_out\[40\] 
+ch_clk_out\[9\]
+
 ch_data_out\[39\] 
 ch_data_out\[38\] 
 ch_data_out\[37\] 
 ch_data_out\[36\] 
+ch_clk_out\[8\]
+
 ch_data_out\[35\] 
 ch_data_out\[34\] 
 ch_data_out\[33\] 
 ch_data_out\[32\] 
+
+ch_clk_out\[7\]
+
 ch_data_out\[31\] 
 ch_data_out\[30\] 
 ch_data_out\[29\] 
 ch_data_out\[28\] 
 
+ch_clk_out\[6\]
+
+ch_data_out\[27\]  750 0 2
+ch_data_out\[26\] 
+ch_data_out\[25\] 
+ch_data_out\[24\] 
+ch_clk_out\[5\]
+
 ch_data_out\[76\]   1600 0 2
 ch_data_out\[75\] 
 ch_data_out\[74\] 
@@ -634,20 +662,17 @@
 ch_data_out\[45\] 
 ch_data_out\[44\] 
 
-ch_data_out\[27\] 
-ch_data_out\[26\] 
-ch_data_out\[25\] 
-ch_data_out\[24\] 
-
-ch_data_out\[153\]  1700 0 2
-ch_data_out\[152\]  
-ch_data_out\[151\]  
-ch_data_out\[150\]  
-
-ch_data_out\[149\]  
+ch_data_out\[149\]  1700 0 2
 ch_data_out\[148\]  
 ch_data_out\[147\]  
 ch_data_out\[146\]  
+ch_clk_out\[10\]
+
+ch_data_out\[153\]  1750 0 2
+ch_data_out\[152\]  
+ch_data_out\[151\]  
+ch_data_out\[150\]  
+ch_clk_out\[11\]
 
 #E
 ch_data_out\[19\]   0000 0  2  
@@ -1064,4 +1089,6 @@
 s2_wbd_ack_i        
 s2_wbd_cyc_o        
 
+ch_clk_out\[12\]
+ch_clk_out\[13\]
 
diff --git a/openlane/ycr_core_top/pin_order.cfg b/openlane/ycr_core_top/pin_order.cfg
index 222f71f..f3daaa8 100644
--- a/openlane/ycr_core_top/pin_order.cfg
+++ b/openlane/ycr_core_top/pin_order.cfg
@@ -1,6 +1,21 @@
 #BUS_SORT
 #MANUAL_PLACE
 #E
+pwrup_rst_n       
+rst_n
+
+cfg_ccska\[3\]
+cfg_ccska\[2\]
+cfg_ccska\[1\]
+cfg_ccska\[0\]
+core_clk_int
+core_clk_skew
+
+clk
+clk_o
+core_rst_n_o
+core_rdc_qlfy_o
+
 core_uid\[1\]              0200 00 2
 core_uid\[0\]   
 imem2core_req_ack_i
@@ -331,19 +346,3 @@
 core_irq_soft_i
 cpu_rst_n
 
-#S
-pwrup_rst_n       
-rst_n
-
-
-cfg_ccska\[3\]
-cfg_ccska\[2\]
-cfg_ccska\[1\]
-cfg_ccska\[0\]
-core_clk_int
-core_clk_skew
-
-clk
-clk_o
-core_rst_n_o
-core_rdc_qlfy_o
diff --git a/openlane/ycr_iconnect/config.tcl b/openlane/ycr_iconnect/config.tcl
index 0d3f9e8..5aeb2f3 100644
--- a/openlane/ycr_iconnect/config.tcl
+++ b/openlane/ycr_iconnect/config.tcl
@@ -23,7 +23,7 @@
 
 # Timing configuration
 set ::env(CLOCK_PERIOD) "10"
-set ::env(CLOCK_PORT) "core_clk rtc_clk"
+set ::env(CLOCK_PORT) "u_cclk_cts.genblk1.u_mux/X rtc_clk"
 
 set ::env(SYNTH_MAX_FANOUT) 4
 
diff --git a/openlane/ycr_iconnect/pin_order.cfg b/openlane/ycr_iconnect/pin_order.cfg
index 254fda4..981fcbd 100644
--- a/openlane/ycr_iconnect/pin_order.cfg
+++ b/openlane/ycr_iconnect/pin_order.cfg
@@ -817,6 +817,14 @@
 riscv_debug\[0\]
 
 #E
+cfg_ccska\[3\]
+cfg_ccska\[2\]
+cfg_ccska\[1\]
+cfg_ccska\[0\]
+core_clk_int
+core_clk_skew
+core_clk 
+
 core_irq_lines_i\[31\]   850 0 2
 core_irq_lines_i\[30\]
 core_irq_lines_i\[29\]
@@ -851,13 +859,6 @@
 core_irq_lines_i\[0\]
 core_irq_soft_i
 
-cfg_ccska\[3\]
-cfg_ccska\[2\]
-cfg_ccska\[1\]
-cfg_ccska\[0\]
-core_clk_int
-core_clk_skew
-core_clk          
 rtc_clk
 pwrup_rst_n
 cpu_intf_rst_n
diff --git a/sdc/caravel.sdc b/sdc/caravel.sdc
new file mode 100644
index 0000000..b548e92
--- /dev/null
+++ b/sdc/caravel.sdc
@@ -0,0 +1,330 @@
+### Caravel Signoff SDC
+### Rev 3
+### Date: 28/10/2022
+### Reference SDC: $CARAVEL_ROOT/signoff/caravel/caravel.sdc
+
+## MASTER CLOCKS
+## Reduce the clock speed from 25ns 40ns
+create_clock -name clk -period 40 [get_ports {clock}] 
+
+create_clock -name hkspi_clk -period 100 [get_pins {housekeeping/mgmt_gpio_in[4]} ] 
+create_clock -name hk_serial_clk -period 50 [get_pins {housekeeping/serial_clock}]
+create_clock -name hk_serial_load -period 1000 [get_pins {housekeeping/serial_load}]
+# hk_serial_clk period is x2 core clock
+
+### User Project Clocks
+create_generated_clock -name wb_clk -add -source [get_ports {clock}] -master_clock [get_clocks clk] -divide_by 1 -comment {Wishbone User Clock} [get_pins mprj/wb_clk_i]
+create_clock -name int_pll_clock -period 5.0000  [get_pins {mprj/u_pinmux/int_pll_clock}]
+
+create_clock -name wbs_ref_clk -period 5.0000   [get_pins {mprj/u_wb_host/u_reg.u_wbs_ref_clkbuf.u_buf/X}]
+create_clock -name wbs_clk_i   -period 12.0000  [get_pins {mprj/u_wb_host/wbs_clk_out}]
+
+create_clock -name cpu_ref_clk -period 5.0000   [get_pins {mprj/u_wb_host/u_reg.u_cpu_ref_clkbuf.u_buf/X}]
+create_clock -name cpu_clk     -period 13.0000  [get_pins {mprj/u_wb_host/cpu_clk}]
+
+create_clock -name rtc_ref_clk -period 50.0000  [get_pins {mprj/u_pinmux/u_glbl_reg.u_rtc_ref_clkbuf.u_buf/X}]
+create_clock -name rtc_clk     -period 50.0000  [get_pins {mprj/u_pinmux/u_glbl_reg.u_clkbuf_rtc.u_buf/X}]
+
+create_clock -name pll_ref_clk -period 20.0000  [get_pins {mprj/u_pinmux/pll_ref_clk}]
+create_clock -name pll_clk_0   -period 6.0000   [get_pins {mprj/u_pll/ringosc.ibufp01/Y}]
+
+create_clock -name usb_ref_clk -period 5.0000   [get_pins {mprj/u_pinmux/u_glbl_reg.u_usb_ref_clkbuf.u_buf/X}]
+create_clock -name usb_clk     -period 20.0000  [get_pins {mprj/u_pinmux/u_glbl_reg.u_clkbuf_usb.u_buf/X}]
+create_clock -name uarts0_clk  -period 100.0000 [get_pins {mprj/u_uart_i2c_usb_spi/u_uart0_core.u_lineclk_buf.genblk1.u_mux/X}]
+create_clock -name uarts1_clk  -period 100.0000 [get_pins {mprj/u_uart_i2c_usb_spi/u_uart1_core.u_lineclk_buf.genblk1.u_mux/X}]
+create_clock -name uartm_clk   -period 100.0000 [get_pins {mprj/u_wb_host/u_uart2wb.u_core.u_uart_clk.genblk1.u_mux/X}]
+create_clock -name dbg_ref_clk -period 12.0000 [get_pins {mprj/u_pinmux/u_glbl_reg.u_clkbuf_dbg_ref.u_buf/X}]
+
+set_clock_uncertainty 0.1000 [all_clocks]
+
+set_clock_groups \
+   -name clock_group \
+   -logically_exclusive \
+   -group [get_clocks {wb_clk clk}]\
+   -group [get_clocks {hk_serial_clk}]\
+   -group [get_clocks {hk_serial_load}]\
+   -group [get_clocks {hkspi_clk}]\
+   -group [get_clocks {int_pll_clock}]\
+   -group [get_clocks {wbs_clk_i}]\
+   -group [get_clocks {wbs_ref_clk}]\
+   -group [get_clocks {cpu_clk}]\
+   -group [get_clocks {cpu_ref_clk}]\
+   -group [get_clocks {rtc_clk}]\
+   -group [get_clocks {usb_ref_clk}]\
+   -group [get_clocks {pll_ref_clk}]\
+   -group [get_clocks {pll_clk_0}]\
+   -group [get_clocks {usb_clk}]\
+   -group [get_clocks {uarts0_clk}]\
+   -group [get_clocks {uarts1_clk}]\
+   -group [get_clocks {uartm_clk}]\
+   -group [get_clocks {dbg_ref_clk}]\
+   -group [get_clocks {rtc_ref_clk}]\
+   -comment {Async Clock group}
+
+# clock <-> hk_serial_clk/load no paths
+# future note: CDC stuff
+# clock <-> hkspi_clk no paths with careful methods (clock is off)
+
+set_propagated_clock [all_clocks]
+
+## INPUT/OUTPUT DELAYS
+set input_delay_value 4
+set output_delay_value 4
+puts "\[INFO\]: Setting output delay to: $output_delay_value"
+puts "\[INFO\]: Setting input delay to: $input_delay_value"
+
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {gpio}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[0]}]
+
+#set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[1]}]
+
+set_input_delay $input_delay_value  -clock [get_clocks {hkspi_clk}] -add_delay [get_ports {mprj_io[2]}]
+set_input_delay $input_delay_value  -clock [get_clocks {hkspi_clk}] -add_delay [get_ports {mprj_io[3]}]
+
+#set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[4]}]
+
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[5]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[6]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[7]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[8]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[9]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[10]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[11]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[12]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[13]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[14]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[15]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[16]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[17]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[18]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[19]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[20]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[21]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[22]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[23]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[24]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[25]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[26]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[27]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[28]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[29]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[30]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[31]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[32]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[33]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[34]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[35]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[36]}]
+set_input_delay $input_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {mprj_io[37]}]
+
+set_output_delay $output_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {flash_csb}]
+set_output_delay $output_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {flash_clk}]
+set_output_delay $output_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {flash_io0}]
+set_output_delay $output_delay_value  -clock [get_clocks {clk}] -add_delay [get_ports {flash_io1}]
+
+# set_output_delay $output_delay_value  -clock [get_clocks {hkspi_clk}] -add_delay [get_ports {mprj_io[1]}]
+
+set_max_fanout 12 [current_design]
+# synthesis max fanout should be less than 12 (7 maybe)
+
+## Set system monitoring mux select to zero so that the clock/user_clk monitoring is disabled 
+set_case_analysis 0 [get_pins housekeeping/_3936_/S]
+set_case_analysis 0 [get_pins housekeeping/_3937_/S]
+
+# Add case analysis for pads DM[2]==1'b1 & DM[1]==1'b1 & DM[0]==1'b0 to be outputs
+
+set_case_analysis 1 [get_pins padframe/*_pad*/DM[2]]
+set_case_analysis 1 [get_pins padframe/*_pad*/DM[1]]
+set_case_analysis 0 [get_pins padframe/*_pad*/DM[0]]
+set_case_analysis 0 [get_pins padframe/*_pad*/SLOW]
+set_case_analysis 0 [get_pins padframe/*_pad*/ANALOG_EN]
+
+# the following pads are set as inputs
+set_case_analysis 0 [get_pins padframe/*area1_io_pad[4]/DM[2]]
+set_case_analysis 0 [get_pins padframe/*area1_io_pad[4]/DM[1]]
+set_case_analysis 1 [get_pins padframe/*area1_io_pad[4]/DM[0]]
+
+set_case_analysis 0 [get_pins padframe/*area1_io_pad[2]/DM[2]]
+set_case_analysis 0 [get_pins padframe/*area1_io_pad[2]/DM[1]]
+set_case_analysis 1 [get_pins padframe/*area1_io_pad[2]/DM[0]]
+
+
+set_case_analysis 0 [get_pins padframe/clock_pad/DM[2]]
+set_case_analysis 0 [get_pins padframe/clock_pad/DM[1]]
+set_case_analysis 1 [get_pins padframe/clock_pad/DM[0]]
+
+#################################################################
+## User Case analysis
+#################################################################
+
+set_case_analysis 0 [get_pins {mprj/u_qspi_master/cfg_cska_sp_co[3]}]
+set_case_analysis 0 [get_pins {mprj/u_qspi_master/cfg_cska_sp_co[2]}]
+set_case_analysis 0 [get_pins {mprj/u_qspi_master/cfg_cska_sp_co[1]}]
+set_case_analysis 0 [get_pins {mprj/u_qspi_master/cfg_cska_sp_co[0]}]
+
+set_case_analysis 1 [get_pins {mprj/u_pinmux/cfg_cska_pinmux[3]}]
+set_case_analysis 0 [get_pins {mprj/u_pinmux/cfg_cska_pinmux[2]}]
+set_case_analysis 0 [get_pins {mprj/u_pinmux/cfg_cska_pinmux[1]}]
+set_case_analysis 0 [get_pins {mprj/u_pinmux/cfg_cska_pinmux[0]}]
+
+set_case_analysis 1 [get_pins {mprj/u_uart_i2c_usb_spi/cfg_cska_uart[3]}]
+set_case_analysis 1 [get_pins {mprj/u_uart_i2c_usb_spi/cfg_cska_uart[2]}]
+set_case_analysis 0 [get_pins {mprj/u_uart_i2c_usb_spi/cfg_cska_uart[1]}]
+set_case_analysis 0 [get_pins {mprj/u_uart_i2c_usb_spi/cfg_cska_uart[0]}]
+
+set_case_analysis 1 [get_pins {mprj/u_qspi_master/cfg_cska_spi[3]}]
+set_case_analysis 0 [get_pins {mprj/u_qspi_master/cfg_cska_spi[2]}]
+set_case_analysis 1 [get_pins {mprj/u_qspi_master/cfg_cska_spi[1]}]
+set_case_analysis 0 [get_pins {mprj/u_qspi_master/cfg_cska_spi[0]}]
+
+set_case_analysis 1 [get_pins {mprj/u_riscv_top.u_intf/cfg_wcska[3]}]
+set_case_analysis 0 [get_pins {mprj/u_riscv_top.u_intf/cfg_wcska[2]}]
+set_case_analysis 1 [get_pins {mprj/u_riscv_top.u_intf/cfg_wcska[1]}]
+set_case_analysis 0 [get_pins {mprj/u_riscv_top.u_intf/cfg_wcska[0]}]
+
+set_case_analysis 1 [get_pins {mprj/u_wb_host/cfg_cska_wh[3]}]
+set_case_analysis 0 [get_pins {mprj/u_wb_host/cfg_cska_wh[2]}]
+set_case_analysis 0 [get_pins {mprj/u_wb_host/cfg_cska_wh[1]}]
+set_case_analysis 1 [get_pins {mprj/u_wb_host/cfg_cska_wh[0]}]
+
+set_case_analysis 0 [get_pins {mprj/u_intercon/cfg_cska_wi[3]}]
+set_case_analysis 0 [get_pins {mprj/u_intercon/cfg_cska_wi[2]}]
+set_case_analysis 1 [get_pins {mprj/u_intercon/cfg_cska_wi[0]}]
+set_case_analysis 1 [get_pins {mprj/u_intercon/cfg_cska_wi[1]}]
+
+# clock skew cntrl-2
+set_case_analysis 1 [get_pins {mprj/u_riscv_top.u_intf/cfg_ccska[3]}]
+set_case_analysis 0 [get_pins {mprj/u_riscv_top.u_intf/cfg_ccska[2]}]
+set_case_analysis 1 [get_pins {mprj/u_riscv_top.u_intf/cfg_ccska[1]}]
+set_case_analysis 0 [get_pins {mprj/u_riscv_top.u_intf/cfg_ccska[0]}]
+
+set_case_analysis 0 [get_pins {mprj/u_riscv_top.u_connect/cfg_ccska[3]}]
+set_case_analysis 1 [get_pins {mprj/u_riscv_top.u_connect/cfg_ccska[2]}]
+set_case_analysis 1 [get_pins {mprj/u_riscv_top.u_connect/cfg_ccska[1]}]
+set_case_analysis 0 [get_pins {mprj/u_riscv_top.u_connect/cfg_ccska[0]}]
+
+set_case_analysis 1 [get_pins {mprj/u_riscv_top.i_core_top_0/cfg_ccska[3]}]
+set_case_analysis 0 [get_pins {mprj/u_riscv_top.i_core_top_0/cfg_ccska[2]}]
+set_case_analysis 0 [get_pins {mprj/u_riscv_top.i_core_top_0/cfg_ccska[1]}]
+set_case_analysis 0 [get_pins {mprj/u_riscv_top.i_core_top_0/cfg_ccska[0]}]
+
+#Keept the SRAM clock driving edge at pos edge
+set_case_analysis 0 [get_pins {mprj/u_riscv_top.u_intf/cfg_sram_lphase[0]}]
+set_case_analysis 0 [get_pins {mprj/u_riscv_top.u_intf/cfg_sram_lphase[1]}]
+
+set_case_analysis 0 [get_pins {mprj/u_riscv_top.u_connect/cfg_sram_lphase[0]}]
+set_case_analysis 0 [get_pins {mprj/u_riscv_top.u_connect/cfg_sram_lphase[1]}]
+
+set_case_analysis 1 [get_pins {mprj/u_aes/cfg_cska[3]}]
+set_case_analysis 0 [get_pins {mprj/u_aes/cfg_cska[2]}]
+set_case_analysis 0 [get_pins {mprj/u_aes/cfg_cska[1]}]
+set_case_analysis 0 [get_pins {mprj/u_aes/cfg_cska[0]}]
+
+set_case_analysis 1 [get_pins {mprj/u_fpu/cfg_cska[3]}]
+set_case_analysis 0 [get_pins {mprj/u_fpu/cfg_cska[2]}]
+set_case_analysis 0 [get_pins {mprj/u_fpu/cfg_cska[1]}]
+set_case_analysis 0 [get_pins {mprj/u_fpu/cfg_cska[0]}]
+
+## FALSE PATHS (ASYNCHRONOUS INPUTS)
+set_false_path -from [get_ports {resetb}]
+
+## Async USB/I2C Interrupt, Double Sync added inside glbl block
+set_false_path -through [get_pins {mprj/u_pinmux/usb_intr}]
+set_false_path -through [get_pins {mprj/u_pinmux/i2cm_intr}]
+
+## UART RXD is async signal
+set_false_path -through [get_pins {mprj/u_wb_host/uartm_rxd}]
+
+##SPI Slave Interface Signal (SCLK/SSN) are double sync with wb_clk
+set_false_path -through [get_pins {mprj/u_wb_host/sclk}]
+set_false_path -through [get_pins {mprj/u_wb_host/ssn}]
+## SDIN sampled on negedge SCLK
+set_false_path -through [get_pins {mprj/u_wb_host/sdin}]
+
+
+# set_false_path -from [get_ports mprj_io[*]] -through [get_pins housekeeping/mgmt_gpio_in[*]]
+# reset_path -from [get_ports mprj_io[4]] 
+# reset_path -from [get_ports mprj_io[2]] 
+#reset_path is not supported in PT read_sdc ^
+
+set_false_path -from [get_ports mprj_io[0]] -through [get_pins housekeeping/mgmt_gpio_in[0]]
+set_false_path -from [get_ports mprj_io[1]] -through [get_pins housekeeping/mgmt_gpio_in[1]]
+set_false_path -from [get_ports mprj_io[3]] -through [get_pins housekeeping/mgmt_gpio_in[3]]
+set_false_path -from [get_ports mprj_io[5]] -through [get_pins housekeeping/mgmt_gpio_in[5]]
+set_false_path -from [get_ports mprj_io[6]] -through [get_pins housekeeping/mgmt_gpio_in[6]]
+set_false_path -from [get_ports mprj_io[7]] -through [get_pins housekeeping/mgmt_gpio_in[7]]
+set_false_path -from [get_ports mprj_io[8]] -through [get_pins housekeeping/mgmt_gpio_in[8]]
+set_false_path -from [get_ports mprj_io[9]] -through [get_pins housekeeping/mgmt_gpio_in[9]]
+set_false_path -from [get_ports mprj_io[10]] -through [get_pins housekeeping/mgmt_gpio_in[10]]
+set_false_path -from [get_ports mprj_io[11]] -through [get_pins housekeeping/mgmt_gpio_in[11]]
+set_false_path -from [get_ports mprj_io[12]] -through [get_pins housekeeping/mgmt_gpio_in[12]]
+set_false_path -from [get_ports mprj_io[13]] -through [get_pins housekeeping/mgmt_gpio_in[13]]
+set_false_path -from [get_ports mprj_io[14]] -through [get_pins housekeeping/mgmt_gpio_in[14]]
+set_false_path -from [get_ports mprj_io[15]] -through [get_pins housekeeping/mgmt_gpio_in[15]]
+set_false_path -from [get_ports mprj_io[16]] -through [get_pins housekeeping/mgmt_gpio_in[16]]
+set_false_path -from [get_ports mprj_io[17]] -through [get_pins housekeeping/mgmt_gpio_in[17]]
+set_false_path -from [get_ports mprj_io[18]] -through [get_pins housekeeping/mgmt_gpio_in[18]]
+set_false_path -from [get_ports mprj_io[19]] -through [get_pins housekeeping/mgmt_gpio_in[19]]
+set_false_path -from [get_ports mprj_io[20]] -through [get_pins housekeeping/mgmt_gpio_in[20]]
+set_false_path -from [get_ports mprj_io[21]] -through [get_pins housekeeping/mgmt_gpio_in[21]]
+set_false_path -from [get_ports mprj_io[22]] -through [get_pins housekeeping/mgmt_gpio_in[22]]
+set_false_path -from [get_ports mprj_io[23]] -through [get_pins housekeeping/mgmt_gpio_in[23]]
+set_false_path -from [get_ports mprj_io[24]] -through [get_pins housekeeping/mgmt_gpio_in[24]]
+set_false_path -from [get_ports mprj_io[25]] -through [get_pins housekeeping/mgmt_gpio_in[25]]
+set_false_path -from [get_ports mprj_io[26]] -through [get_pins housekeeping/mgmt_gpio_in[26]]
+set_false_path -from [get_ports mprj_io[27]] -through [get_pins housekeeping/mgmt_gpio_in[27]]
+set_false_path -from [get_ports mprj_io[28]] -through [get_pins housekeeping/mgmt_gpio_in[28]]
+set_false_path -from [get_ports mprj_io[29]] -through [get_pins housekeeping/mgmt_gpio_in[29]]
+set_false_path -from [get_ports mprj_io[30]] -through [get_pins housekeeping/mgmt_gpio_in[30]]
+set_false_path -from [get_ports mprj_io[31]] -through [get_pins housekeeping/mgmt_gpio_in[31]]
+set_false_path -from [get_ports mprj_io[32]] -through [get_pins housekeeping/mgmt_gpio_in[32]]
+set_false_path -from [get_ports mprj_io[33]] -through [get_pins housekeeping/mgmt_gpio_in[33]]
+set_false_path -from [get_ports mprj_io[34]] -through [get_pins housekeeping/mgmt_gpio_in[34]]
+set_false_path -from [get_ports mprj_io[35]] -through [get_pins housekeeping/mgmt_gpio_in[35]]
+set_false_path -from [get_ports mprj_io[36]] -through [get_pins housekeeping/mgmt_gpio_in[36]]
+set_false_path -from [get_ports mprj_io[37]] -through [get_pins housekeeping/mgmt_gpio_in[37]]
+
+set_false_path -from [get_ports mprj_io[*]] -through [get_pins housekeeping/mgmt_gpio_out[*]]
+set_false_path -from [get_ports mprj_io[*]] -through [get_pins housekeeping/mgmt_gpio_oeb[*]]
+set_false_path -from [get_ports gpio]
+
+# add loads for output ports (pads)
+set min_cap 5
+set max_cap 10
+puts "\[INFO\]: Cap load range: $min_cap : $max_cap"
+# set_load 10 [all_outputs]
+set_load -min $min_cap [all_outputs] 
+set_load -max $max_cap [all_outputs] 
+
+#add input transition for the inputs ports (pads)
+# set_input_transition 2 [all_inputs]
+#add exception for power pads as 2ns on them results in max_tran violations (false viol)
+# set_input_transition 2 [remove_from_collection [all_inputs] [get_ports v*]] 
+# remove_from_collection is not supported in PT read_sdc ^
+# set_input_transition 2 [all_inputs] 
+# set_input_transition 0 [get_ports v*]
+
+set min_in_tran 1
+set max_in_tran 4
+puts "\[INFO\]: Input transition range: $min_in_tran : $max_in_tran"
+set_input_transition -min $min_in_tran [all_inputs] 
+set_input_transition -min 0 [get_ports v*]
+set_input_transition -max $max_in_tran [all_inputs]
+set_input_transition -max 0 [get_ports v*]
+
+# check ocv table (not provided) -- maybe try 8% 
+set derate 0.0375
+puts "\[INFO\]: Setting derate factor to: [expr $derate * 100] %"
+set_timing_derate -early [expr 1-$derate]
+set_timing_derate -late [expr 1+$derate]
+
+# add max_tran constraint as the default max_tran of the ss hd SCL is 10 so the violations are not caught in ss corners
+# apply the constraint to hd cells at the ss corner only
+# if {$::env(PROC_CORNER) == "s"} {
+#    set max_tran 1.5
+#    set_max_transition $max_tran [get_pins -of_objects [get_cells -filter {ref_name=~sky130_fd_sc_hd*}]]
+#    set_max_transition $max_tran [get_pins -of_objects [get_cells */* -filter {ref_name=~sky130_fd_sc_hd*}]]
+#    set_max_transition $max_tran [get_pins -of_objects [get_cells */*/* -filter {ref_name=~sky130_fd_sc_hd*}]]
+#    puts "\[INFO\]: Setting maximum transition of HD cells in slow process corner to: $max_tran"
+# }
+# -filter not supported in PT read_sdc ^
diff --git a/signoff/pinmux_top/OPENLANE_VERSION b/signoff/pinmux_top/OPENLANE_VERSION
index fabca1a..1234be5 100644
--- a/signoff/pinmux_top/OPENLANE_VERSION
+++ b/signoff/pinmux_top/OPENLANE_VERSION
@@ -1 +1 @@
-OpenLane cb59d1f84deb5cedbb5b0a3e3f3b4129a967c988
+OpenLane 7f0486c949c21042e0a670dd77d2d654ad189483
diff --git a/signoff/pinmux_top/PDK_SOURCES b/signoff/pinmux_top/PDK_SOURCES
index ef91c87..f8d3b3a 100644
--- a/signoff/pinmux_top/PDK_SOURCES
+++ b/signoff/pinmux_top/PDK_SOURCES
@@ -1 +1 @@
-open_pdks 3af133706e554a740cfe60f21e773d9eaa41838c
+open_pdks a519523b0d9bc913a6f87a5eed083597ed9e2e93
diff --git a/signoff/qspim_top/OPENLANE_VERSION b/signoff/qspim_top/OPENLANE_VERSION
index fabca1a..1234be5 100644
--- a/signoff/qspim_top/OPENLANE_VERSION
+++ b/signoff/qspim_top/OPENLANE_VERSION
@@ -1 +1 @@
-OpenLane cb59d1f84deb5cedbb5b0a3e3f3b4129a967c988
+OpenLane 7f0486c949c21042e0a670dd77d2d654ad189483
diff --git a/signoff/qspim_top/PDK_SOURCES b/signoff/qspim_top/PDK_SOURCES
index ef91c87..f8d3b3a 100644
--- a/signoff/qspim_top/PDK_SOURCES
+++ b/signoff/qspim_top/PDK_SOURCES
@@ -1 +1 @@
-open_pdks 3af133706e554a740cfe60f21e773d9eaa41838c
+open_pdks a519523b0d9bc913a6f87a5eed083597ed9e2e93
diff --git a/signoff/user_project_wrapper/OPENLANE_VERSION b/signoff/user_project_wrapper/OPENLANE_VERSION
index fabca1a..1234be5 100644
--- a/signoff/user_project_wrapper/OPENLANE_VERSION
+++ b/signoff/user_project_wrapper/OPENLANE_VERSION
@@ -1 +1 @@
-OpenLane cb59d1f84deb5cedbb5b0a3e3f3b4129a967c988
+OpenLane 7f0486c949c21042e0a670dd77d2d654ad189483
diff --git a/signoff/user_project_wrapper/PDK_SOURCES b/signoff/user_project_wrapper/PDK_SOURCES
index ef91c87..f8d3b3a 100644
--- a/signoff/user_project_wrapper/PDK_SOURCES
+++ b/signoff/user_project_wrapper/PDK_SOURCES
@@ -1 +1 @@
-open_pdks 3af133706e554a740cfe60f21e773d9eaa41838c
+open_pdks a519523b0d9bc913a6f87a5eed083597ed9e2e93
diff --git a/signoff/wb_interconnect/OPENLANE_VERSION b/signoff/wb_interconnect/OPENLANE_VERSION
index fabca1a..1234be5 100644
--- a/signoff/wb_interconnect/OPENLANE_VERSION
+++ b/signoff/wb_interconnect/OPENLANE_VERSION
@@ -1 +1 @@
-OpenLane cb59d1f84deb5cedbb5b0a3e3f3b4129a967c988
+OpenLane 7f0486c949c21042e0a670dd77d2d654ad189483
diff --git a/signoff/wb_interconnect/PDK_SOURCES b/signoff/wb_interconnect/PDK_SOURCES
index ef91c87..f8d3b3a 100644
--- a/signoff/wb_interconnect/PDK_SOURCES
+++ b/signoff/wb_interconnect/PDK_SOURCES
@@ -1 +1 @@
-open_pdks 3af133706e554a740cfe60f21e773d9eaa41838c
+open_pdks a519523b0d9bc913a6f87a5eed083597ed9e2e93
diff --git a/signoff/ycr_core_top/OPENLANE_VERSION b/signoff/ycr_core_top/OPENLANE_VERSION
index fabca1a..1234be5 100644
--- a/signoff/ycr_core_top/OPENLANE_VERSION
+++ b/signoff/ycr_core_top/OPENLANE_VERSION
@@ -1 +1 @@
-OpenLane cb59d1f84deb5cedbb5b0a3e3f3b4129a967c988
+OpenLane 7f0486c949c21042e0a670dd77d2d654ad189483
diff --git a/signoff/ycr_core_top/PDK_SOURCES b/signoff/ycr_core_top/PDK_SOURCES
index ef91c87..f8d3b3a 100644
--- a/signoff/ycr_core_top/PDK_SOURCES
+++ b/signoff/ycr_core_top/PDK_SOURCES
@@ -1 +1 @@
-open_pdks 3af133706e554a740cfe60f21e773d9eaa41838c
+open_pdks a519523b0d9bc913a6f87a5eed083597ed9e2e93
diff --git a/signoff/ycr_iconnect/OPENLANE_VERSION b/signoff/ycr_iconnect/OPENLANE_VERSION
index fabca1a..1234be5 100644
--- a/signoff/ycr_iconnect/OPENLANE_VERSION
+++ b/signoff/ycr_iconnect/OPENLANE_VERSION
@@ -1 +1 @@
-OpenLane cb59d1f84deb5cedbb5b0a3e3f3b4129a967c988
+OpenLane 7f0486c949c21042e0a670dd77d2d654ad189483
diff --git a/signoff/ycr_iconnect/PDK_SOURCES b/signoff/ycr_iconnect/PDK_SOURCES
index ef91c87..f8d3b3a 100644
--- a/signoff/ycr_iconnect/PDK_SOURCES
+++ b/signoff/ycr_iconnect/PDK_SOURCES
@@ -1 +1 @@
-open_pdks 3af133706e554a740cfe60f21e773d9eaa41838c
+open_pdks a519523b0d9bc913a6f87a5eed083597ed9e2e93
diff --git a/signoff/ycr_intf/OPENLANE_VERSION b/signoff/ycr_intf/OPENLANE_VERSION
index fabca1a..1234be5 100644
--- a/signoff/ycr_intf/OPENLANE_VERSION
+++ b/signoff/ycr_intf/OPENLANE_VERSION
@@ -1 +1 @@
-OpenLane cb59d1f84deb5cedbb5b0a3e3f3b4129a967c988
+OpenLane 7f0486c949c21042e0a670dd77d2d654ad189483
diff --git a/signoff/ycr_intf/PDK_SOURCES b/signoff/ycr_intf/PDK_SOURCES
index ef91c87..f8d3b3a 100644
--- a/signoff/ycr_intf/PDK_SOURCES
+++ b/signoff/ycr_intf/PDK_SOURCES
@@ -1 +1 @@
-open_pdks 3af133706e554a740cfe60f21e773d9eaa41838c
+open_pdks a519523b0d9bc913a6f87a5eed083597ed9e2e93
diff --git a/verilog/dv/common/agents/caravel_task.sv b/verilog/dv/common/agents/caravel_task.sv
index 70ff764..3937734 100644
--- a/verilog/dv/common/agents/caravel_task.sv
+++ b/verilog/dv/common/agents/caravel_task.sv
@@ -13,9 +13,9 @@
 ****/
 
 `ifdef RISC_BOOT // RISCV Based Test case
-parameter bit  [15:0] PAD_STRAP = 16'b0000_0001_1011_0000;
+parameter bit  [15:0] PAD_STRAP = 16'b0000_0001_1010_0000;
 `else
-parameter bit  [15:0] PAD_STRAP = 16'b0000_0000_1011_0000;
+parameter bit  [15:0] PAD_STRAP = 16'b0000_0000_1010_0000;
 `endif
 
 /***********************************************
diff --git a/verilog/dv/common/agents/usb_agents.v b/verilog/dv/common/agents/usb_agents.v
index c266567..4d144d0 100644
--- a/verilog/dv/common/agents/usb_agents.v
+++ b/verilog/dv/common/agents/usb_agents.v
@@ -274,7 +274,7 @@
 input [15:0] value; 
 input [15:0] index; 
 input [15:0] length;
-output       status;
+output[7:0]  status;
 reg   [7:0]  status;
 integer idx;
 begin
diff --git a/verilog/dv/common/bfm/bfm_spim.v b/verilog/dv/common/bfm/bfm_spim.v
index f04f8b9..2bf556f 100644
--- a/verilog/dv/common/bfm/bfm_spim.v
+++ b/verilog/dv/common/bfm/bfm_spim.v
@@ -172,8 +172,7 @@
 endtask
 // Write 4 Byte
 task send_dword;
-input dword;
-reg [31:0] dword;
+input [31:0] dword;
 begin
   send_word(dword[31:16]);
   send_word(dword[15:0]);
@@ -182,8 +181,7 @@
 
 // Write 2 Byte
 task send_word;
-input word;
-reg [15:0] word;
+input [15:0] word;
 begin
   send_byte(word[15:8]);
   send_byte(word[7:0]);
@@ -194,8 +192,7 @@
 
 // Write 1 Byte
 task send_byte;
-input data;
-reg [7:0] data;
+input [7:0] data;
 integer i;
 begin
 
@@ -217,7 +214,7 @@
 
 // READ 4 BYTE
 task receive_dword;
-output dword;
+output [31:0] dword;
 reg [31:0] dword;
 begin
   receive_word(dword[31:16]);
@@ -227,7 +224,7 @@
 
 // READ 2 BYTE
 task receive_word;
-output word;
+output [15:0] word;
 reg [15:0] word;
 begin
   receive_byte(word[15:8]);
@@ -239,7 +236,7 @@
 
 // READ 1 BYTE
 task receive_byte;
-output data;
+output [7:0] data;
 reg [7:0] data;
 integer i;
 begin
diff --git a/verilog/dv/risc_boot/Makefile b/verilog/dv/risc_boot/Makefile
index db9d549..758f0ed 100644
--- a/verilog/dv/risc_boot/Makefile
+++ b/verilog/dv/risc_boot/Makefile
@@ -165,11 +165,11 @@
 ## RTL
 ifeq ($(SIM),RTL)
    ifeq ($(DUMP),OFF)
-	iverilog -g2005-sv -Ttyp -DFUNCTIONAL -DSIM -DRISC_BOOT -DUSE_POWER_PINS -DUNIT_DELAY=#0.1 \
+	iverilog -g2012 -Ttyp -DFUNCTIONAL -DSIM -DRISC_BOOT -DUSE_POWER_PINS -DUNIT_DELAY=#0.1 \
         -f$(VERILOG_PATH)/includes/includes.rtl.caravel \
         -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) -o $@ $<
     else  
-	iverilog -g2005-sv -DWFDUMP -Ttyp -DFUNCTIONAL -DRISC_BOOT -DSIM -DUSE_POWER_PINS -DUNIT_DELAY=#0.1 \
+	iverilog -g2012 -DWFDUMP -Ttyp -DFUNCTIONAL -DRISC_BOOT -DSIM -DUSE_POWER_PINS -DUNIT_DELAY=#0.1 \
         -f$(VERILOG_PATH)/includes/includes.rtl.caravel \
         -f$(USER_PROJECT_VERILOG)/includes/includes.rtl.$(CONFIG) -o $@ $<
    endif
diff --git a/verilog/dv/risc_boot/risc_boot_tb.v b/verilog/dv/risc_boot/risc_boot_tb.v
index 51bde45..ef56ee4 100644
--- a/verilog/dv/risc_boot/risc_boot_tb.v
+++ b/verilog/dv/risc_boot/risc_boot_tb.v
@@ -18,18 +18,17 @@
 ////                                                              ////
 ////  User Risc Core Boot Validation                              ////
 ////                                                              ////
-////  This file is part of the YIFive cores project               ////
-////  https://github.com/dineshannayya/yifive_r0.git              ////
-////  http://www.opencores.org/cores/yifive/                      ////
+////  This file is part of the riscduino cores project            ////
+////  https://github.com/dineshannayya/riscuino.git               ////
+////  http://www.opencores.org/cores/riscuino/                    ////
 ////                                                              ////
 ////  Description                                                 ////
-////     1. User Risc core is booted using  compiled code of      ////
-////        user_risc_boot.hex                                    ////
-////     2. User Risc core uses Serial Flash and SDRAM to boot    ////
-////     3. After successful boot, Risc core will  write signature////
-////        in to  user register from 0x3000_0018 to 0x3000_002C  ////
-////     4. Through the External Wishbone Interface we read back  ////
-////         and validate the user register to declared pass fail ////
+////    1. Strap is set to RISC core auto Boot mode               ////
+////    2. With Reset removal from caravel, User core boot up     ////
+////    3. Risc-V firmware have UART Loop back mode               ////
+////    4. Any UART Data Transmited by testbench will be loop back////
+////    5. There are 40 Random char are transmited and compared   ////
+////       againt received data                                   ////
 ////                                                              ////
 ////  To Do:                                                      ////
 ////    nothing                                                   ////
@@ -132,9 +131,10 @@
            $dumpfile("simx.vcd");
            $dumpvars(1,risc_boot_tb);
            //$dumpvars(1,risc_boot_tb.u_spi_flash_256mb);
-           $dumpvars(2,risc_boot_tb.u_top);
+           //$dumpvars(2,risc_boot_tb.u_top);
            $dumpvars(1,risc_boot_tb.u_top.mprj);
            $dumpvars(0,risc_boot_tb.u_top.mprj.u_wb_host);
+           $dumpvars(0,risc_boot_tb.u_top.mprj.u_pinmux);
            //$dumpvars(0,risc_boot_tb.tb_uart);
            //$dumpvars(0,risc_boot_tb.u_user_spiflash);
 	   $display("Waveform Dump started");
@@ -165,7 +165,7 @@
 
  $value$plusargs("risc_core_id=%d", d_risc_id);
 
-   init();
+         init();
 
            uart_data_bit           = 2'b11;
            uart_stop_bits          = 0; // 0: 1 stop bit; 1: 2 stop bit;
@@ -186,7 +186,7 @@
 					     uart_stick_parity, uart_timeout, uart_divisor);
 
 
-                wait_riscv_boot();
+        wait_riscv_boot();
 		repeat (50000) @(posedge clock);  
 
 		for (i=0; i<40; i=i+1)
diff --git a/verilog/dv/uart_master_test2/uart_master_test2_tb.v b/verilog/dv/uart_master_test2/uart_master_test2_tb.v
index 257363e..b757926 100644
--- a/verilog/dv/uart_master_test2/uart_master_test2_tb.v
+++ b/verilog/dv/uart_master_test2/uart_master_test2_tb.v
@@ -19,7 +19,7 @@
 `include "uart_agent.v"
 
 `define TB_HEX "uart_master.hex"
-`define TB_TOP  uart_master_tb
+`define TB_TOP  uart_master_test2
 module `TB_TOP;
 	reg clock;
 	reg RSTB;
diff --git a/verilog/dv/user_aes_core/user_aes_core_tb.v b/verilog/dv/user_aes_core/user_aes_core_tb.v
index 017a14a..fbb54f7 100644
--- a/verilog/dv/user_aes_core/user_aes_core_tb.v
+++ b/verilog/dv/user_aes_core/user_aes_core_tb.v
@@ -65,7 +65,7 @@
 
 `include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v"
 `include "uart_agent.v"
-module user_aes_tb;
+module user_aes_core_tb;
 
 parameter real CLK1_PERIOD  = 20; // 50Mhz
 parameter real CLK2_PERIOD = 2.5;
@@ -128,10 +128,10 @@
 	`ifdef WFDUMP
 	   initial begin
 	   	$dumpfile("simx.vcd");
-	   	$dumpvars(2, user_aes_tb);
-	   	$dumpvars(0, user_aes_tb.u_top.u_aes);
-	   	$dumpvars(0, user_aes_tb.u_top.u_riscv_top);
-	   	$dumpvars(0, user_aes_tb.u_top.u_pinmux);
+	   	$dumpvars(2, user_aes_core_tb);
+	   	$dumpvars(0, user_aes_core_tb.u_top.u_aes);
+	   	$dumpvars(0, user_aes_core_tb.u_top.u_riscv_top);
+	   	$dumpvars(0, user_aes_core_tb.u_top.u_pinmux);
 	   end
        `endif
 
diff --git a/verilog/dv/user_fpu_core/user_fpu_core_tb.v b/verilog/dv/user_fpu_core/user_fpu_core_tb.v
index 41b4ffe..e79506e 100644
--- a/verilog/dv/user_fpu_core/user_fpu_core_tb.v
+++ b/verilog/dv/user_fpu_core/user_fpu_core_tb.v
@@ -65,7 +65,10 @@
 
 `include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v"
 `include "uart_agent.v"
-module user_fpu_tb;
+
+`define TB_HEX "user_fpu_core.hex"
+`define TB_TOP  user_fpu_core_tb
+module `TB_TOP;
 
 parameter real CLK1_PERIOD  = 20; // 50Mhz
 parameter real CLK2_PERIOD = 2.5;
@@ -128,10 +131,10 @@
 	`ifdef WFDUMP
 	   initial begin
 	   	$dumpfile("simx.vcd");
-	   	$dumpvars(2, user_fpu_tb);
-	   	$dumpvars(0, user_fpu_tb.u_top.u_fpu);
-	   	$dumpvars(0, user_fpu_tb.u_top.u_riscv_top);
-	   	$dumpvars(0, user_fpu_tb.u_top.u_pinmux);
+	   	$dumpvars(2, `TB_TOP);
+	   	$dumpvars(0, `TB_TOP.u_top.u_fpu);
+	   	$dumpvars(0, `TB_TOP.u_top.u_riscv_top);
+	   	$dumpvars(0, `TB_TOP.u_top.u_pinmux);
 	   end
        `endif
 
@@ -256,7 +259,7 @@
    assign io_in[36] = flash_io3;
 
    // Quard flash
-     s25fl256s #(.mem_file_name("user_fpu_core.hex"),
+     s25fl256s #(.mem_file_name(`TB_HEX),
 	         .otp_file_name("none"),
                  .TimingModel("S25FL512SAGMFI010_F_30pF")) 
 		 u_spi_flash_256mb (
diff --git a/verilog/dv/user_i2cm/user_i2cm_tb.v b/verilog/dv/user_i2cm/user_i2cm_tb.v
index c4b27a9..5b52174 100644
--- a/verilog/dv/user_i2cm/user_i2cm_tb.v
+++ b/verilog/dv/user_i2cm/user_i2cm_tb.v
@@ -68,7 +68,7 @@
 `include "sram_macros/sky130_sram_2kbyte_1rw1r_32x512_8.v"
 `include "i2c_slave_model.v"
 
-module tb_top;
+module user_i2cm_tb;
 parameter real CLK1_PERIOD  = 20; // 50Mhz
 parameter real CLK2_PERIOD = 2.5;
 parameter real IPLL_PERIOD = 5.008;
@@ -88,7 +88,7 @@
 	`ifdef WFDUMP
 	   initial begin
 	   	$dumpfile("simx.vcd");
-	   	$dumpvars(0, tb_top);
+	   	$dumpvars(0, user_i2cm_tb);
 	   end
        `endif
 
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 25cbfd3..57d6802 100644
--- a/verilog/dv/user_uart_master/user_uart_master_tb.v
+++ b/verilog/dv/user_uart_master/user_uart_master_tb.v
@@ -145,7 +145,7 @@
 	                          uart_stick_parity, uart_timeout, uart_divisor);
 
 
-    tb_master_uart.write_char('\n'); // for uart baud auto detect purpose
+    tb_master_uart.write_char(8'h0A); // for uart baud auto detect purpose - New Line Character \n
    //$write ("\n(%t)Response:\n",$time);
    flag = 0;
    while(flag == 0)
diff --git a/verilog/gl/aes_top.v.gz b/verilog/gl/aes_top.v.gz
deleted file mode 100644
index e7eb9a3..0000000
--- a/verilog/gl/aes_top.v.gz
+++ /dev/null
Binary files differ
diff --git a/verilog/gl/dac_top.v.gz b/verilog/gl/dac_top.v.gz
deleted file mode 100644
index b1d0048..0000000
--- a/verilog/gl/dac_top.v.gz
+++ /dev/null
Binary files differ
diff --git a/verilog/gl/dg_pll.v.gz b/verilog/gl/dg_pll.v.gz
deleted file mode 100644
index c14c7b7..0000000
--- a/verilog/gl/dg_pll.v.gz
+++ /dev/null
Binary files differ
diff --git a/verilog/gl/fpu_wrapper.v.gz b/verilog/gl/fpu_wrapper.v.gz
deleted file mode 100644
index d4c7323..0000000
--- a/verilog/gl/fpu_wrapper.v.gz
+++ /dev/null
Binary files differ
diff --git a/verilog/gl/pinmux_top.v.gz b/verilog/gl/pinmux_top.v.gz
deleted file mode 100644
index 83ae623..0000000
--- a/verilog/gl/pinmux_top.v.gz
+++ /dev/null
Binary files differ
diff --git a/verilog/gl/qspim_top.v.gz b/verilog/gl/qspim_top.v.gz
deleted file mode 100644
index f8267cf..0000000
--- a/verilog/gl/qspim_top.v.gz
+++ /dev/null
Binary files differ
diff --git a/verilog/gl/uart_i2c_usb_spi_top.v.gz b/verilog/gl/uart_i2c_usb_spi_top.v.gz
deleted file mode 100644
index 93b01a5..0000000
--- a/verilog/gl/uart_i2c_usb_spi_top.v.gz
+++ /dev/null
Binary files differ
diff --git a/verilog/gl/user_project_wrapper.v.gz b/verilog/gl/user_project_wrapper.v.gz
index 26c4224..d79009f 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
deleted file mode 100644
index 5fcfeb0..0000000
--- a/verilog/gl/wb_host.v.gz
+++ /dev/null
Binary files differ
diff --git a/verilog/gl/wb_interconnect.v.gz b/verilog/gl/wb_interconnect.v.gz
deleted file mode 100644
index c2739a5..0000000
--- a/verilog/gl/wb_interconnect.v.gz
+++ /dev/null
Binary files differ
diff --git a/verilog/gl/ycr_core_top.v.gz b/verilog/gl/ycr_core_top.v.gz
deleted file mode 100644
index 6f6238d..0000000
--- a/verilog/gl/ycr_core_top.v.gz
+++ /dev/null
Binary files differ
diff --git a/verilog/gl/ycr_iconnect.v.gz b/verilog/gl/ycr_iconnect.v.gz
deleted file mode 100644
index ec91a6a..0000000
--- a/verilog/gl/ycr_iconnect.v.gz
+++ /dev/null
Binary files differ
diff --git a/verilog/gl/ycr_intf.v.gz b/verilog/gl/ycr_intf.v.gz
deleted file mode 100644
index 10a3e88..0000000
--- a/verilog/gl/ycr_intf.v.gz
+++ /dev/null
Binary files differ
diff --git a/verilog/includes/includes.rtl.caravel_user_project b/verilog/includes/includes.rtl.caravel_user_project
index c52c530..22e2bc7 100644
--- a/verilog/includes/includes.rtl.caravel_user_project
+++ b/verilog/includes/includes.rtl.caravel_user_project
@@ -167,3 +167,4 @@
 
 
 -v $(USER_PROJECT_VERILOG)/rtl/dg_pll/src/dg_pll.v
+-v $(USER_PROJECT_VERILOG)/rtl/bus_rep/bus_rep_south.sv
diff --git a/verilog/rtl/bus_rep/bus_rep_south.sv b/verilog/rtl/bus_rep/bus_rep_south.sv
new file mode 100644
index 0000000..32c1521
--- /dev/null
+++ b/verilog/rtl/bus_rep/bus_rep_south.sv
@@ -0,0 +1,38 @@
+//////////////////////////////////////////////////////////////////////////////
+// SPDX-FileCopyrightText: 2021 , Dinesh Annayya                          
+// 
+// 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
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// SPDX-License-Identifier: Apache-2.0
+// SPDX-FileContributor: Created by Dinesh Annayya <dinesha@opencores.org>
+//
+//////////////////////////////////////////////////////////////////////
+//               Bus Repater                                        //
+//////////////////////////////////////////////////////////////////////
+module bus_rep_south #(
+	parameter BUS_REP_WD = 7
+        ) (
+`ifdef USE_POWER_PINS
+         input logic            vccd1,    // User area 1 1.8V supply
+         input logic            vssd1,    // User area 1 digital ground
+`endif
+	 // Bus repeaters
+	 input  [BUS_REP_WD-1:0]  ch_in,
+	 output [BUS_REP_WD-1:0] ch_out
+      );
+
+// channel repeater
+assign ch_out = ch_in;
+
+
+endmodule
+
diff --git a/verilog/rtl/bus_repeater.sv b/verilog/rtl/bus_repeater.sv
new file mode 100644
index 0000000..aa11747
--- /dev/null
+++ b/verilog/rtl/bus_repeater.sv
@@ -0,0 +1,282 @@
+/*********************************************
+  Bus Repeater SOUTH
+**********************************************/
+wire          wb_clk_int_i;
+wire          wb_rst_int_i ;      
+wire          wbs_ack_int_o ;     
+wire          wbs_cyc_int_i ;     
+wire          wbs_stb_int_i ;     
+wire          wbs_we_int_i  ;    
+wire   [3:0]  wbs_sel_int_i;      
+wire   [31:0] wbs_adr_int_i; 
+wire   [31:0] wbs_dat_int_i; 
+wire   [31:0] wbs_dat_int_o;
+
+wire   [17:0] la_data_in_rp;
+
+wire [123:0] ch_in_south = {
+                    la_data_in[0],
+                    la_data_in[1],
+                    la_data_in[2],
+                    la_data_in[3],
+                    la_data_in[4],
+                    la_data_in[5],
+                    la_data_in[6],
+                    la_data_in[7],
+                    la_data_in[8],
+                    la_data_in[9],
+                    la_data_in[10],
+                    la_data_in[11],
+                    la_data_in[12],
+                    la_data_in[13],
+                    la_data_in[14],
+                    la_data_in[15],
+                    la_data_in[16],
+                    la_data_in[17],
+                    wb_clk_i           ,  // 105
+                    wb_rst_i           ,  // 
+                    wbs_ack_int_o      ,  // 103
+                    wbs_cyc_i          ,
+                    wbs_stb_i          ,
+                    wbs_we_i           ,
+                    wbs_adr_i[0]       ,
+                    wbs_dat_i[0]       ,
+                    wbs_dat_int_o[0]   , // 97
+                    wbs_sel_i[0]       , 
+                    wbs_adr_i[1]       ,
+                    wbs_dat_i[1]       ,
+                    wbs_dat_int_o[1]   , // 93
+                    wbs_sel_i[1]       ,
+                    wbs_adr_i[2]       ,
+                    wbs_dat_i[2]       ,
+                    wbs_dat_int_o[2]   , // 89
+                    wbs_sel_i[2]       , 
+                    wbs_adr_i[3]       , 
+                    wbs_dat_i[3]       ,
+                    wbs_dat_int_o[3]   , // 85
+                    wbs_sel_i[3]       ,
+                    wbs_adr_i[4]       ,
+                    wbs_dat_i[4]       ,
+                    wbs_dat_int_o[4]   , // 81
+                    wbs_adr_i[5]       ,
+                    wbs_dat_i[5]       ,
+                    wbs_dat_int_o[5]   , // 78
+                    wbs_adr_i[6]       ,
+                    wbs_dat_i[6]       ,
+                    wbs_dat_int_o[6]   , // 75
+                    wbs_adr_i[7]       ,
+                    wbs_dat_i[7]       ,
+                    wbs_dat_int_o[7]   , // 72
+                    wbs_adr_i[8]       ,
+                    wbs_dat_i[8]       ,
+                    wbs_dat_int_o[8]   , // 69
+                    wbs_adr_i[9]       ,
+                    wbs_dat_i[9]       ,
+                    wbs_dat_int_o[9]   , // 66
+                    wbs_adr_i[10]      ,
+                    wbs_dat_i[10]      ,
+                    wbs_dat_int_o[10]  , // 63
+                    wbs_adr_i[11]      ,
+                    wbs_dat_i[11]      ,
+                    wbs_dat_int_o[11]  , // 60
+                    wbs_adr_i[12]      ,
+                    wbs_dat_i[12]      ,
+                    wbs_dat_int_o[12]  , // 57
+                    wbs_adr_i[13]      ,
+                    wbs_dat_i[13]      ,
+                    wbs_dat_int_o[13]  , // 54
+                    wbs_adr_i[14]      ,
+                    wbs_dat_i[14]      ,
+                    wbs_dat_int_o[14]  , // 51
+                    wbs_adr_i[15]      ,
+                    wbs_dat_i[15]      ,
+                    wbs_dat_int_o[15]  , // 48
+                    wbs_adr_i[16]      ,
+                    wbs_dat_i[16]      ,
+                    wbs_dat_int_o[16]  , // 45
+                    wbs_adr_i[17]      ,
+                    wbs_dat_i[17]      ,
+                    wbs_dat_int_o[17]  , // 42
+                    wbs_adr_i[18]      ,
+                    wbs_dat_i[18]      ,
+                    wbs_dat_int_o[18]  , // 39
+                    wbs_adr_i[19]      ,
+                    wbs_dat_i[19]      ,
+                    wbs_dat_int_o[19]  , // 36
+                    wbs_adr_i[20]      ,
+                    wbs_dat_i[20]      ,
+                    wbs_dat_int_o[20]  , // 33
+                    wbs_adr_i[21]      ,
+                    wbs_dat_i[21]      ,
+                    wbs_dat_int_o[21]  , // 30
+                    wbs_adr_i[22]      ,
+                    wbs_dat_i[22]      ,
+                    wbs_dat_int_o[22]  , // 27
+                    wbs_adr_i[23]      ,
+                    wbs_dat_i[23]      ,
+                    wbs_dat_int_o[23]  , // 24
+                    wbs_adr_i[24]      ,
+                    wbs_dat_i[24]      ,
+                    wbs_dat_int_o[24]  , // 21
+                    wbs_adr_i[25]      ,
+                    wbs_dat_i[25]      ,
+                    wbs_dat_int_o[25]  , // 18
+                    wbs_adr_i[26]      ,
+                    wbs_dat_i[26]      ,
+                    wbs_dat_int_o[26]  , // 15
+                    wbs_adr_i[27]      ,
+                    wbs_dat_i[27]      ,
+                    wbs_dat_int_o[27]  , // 12
+                    wbs_adr_i[28]      ,
+                    wbs_dat_i[28]      ,
+                    wbs_dat_int_o[28]  , // 9
+                    wbs_adr_i[29]      ,
+                    wbs_dat_i[29]      ,
+                    wbs_dat_int_o[29]  , // 6
+                    wbs_adr_i[30]      ,
+                    wbs_dat_i[30]      ,
+                    wbs_dat_int_o[30]  , // 3
+                    wbs_adr_i[31]      ,
+                    wbs_dat_i[31]      ,
+                    wbs_dat_int_o[31]        
+            };
+wire [123:0] ch_out_south ;
+assign {
+         la_data_in_rp[0]   ,
+         la_data_in_rp[1]   ,
+         la_data_in_rp[2]   ,
+         la_data_in_rp[3]   ,
+         la_data_in_rp[4]   ,
+         la_data_in_rp[5]   ,
+         la_data_in_rp[6]   ,
+         la_data_in_rp[7]   ,
+         la_data_in_rp[8]   ,
+         la_data_in_rp[9]   ,
+         la_data_in_rp[10]   ,
+         la_data_in_rp[11]   ,
+         la_data_in_rp[12]   ,
+         la_data_in_rp[13]   ,
+         la_data_in_rp[14]   ,
+         la_data_in_rp[15]   ,
+         la_data_in_rp[16]   ,
+         la_data_in_rp[17]   ,
+         wb_clk_int_i       ,
+         wb_rst_int_i       ,
+         wbs_ack_o          ,
+         wbs_cyc_int_i      ,
+         wbs_stb_int_i      ,
+         wbs_we_int_i       ,
+         wbs_adr_int_i[0]   ,
+         wbs_dat_int_i[0]   ,
+         wbs_dat_o[0]       ,
+         wbs_sel_int_i[0]   ,
+         wbs_adr_int_i[1]   ,
+         wbs_dat_int_i[1]   ,
+         wbs_dat_o[1]       ,
+         wbs_sel_int_i[1]   ,
+         wbs_adr_int_i[2]   ,
+         wbs_dat_int_i[2]   ,
+         wbs_dat_o[2]       ,
+         wbs_sel_int_i[2]   ,
+         wbs_adr_int_i[3]   ,
+         wbs_dat_int_i[3]   ,
+         wbs_dat_o[3]       ,
+         wbs_sel_int_i[3]   ,
+         wbs_adr_int_i[4]   ,
+         wbs_dat_int_i[4]   ,
+         wbs_dat_o[4]       ,
+         wbs_adr_int_i[5]   ,
+         wbs_dat_int_i[5]   ,
+         wbs_dat_o[5]       ,
+         wbs_adr_int_i[6]   ,
+         wbs_dat_int_i[6]   ,
+         wbs_dat_o[6]       ,
+         wbs_adr_int_i[7]   ,
+         wbs_dat_int_i[7]   ,
+         wbs_dat_o[7]       ,
+         wbs_adr_int_i[8]   ,
+         wbs_dat_int_i[8]   ,
+         wbs_dat_o[8]       ,
+         wbs_adr_int_i[9]   ,
+         wbs_dat_int_i[9]   ,
+         wbs_dat_o[9]       ,
+         wbs_adr_int_i[10]  ,
+         wbs_dat_int_i[10]  ,
+         wbs_dat_o[10]      ,
+         wbs_adr_int_i[11]  ,
+         wbs_dat_int_i[11]  ,
+         wbs_dat_o[11]      ,
+         wbs_adr_int_i[12]  ,
+         wbs_dat_int_i[12]  ,
+         wbs_dat_o[12]      ,
+         wbs_adr_int_i[13]  ,
+         wbs_dat_int_i[13]  ,
+         wbs_dat_o[13]      ,
+         wbs_adr_int_i[14]  ,
+         wbs_dat_int_i[14]  ,
+         wbs_dat_o[14]      ,
+         wbs_adr_int_i[15]  ,
+         wbs_dat_int_i[15]  ,
+         wbs_dat_o[15]      ,
+         wbs_adr_int_i[16]  ,
+         wbs_dat_int_i[16]  ,
+         wbs_dat_o[16]      ,
+         wbs_adr_int_i[17]  ,
+         wbs_dat_int_i[17]  ,
+         wbs_dat_o[17]      ,
+         wbs_adr_int_i[18]  ,
+         wbs_dat_int_i[18]  ,
+         wbs_dat_o[18]      ,
+         wbs_adr_int_i[19]  ,
+         wbs_dat_int_i[19]  ,
+         wbs_dat_o[19]      ,
+         wbs_adr_int_i[20]  ,
+         wbs_dat_int_i[20]  ,
+         wbs_dat_o[20]      ,
+         wbs_adr_int_i[21]  ,
+         wbs_dat_int_i[21]  ,
+         wbs_dat_o[21]      ,
+         wbs_adr_int_i[22]  ,
+         wbs_dat_int_i[22]  ,
+         wbs_dat_o[22]      ,
+         wbs_adr_int_i[23]  ,
+         wbs_dat_int_i[23]  ,
+         wbs_dat_o[23]      ,
+         wbs_adr_int_i[24]  ,
+         wbs_dat_int_i[24]  ,
+         wbs_dat_o[24]      ,
+         wbs_adr_int_i[25]  ,
+         wbs_dat_int_i[25]  ,
+         wbs_dat_o[25]      ,
+         wbs_adr_int_i[26]  ,
+         wbs_dat_int_i[26]  ,
+         wbs_dat_o[26]      ,
+         wbs_adr_int_i[27]  ,
+         wbs_dat_int_i[27]  ,
+         wbs_dat_o[27]      ,
+         wbs_adr_int_i[28]  ,
+         wbs_dat_int_i[28]  ,
+         wbs_dat_o[28]      ,
+         wbs_adr_int_i[29]  ,
+         wbs_dat_int_i[29]  ,
+         wbs_dat_o[29]      ,
+         wbs_adr_int_i[30]  ,
+         wbs_dat_int_i[30]  ,
+         wbs_dat_o[30]      ,
+         wbs_adr_int_i[31]  ,
+         wbs_dat_int_i[31]  ,
+         wbs_dat_o[31]        
+            } = ch_out_south;
+
+bus_rep_south  #(
+`ifndef SYNTHESIS
+.BUS_REP_WD(124)
+`endif
+      ) u_rp_south(
+`ifdef USE_POWER_PINS
+    .vccd1                 (vdda1                  ),
+    .vssd1                 (vssa1                  ),
+`endif
+    .ch_in (ch_in_south),
+    .ch_out (ch_out_south)
+   );
diff --git a/verilog/rtl/lib/ctech_cells.sv b/verilog/rtl/lib/ctech_cells.sv
index 26e5cbb..a9c6693 100644
--- a/verilog/rtl/lib/ctech_cells.sv
+++ b/verilog/rtl/lib/ctech_cells.sv
@@ -111,10 +111,12 @@
 	input  logic A,
 	output logic X);
 
+wire X1;
 `ifndef SYNTHESIS
     assign X = A;
 `else
-     sky130_fd_sc_hd__clkdlybuf4s15_2 u_dly (.X(X),.A(A));
+     sky130_fd_sc_hd__clkbuf_1 u_dly0 (.X(X1),.A(A));
+     sky130_fd_sc_hd__clkbuf_1 u_dly1 (.X(X),.A(X1));
 `endif
 
 endmodule
diff --git a/verilog/rtl/qspim b/verilog/rtl/qspim
index ee4d23b..abbea37 160000
--- a/verilog/rtl/qspim
+++ b/verilog/rtl/qspim
@@ -1 +1 @@
-Subproject commit ee4d23bb8a6edf84545f1aa0ba5db083d12440d7
+Subproject commit abbea3730b710e8ee387dad5bcd2242dc10a59e7
diff --git a/verilog/rtl/user_project_wrapper.v b/verilog/rtl/user_project_wrapper.v
index 09fd72f..4104a12 100644
--- a/verilog/rtl/user_project_wrapper.v
+++ b/verilog/rtl/user_project_wrapper.v
@@ -290,6 +290,9 @@
 ////         B. FPU Integration                                   ////
 ////    5.8  Nov 20, 2022, Dinesh A                               ////
 ////         A. Pinmux - Double Sync added for usb & i2c inter    ////
+////    5.9  Nov 25, 2022, Dinesh A                               ////
+////         cpu_clk will be feed through wb_interconnect for     ////
+////         buffering purpose                                    ////
 //////////////////////////////////////////////////////////////////////
 ////                                                              ////
 //// Copyright (C) 2000 Authors and OPENCORES.ORG                 ////
@@ -876,6 +879,19 @@
 
 wire   int_pll_clock       = pll_clk_out[0];
 
+//-------------------------------------
+// cpu clock repeater mapping
+//-------------------------------------
+wire [9:0] cpu_clk_rp;
+
+wire [5:0] cpu_clk_rp_risc   = cpu_clk_rp[5:0];
+wire       cpu_clk_rp_aes    = cpu_clk_rp[6];
+wire       cpu_clk_rp_fpu    = cpu_clk_rp[7];
+wire       cpu_clk_rp_pinmux = cpu_clk_rp[8];
+
+
+`include "bus_repeater.sv"
+
 /***********************************************
  Wishbone HOST
 *************************************************/
@@ -885,7 +901,7 @@
           .vccd1                   (vccd1                   ),// User area 1 1.8V supply
           .vssd1                   (vssd1                   ),// User area 1 digital ground
 `endif
-          .user_clock1             (wb_clk_i                ),
+          .user_clock1             (wb_clk_int_i            ),
           .user_clock2             (user_clock2             ),
           .int_pll_clock           (int_pll_clock           ),
 
@@ -905,16 +921,16 @@
           .wbd_pll_rst_n           (wbd_pll_rst_n           ),
 
     // Master Port
-          .wbm_rst_i               (wb_rst_i                ),  
-          .wbm_clk_i               (wb_clk_i                ),  
-          .wbm_cyc_i               (wbs_cyc_i               ),  
-          .wbm_stb_i               (wbs_stb_i               ),  
-          .wbm_adr_i               (wbs_adr_i               ),  
-          .wbm_we_i                (wbs_we_i                ),  
-          .wbm_dat_i               (wbs_dat_i               ),  
-          .wbm_sel_i               (wbs_sel_i               ),  
-          .wbm_dat_o               (wbs_dat_o               ),  
-          .wbm_ack_o               (wbs_ack_o               ),  
+          .wbm_rst_i               (wb_rst_int_i            ),  
+          .wbm_clk_i               (wb_clk_int_i            ),  
+          .wbm_cyc_i               (wbs_cyc_int_i           ),  
+          .wbm_stb_i               (wbs_stb_int_i           ),  
+          .wbm_adr_i               (wbs_adr_int_i           ),  
+          .wbm_we_i                (wbs_we_int_i            ),  
+          .wbm_dat_i               (wbs_dat_int_i           ),  
+          .wbm_sel_i               (wbs_sel_int_i           ),  
+          .wbm_dat_o               (wbs_dat_int_o           ),  
+          .wbm_ack_o               (wbs_ack_int_o           ),  
           .wbm_err_o               (                        ),  
 
     // Clock Skeq Adjust
@@ -938,7 +954,7 @@
           .cfg_clk_skew_ctrl1      (cfg_clk_skew_ctrl1      ),
           .cfg_clk_skew_ctrl2      (cfg_clk_skew_ctrl2      ),
 
-          .la_data_in              (la_data_in[17:0]        ),
+          .la_data_in              (la_data_in_rp[17:0]     ),
 
           .uartm_rxd               (uartm_rxd               ),
           .uartm_txd               (uartm_txd               ),
@@ -998,7 +1014,7 @@
 	      .cfg_bypass_dcache       (cfg_bypass_dcache          ),
 
     // Clock
-          .core_clk_int            (cpu_clk                    ),
+          .core_clk_int            (cpu_clk_rp_risc            ),
           .cfg_ccska_riscv_intf    (cfg_ccska_riscv_intf_rp    ),
           .cfg_ccska_riscv_icon    (cfg_ccska_riscv_icon_rp    ),
           .cfg_ccska_riscv_core0   (cfg_ccska_riscv_core0_rp   ),
@@ -1225,15 +1241,15 @@
 *************************************************/
 aes_top u_aes (
 `ifdef USE_POWER_PINS
-    .vccd1                 (vdda1                  ),
-    .vssd1                 (vssa1                  ),
+    .vccd1                 (vdda1            ),
+    .vssd1                 (vssa1            ),
 `endif
 
     .mclk                  (cpu_clk_aes      ),
     .rst_n                 (cpu_intf_rst_n   ),
 
     .cfg_cska              (cfg_ccska_aes_rp ),
-    .wbd_clk_int           (cpu_clk          ),
+    .wbd_clk_int           (cpu_clk_rp_aes   ),
     .wbd_clk_out           (cpu_clk_aes      ),
 
     .dmem_req              (aes_dmem_req     ),
@@ -1259,7 +1275,7 @@
     .rst_n                 (cpu_intf_rst_n   ),
 
     .cfg_cska              (cfg_ccska_fpu_rp ),
-    .wbd_clk_int           (cpu_clk          ),
+    .wbd_clk_int           (cpu_clk_rp_fpu   ),
     .wbd_clk_out           (cpu_clk_fpu      ),
 
     .dmem_req              (fpu_dmem_req     ),
@@ -1331,7 +1347,7 @@
 
 wb_interconnect  #(
 	`ifndef SYNTHESIS
-          .CH_CLK_WD           (4                       ),
+          .CH_CLK_WD           (14                      ),
 	      .CH_DATA_WD          (154                     )
         `endif
 	) u_intercon (
@@ -1340,11 +1356,22 @@
           .vssd1                   (vssd1                   ),// User area 1 digital ground
 `endif
 	  .ch_clk_in               ({
+                                     cpu_clk,
+                                     cpu_clk,
+                                     cpu_clk,
+                                     cpu_clk,
+                                     cpu_clk,
+                                     cpu_clk,
+                                     cpu_clk,
+                                     cpu_clk,
+                                     cpu_clk,
+                                     cpu_clk,
                                      wbd_clk_int, 
                                      wbd_clk_int, 
                                      wbd_clk_int, 
                                      wbd_clk_int}                  ),
 	  .ch_clk_out              ({
+                                     cpu_clk_rp,
                                      wbd_clk_pinmux_rp, 
                                      wbd_clk_uart_rp, 
                                      wbd_clk_qspi_rp, 
@@ -1586,7 +1613,7 @@
           .user_clock2             (user_clock2             ),
           .int_pll_clock           (int_pll_clock           ),
           .xtal_clk                (xtal_clk                ),
-          .cpu_clk                 (cpu_clk                 ),
+          .cpu_clk                 (cpu_clk_rp_pinmux       ),
 
 
           .rtc_clk                 (rtc_clk                 ),