icache and dcache integration
diff --git a/.gitmodules b/.gitmodules
index df69a25..9f8c7a0 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -4,6 +4,6 @@
 [submodule "verilog/rtl/qspim"]
 	path = verilog/rtl/qspim
 	url = https://github.com/dineshannayya/qspim.git
-[submodule "verilog/rtl/yifive/ycr1c"]
+[submodule "verilog/rtl/yifive/ycr1c1"]
 	path = verilog/rtl/yifive/ycr1c
 	url = https://github.com/dineshannayya/ycr1c.git
diff --git a/Makefile b/Makefile
index ba40f56..f215afc 100644
--- a/Makefile
+++ b/Makefile
@@ -25,11 +25,11 @@
 ifeq ($(CARAVEL_LITE),1) 
 	CARAVEL_NAME := caravel-lite
 	CARAVEL_REPO := https://github.com/efabless/caravel-lite 
-	CARAVEL_BRANCH := main
+	CARAVEL_TAG := 'mpw-5a'
 else
 	CARAVEL_NAME := caravel
 	CARAVEL_REPO := https://github.com/efabless/caravel 
-	CARAVEL_BRANCH := master
+	CARAVEL_TAG := 'mpw-5a'
 endif
 
 # Install caravel as submodule, (1): submodule, (0): clone
@@ -96,8 +96,7 @@
 	$(MAKE) simlink
 else
 	@echo "Installing $(CARAVEL_NAME).."
-	@git clone $(CARAVEL_REPO) $(CARAVEL_ROOT)
-	@cd $(CARAVEL_ROOT); git checkout $(CARAVEL_BRANCH)
+	@git clone -b $(CARAVEL_TAG) $(CARAVEL_REPO) $(CARAVEL_ROOT)
 endif
 
 # Create symbolic links to caravel's main files
@@ -116,30 +115,12 @@
 # Update Caravel
 .PHONY: update_caravel
 update_caravel: check-caravel
-ifeq ($(SUBMODULE),1)
-	@git submodule update --init --recursive
-	cd $(CARAVEL_ROOT) && \
-	git checkout $(CARAVEL_BRANCH) && \
-	git pull
-else
-	cd $(CARAVEL_ROOT)/ && \
-		git checkout $(CARAVEL_BRANCH) && \
-		git pull
-endif
+	cd $(CARAVEL_ROOT)/ && git checkout $(CARAVEL_TAG) && git pull
 
 # Uninstall Caravel
 .PHONY: uninstall
 uninstall: 
-ifeq ($(SUBMODULE),1)
-	git config -f .gitmodules --remove-section "submodule.$(CARAVEL_NAME)"
-	git add .gitmodules
-	git submodule deinit -f $(CARAVEL_ROOT)
-	git rm --cached $(CARAVEL_ROOT)
-	rm -rf .git/modules/$(CARAVEL_NAME)
 	rm -rf $(CARAVEL_ROOT)
-else
-	rm -rf $(CARAVEL_ROOT)
-endif
 
 # Install Openlane
 .PHONY: openlane
@@ -150,20 +131,15 @@
 # Default installs to the user home directory, override by "export PRECHECK_ROOT=<precheck-installation-path>"
 .PHONY: precheck
 precheck:
-	@git clone https://github.com/efabless/mpw_precheck.git --depth=1 $(PRECHECK_ROOT)
+	@git clone --depth=1 --branch mpw-5 https://github.com/efabless/mpw_precheck.git $(PRECHECK_ROOT)
 	@docker pull efabless/mpw_precheck:latest
 
 .PHONY: run-precheck
 run-precheck: check-precheck check-pdk check-caravel
 	$(eval INPUT_DIRECTORY := $(shell pwd))
 	cd $(PRECHECK_ROOT) && \
-	docker run -e INPUT_DIRECTORY=$(INPUT_DIRECTORY) -e PDK_ROOT=$(PDK_ROOT) -e CARAVEL_ROOT=$(CARAVEL_ROOT) -v $(PRECHECK_ROOT):$(PRECHECK_ROOT) -v $(INPUT_DIRECTORY):$(INPUT_DIRECTORY) -v $(PDK_ROOT):$(PDK_ROOT) -v $(CARAVEL_ROOT):$(CARAVEL_ROOT) \
-	-u $(shell id -u $(USER)):$(shell id -g $(USER)) efabless/mpw_precheck:latest bash -c "cd $(PRECHECK_ROOT) ; python3 mpw_precheck.py --pdk_root $(PDK_ROOT) --input_directory $(INPUT_DIRECTORY) --caravel_root $(CARAVEL_ROOT)"
-
-# Install PDK using OL's Docker Image
-.PHONY: pdk-nonnative
-pdk-nonnative: skywater-pdk skywater-library skywater-timing open_pdks
-	docker run --rm -v $(PDK_ROOT):$(PDK_ROOT) -v $(CARAVEL_ROOT):$(CARAVEL_ROOT) -e CARAVEL_ROOT=$(CARAVEL_ROOT) -e PDK_ROOT=$(PDK_ROOT) -u $(shell id -u $(USER)):$(shell id -g $(USER)) efabless/openlane:current sh -c "cd $(CARAVEL_ROOT); make build-pdk; make gen-sources"
+	docker run -e INPUT_DIRECTORY=$(INPUT_DIRECTORY) -e PDK_ROOT=$(PDK_ROOT) -v $(PRECHECK_ROOT):$(PRECHECK_ROOT) -v $(INPUT_DIRECTORY):$(INPUT_DIRECTORY) -v $(PDK_ROOT):$(PDK_ROOT) \
+	-u $(shell id -u $(USER)):$(shell id -g $(USER)) efabless/mpw_precheck:latest bash -c "cd $(PRECHECK_ROOT) ; python3 mpw_precheck.py --pdk_root $(PDK_ROOT) --input_directory $(INPUT_DIRECTORY)"
 
 # Clean 
 .PHONY: clean
diff --git a/openlane/qspim/config.tcl b/openlane/qspim/config.tcl
index d8f77f5..dd9596a 100755
--- a/openlane/qspim/config.tcl
+++ b/openlane/qspim/config.tcl
@@ -71,7 +71,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 550"
+set ::env(DIE_AREA) "0 0 450 550"
 
 set ::env(PL_TIME_DRIVEN) 1
 set ::env(PL_TARGET_DENSITY) "0.42"
diff --git a/openlane/qspim/pin_order.cfg b/openlane/qspim/pin_order.cfg
index 233a7ce..a0c3c37 100644
--- a/openlane/qspim/pin_order.cfg
+++ b/openlane/qspim/pin_order.cfg
@@ -107,6 +107,17 @@
 wbd_sel_i\[2\]       
 wbd_sel_i\[1\]       
 wbd_sel_i\[0\]       
+wbd_bl_i\[9\]       
+wbd_bl_i\[8\]       
+wbd_bl_i\[7\]       
+wbd_bl_i\[6\]       
+wbd_bl_i\[5\]       
+wbd_bl_i\[4\]       
+wbd_bl_i\[3\]       
+wbd_bl_i\[2\]       
+wbd_bl_i\[1\]       
+wbd_bl_i\[0\]       
+wbd_bry_i
 wbd_dat_i\[31\]      
 wbd_dat_i\[30\]      
 wbd_dat_i\[29\]      
@@ -172,4 +183,5 @@
 wbd_dat_o\[1\]      
 wbd_dat_o\[0\]      
 wbd_ack_o           
+wbd_lack_o           
 wbd_err_o           
diff --git a/openlane/user_project_wrapper/config.tcl b/openlane/user_project_wrapper/config.tcl
index 0f5a1c8..ae4bbce 100644
--- a/openlane/user_project_wrapper/config.tcl
+++ b/openlane/user_project_wrapper/config.tcl
@@ -16,12 +16,17 @@
 # Base Configurations. Don't Touch
 # section begin
 
+set ::env(PDK) "sky130A"
+set ::env(STD_CELL_LIBRARY) "sky130_fd_sc_hd"
+
 # YOU ARE NOT ALLOWED TO CHANGE ANY VARIABLES DEFINED IN THE FIXED WRAPPER CFGS 
 source $::env(CARAVEL_ROOT)/openlane/user_project_wrapper_empty/fixed_wrapper_cfgs.tcl
 
+
 # YOU CAN CHANGE ANY VARIABLES DEFINED IN THE DEFAULT WRAPPER CFGS BY OVERRIDING THEM IN THIS CONFIG.TCL
 source $::env(CARAVEL_ROOT)/openlane/user_project_wrapper_empty/default_wrapper_cfgs.tcl
 
+
 set script_dir [file dirname [file normalize [info script]]]
 set proj_dir [file dirname [file normalize [info script]]]
 
@@ -53,7 +58,7 @@
 set ::env(FP_SIZING) "absolute"
 set ::env(MACRO_PLACEMENT_CFG) $proj_dir/macro.cfg
 
-set ::env(PDN_CFG) $proj_dir/pdn.tcl
+#set ::env(PDN_CFG) $proj_dir/pdn.tcl
 
 set ::env(SDC_FILE) "$proj_dir/base.sdc"
 set ::env(BASE_SDC_FILE) "$proj_dir/base.sdc"
@@ -65,7 +70,7 @@
         $proj_dir/../../verilog/gl/qspim.v \
         $proj_dir/../../verilog/gl/wb_interconnect.v \
         $proj_dir/../../verilog/gl/pinmux.v     \
-        $proj_dir/../../verilog/gl/mbist.v     \
+        $proj_dir/../../verilog/gl/mbist_wrapper.v     \
         $proj_dir/../../verilog/gl/uart_i2cm_usb_spi.v     \
 	$proj_dir/../../verilog/gl/wb_host.v \
 	$proj_dir/../../verilog/gl/yifive.v \
@@ -78,7 +83,7 @@
 	$lef_root/wb_interconnect.lef \
 	$lef_root/uart_i2cm_usb_spi.lef \
 	$lef_root/wb_host.lef \
-	$lef_root/mbist.lef \
+	$lef_root/mbist_wrapper.lef \
 	$lef_root/yifive.lef \
 	$lef_root/sky130_sram_2kbyte_1rw1r_32x512_8.lef \
 	"
@@ -89,14 +94,14 @@
 	$gds_root/wb_interconnect.gds \
 	$gds_root/uart_i2cm_usb_spi.gds \
 	$gds_root/wb_host.gds \
-	$gds_root/mbist.gds \
+	$gds_root/mbist_wrapper.gds \
 	$gds_root/yifive.gds \
 	$gds_root/sky130_sram_2kbyte_1rw1r_32x512_8.gds \
 	"
 
 set ::env(SYNTH_DEFINES) [list SYNTHESIS ]
 
-set ::env(VERILOG_INCLUDE_DIRS) [glob $proj_dir/../../verilog/rtl/yifive/ycr1/src/includes ]
+set ::env(VERILOG_INCLUDE_DIRS) [glob $proj_dir/../../verilog/rtl/yifive/ycr1c/src/includes ]
 
 set ::env(GLB_RT_MAXLAYER) 5
 
@@ -114,25 +119,34 @@
 set ::env(VDD_PIN) "vccd1 vccd2 vdda1 vdda2"
 set ::env(GND_PIN) "vssd1 vssd2 vssa1 vssa2"
 
-set ::env(GLB_RT_OBS) " li1   150 1300  833.1  1716.54,\
-	                met1  150 1300  833.1  1716.54,\
-	                met3  150 1300  833.1  1716.54,\
-                        li1   950 1300 1633.1  1716.54,\
-                        met1  950 1300 1633.1  1716.54,\
-                        met2  950 1300 1633.1  1716.54,\
-                        met3  950 1300 1633.1  1716.54,\
-                        li1   150 1900  833.1  2316.54,\
-                        met1  150 1900  833.1  2316.54,\
-                        met3  150 1900  833.1  2316.54,\
-                        li1  950  1900 1633.1  2316.54,\
-                        met1 950  1900 1633.1  2316.54,\
-                        met3 950  1900 1633.1  2316.54,\
-                        li1  150  2900  833.1  3316.54,\
-                        met1 150  2900  833.1  3316.54,\
-                        met3 150  2900  833.1  3316.54,\
-                        li1  950  2900 1633.1  3316.54,\
-                        met1 950  2900 1633.1  3316.54,\
-                        met3 950  2900 1633.1  3316.54,\
+set ::env(GLB_RT_OBS) " li1   150 2100  833.1  2516.54,\
+	                met1  150 2100  833.1  2516.54,\
+	                met2  150 2100  833.1  2516.54,\
+                        met3  150 2100  833.1  2516.54,\
+                        li1   950 2100 1633.1  2516.54,\
+                        met1  950 2100 1633.1  2516.54,\
+                        met2  950 2100 1633.1  2516.54,\
+                        met3  950 2100 1633.1  2516.54,\
+                        li1   150 3000  833.1 3416.54,\
+                        met1  150 3000  833.1 3416.54,\
+                        met2  150 3000  833.1 3416.54,\
+                        met3  150 3000  833.1 3416.54,\
+                        li1   950 3000 1633.1 3416.54,\
+                        met1  950 3000 1633.1 3416.54,\
+                        met2  950 3000 1633.1 3416.54,\
+                        met3  950 3000 1633.1 3416.54,\
+                        li1  150  1400  833.1  1816.54,\
+                        met1 150  1400  833.1  1816.54,\
+                        met2 150  1400  833.1  1816.54,\
+                        met3 150  1400  833.1  1816.54,\
+                        li1  150  800  833.1   1216.54,\
+                        met1 150  800  833.1   1216.54,\
+                        met2 150  800  833.1   1216.54,\
+                        met3 150  800  833.1   1216.54,\
+                        li1  150  200  833.1   616.54,\
+                        met1 150  200  833.1   616.54,\
+                        met2 150  200  833.1   616.54,\
+                        met3 150  200  833.1   616.54,\
 	                met5  0 0 2920 3520"
 
 set ::env(FP_PDN_MACRO_HOOKS) "\
@@ -141,7 +155,8 @@
 	u_qspi_master vccd1 vssd1 \
 	u_riscv_top vccd1 vssd1 \
 	u_tsram0_2kb vccd1 vssd1 \
-	u_tsram1_2kb vccd1 vssd1 \
+	u_icache_2kb vccd1 vssd1 \
+	u_dcache_2kb vccd1 vssd1 \
 	u_mbist vccd1 vssd1 \
 	u_sram0_2kb vccd1 vssd1 \
 	u_sram1_2kb vccd1 vssd1 \
@@ -177,7 +192,7 @@
 
 
 set ::env(FP_PDN_HPITCH) "90"
-set ::env(FP_PDN_VPITCH) "180"
+set ::env(FP_PDN_VPITCH) "100"
 set ::env(FP_PDN_HSPACING) "6"
 
 
diff --git a/openlane/user_project_wrapper/interactive.tcl b/openlane/user_project_wrapper/interactive.tcl
index 4483faf..fde4083 100644
--- a/openlane/user_project_wrapper/interactive.tcl
+++ b/openlane/user_project_wrapper/interactive.tcl
@@ -20,9 +20,6 @@
 
 
 proc run_placement_step {args} {
-    # set pdndef_dirname [file dirname $::env(pdn_tmp_file_tag).def]
-    # set pdndef [lindex [glob $pdndef_dirname/*pdn*] 0]
-    # set_def $pdndef
     if { ! [ info exists ::env(PLACEMENT_CURRENT_DEF) ] } {
         set ::env(PLACEMENT_CURRENT_DEF) $::env(CURRENT_DEF)
     } else {
@@ -33,7 +30,6 @@
 }
 
 proc run_cts_step {args} {
-    # set_def $::env(opendp_result_file_tag).def
     if { ! [ info exists ::env(CTS_CURRENT_DEF) ] } {
         set ::env(CTS_CURRENT_DEF) $::env(CURRENT_DEF)
     } else {
@@ -45,9 +41,6 @@
 }
 
 proc run_routing_step {args} {
-    # set resizerdef_dirname [file dirname $::env(resizer_tmp_file_tag)_timing.def]
-    # set resizerdef [lindex [glob $resizerdef_dirname/*resizer*] 0]
-    # set_def $resizerdef
     if { ! [ info exists ::env(ROUTING_CURRENT_DEF) ] } {
         set ::env(ROUTING_CURRENT_DEF) $::env(CURRENT_DEF)
     } else {
@@ -57,7 +50,6 @@
 }
 
 proc run_diode_insertion_2_5_step {args} {
-    # set_def $::env(tritonRoute_result_file_tag).def
     if { ! [ info exists ::env(DIODE_INSERTION_CURRENT_DEF) ] } {
         set ::env(DIODE_INSERTION_CURRENT_DEF) $::env(CURRENT_DEF)
     } else {
@@ -70,22 +62,7 @@
 
 }
 
-proc run_power_pins_insertion_step {args} {
-    # set_def $::env(tritonRoute_result_file_tag).def
-    if { ! [ info exists ::env(POWER_PINS_INSERTION_CURRENT_DEF) ] } {
-        set ::env(POWER_PINS_INSERTION_CURRENT_DEF) $::env(CURRENT_DEF)
-    } else {
-        set ::env(CURRENT_DEF) $::env(POWER_PINS_INSERTION_CURRENT_DEF)
-    }
-    if { $::env(LVS_INSERT_POWER_PINS) } {
-		write_powered_verilog
-		set_netlist $::env(lvs_result_file_tag).powered.v
-    }
-
-}
-
 proc run_lvs_step {{ lvs_enabled 1 }} {
-    # set_def $::env(tritonRoute_result_file_tag).def
     if { ! [ info exists ::env(LVS_CURRENT_DEF) ] } {
         set ::env(LVS_CURRENT_DEF) $::env(CURRENT_DEF)
     } else {
@@ -121,189 +98,6 @@
 	}
 }
 
-proc gen_pdn {args} {
-    puts_info "Generating PDN..."
-    TIMER::timer_start
-	
-    set ::env(SAVE_DEF) [index_file $::env(pdn_tmp_file_tag).def]
-    set ::env(PGA_RPT_FILE) [index_file $::env(pdn_report_file_tag).pga.rpt]
-
-    try_catch $::env(OPENROAD_BIN) -exit $::env(SCRIPTS_DIR)/openroad/pdn.tcl \
-	|& tee $::env(TERMINAL_OUTPUT) [index_file $::env(pdn_log_file_tag).log 0]
-
-
-    TIMER::timer_stop
-    exec echo "[TIMER::get_runtime]" >> [index_file $::env(pdn_log_file_tag)_runtime.txt 0]
-
-	quit_on_unconnected_pdn_nodes
-
-    set_def $::env(SAVE_DEF)
-}
-
-proc run_power_grid_generation {args} {
-	if { [info exists ::env(VDD_NETS)] || [info exists ::env(GND_NETS)] } {
-		# they both must exist and be equal in length
-		# current assumption: they cannot have a common ground
-		if { ! [info exists ::env(VDD_NETS)] || ! [info exists ::env(GND_NETS)] } {
-			puts_err "VDD_NETS and GND_NETS must *both* either be defined or undefined"
-			return -code error
-		}
-		# standard cell power and ground nets are assumed to be the first net 
-		set ::env(VDD_PIN) [lindex $::env(VDD_NETS) 0]
-		set ::env(GND_PIN) [lindex $::env(GND_NETS) 0]
-	} elseif { [info exists ::env(SYNTH_USE_PG_PINS_DEFINES)] } {
-		set ::env(VDD_NETS) [list]
-		set ::env(GND_NETS) [list]
-		# get the pins that are in $yosys_tmp_file_tag.pg_define.v
-		# that are not in $yosys_result_file_tag.v
-		#
-		set full_pins {*}[extract_pins_from_yosys_netlist $::env(yosys_tmp_file_tag).pg_define.v]
-		puts_info $full_pins
-
-		set non_pg_pins {*}[extract_pins_from_yosys_netlist $::env(yosys_result_file_tag).v]
-		puts_info $non_pg_pins
-
-		# assumes the pins are ordered correctly (e.g., vdd1, vss1, vcc1, vss1, ...)
-		foreach {vdd gnd} $full_pins {
-			if { $vdd ne "" && $vdd ni $non_pg_pins } {
-				lappend ::env(VDD_NETS) $vdd
-			}
-			if { $gnd ne "" && $gnd ni $non_pg_pins } {
-				lappend ::env(GND_NETS) $gnd
-			}
-		}
-	} else {
-		set ::env(VDD_NETS) $::env(VDD_PIN)
-		set ::env(GND_NETS) $::env(GND_PIN)
-	}
-
-	puts_info "Power planning the following nets"
-	puts_info "Power: $::env(VDD_NETS)"
-	puts_info "Ground: $::env(GND_NETS)"
-
-	if { [llength $::env(VDD_NETS)] != [llength $::env(GND_NETS)] } {
-		puts_err "VDD_NETS and GND_NETS must be of equal lengths"
-		return -code error
-	}
-
-	# internal macros power connections 
-	if {[info exists ::env(FP_PDN_MACRO_HOOKS)]} {
-		set macro_hooks [dict create]
-		set pdn_hooks [split $::env(FP_PDN_MACRO_HOOKS) ","]
-		foreach pdn_hook $pdn_hooks {
-			set instance_name [lindex $pdn_hook 0]
-			set power_net [lindex $pdn_hook 1]
-			set ground_net [lindex $pdn_hook 2]
-			dict append macro_hooks $instance_name [subst {$power_net $ground_net}]
-		        set power_net_indx [lsearch $::env(VDD_NETS) $power_net]
-		        set ground_net_indx [lsearch $::env(GND_NETS) $ground_net]
-
-		        # make sure that the specified power domains exist.
-		        if { $power_net_indx == -1  || $ground_net_indx == -1 || $power_net_indx != $ground_net_indx } {
-		        	puts_err "Can't find $power_net and $ground_net domain. \
-		        	Make sure that both exist in $::env(VDD_NETS) and $::env(GND_NETS)." 
-		        } 
-		}
-		
-	}
-	
-	# generate multiple power grids per pair of (VDD,GND)
-	# offseted by WIDTH + SPACING
-	foreach vdd $::env(VDD_NETS) gnd $::env(GND_NETS) {
-		set ::env(VDD_NET) $vdd
-		set ::env(GND_NET) $gnd
-	        puts_info "Connecting Power: $vdd & gnd to All internal macros."
-
-		# internal macros power connections
-		set ::env(FP_PDN_MACROS) ""
-		if { $::env(FP_PDN_ENABLE_MACROS_GRID) == 1 } {
-			# if macros connections to power are explicitly set
-			# default behavoir macro pins will be connected to the first power domain
-			if { [info exists ::env(FP_PDN_MACRO_HOOKS)] } {
-				set ::env(FP_PDN_ENABLE_MACROS_GRID) 0
-				foreach {instance_name hooks} $macro_hooks {
-					set power [lindex $hooks 0]
-					set ground [lindex $hooks 1]			 
-					if { $power == $::env(VDD_NET) && $ground == $::env(GND_NET) } {
-						set ::env(FP_PDN_ENABLE_MACROS_GRID) 1
-						puts_info "Connecting $instance_name to $power and $ground nets."
-						lappend ::env(FP_PDN_MACROS) $instance_name
-					}
-				}
-			} 
-		} else {
-			puts_warn "All internal macros will not be connected to power $vdd & $gnd."
-		}
-		
-		gen_pdn
-
-		set ::env(FP_PDN_ENABLE_RAILS) 0
-		set ::env(FP_PDN_ENABLE_MACROS_GRID) 0
-
-		# allow failure until open_pdks is up to date...
-		catch {set ::env(FP_PDN_VOFFSET) [expr $::env(FP_PDN_VOFFSET)+$::env(FP_PDN_VWIDTH)+$::env(FP_PDN_VSPACING)]}
-		catch {set ::env(FP_PDN_HOFFSET) [expr $::env(FP_PDN_HOFFSET)+$::env(FP_PDN_HWIDTH)+$::env(FP_PDN_HSPACING)]}
-
-		catch {set ::env(FP_PDN_CORE_RING_VOFFSET) \
-			[expr $::env(FP_PDN_CORE_RING_VOFFSET)\
-			+2*($::env(FP_PDN_CORE_RING_VWIDTH)\
-			+max($::env(FP_PDN_CORE_RING_VSPACING), $::env(FP_PDN_CORE_RING_HSPACING)))]}
-		catch {set ::env(FP_PDN_CORE_RING_HOFFSET) [expr $::env(FP_PDN_CORE_RING_HOFFSET)\
-			+2*($::env(FP_PDN_CORE_RING_HWIDTH)+\
-			max($::env(FP_PDN_CORE_RING_VSPACING), $::env(FP_PDN_CORE_RING_HSPACING)))]}
-
-		puts "FP_PDN_VOFFSET: $::env(FP_PDN_VOFFSET)"
-		puts "FP_PDN_HOFFSET: $::env(FP_PDN_VOFFSET)"
-		puts "FP_PDN_CORE_RING_VOFFSET: $::env(FP_PDN_CORE_RING_VOFFSET)"
-		puts "FP_PDN_CORE_RING_HOFFSET: $::env(FP_PDN_CORE_RING_HOFFSET)"
-	}
-	set ::env(FP_PDN_ENABLE_RAILS) 1
-}
-
-
-proc run_floorplan {args} {
-		puts_info "Running Floorplanning..."
-		# |----------------------------------------------------|
-		# |----------------   2. FLOORPLAN   ------------------|
-		# |----------------------------------------------------|
-		#
-		# intial fp
-		init_floorplan
-
-
-		# place io
-		if { [info exists ::env(FP_PIN_ORDER_CFG)] } {
-				place_io_ol
-		} else {
-			if { [info exists ::env(FP_CONTEXT_DEF)] && [info exists ::env(FP_CONTEXT_LEF)] } {
-				place_io
-				global_placement_or
-				place_contextualized_io \
-					-lef $::env(FP_CONTEXT_LEF) \
-					-def $::env(FP_CONTEXT_DEF)
-			} else {
-				place_io
-			}
-		}
-
-		apply_def_template
-
-		if { [info exist ::env(EXTRA_LEFS)] } {
-			if { [info exist ::env(MACRO_PLACEMENT_CFG)] } {
-				file copy -force $::env(MACRO_PLACEMENT_CFG) $::env(TMP_DIR)/macro_placement.cfg
-				manual_macro_placement f
-			} else {
-				global_placement_or
-				basic_macro_placement
-			}
-		}
-
-		# tapcell
-		tap_decap_or
-		scrot_klayout -layout $::env(CURRENT_DEF)
-		# power grid generation
-		run_power_grid_generation
-}
 
 
 proc run_flow {args} {
@@ -331,7 +125,6 @@
                 "cts" {run_cts_step ""} \
                 "routing" {run_routing_step ""}\
                 "diode_insertion" {run_diode_insertion_2_5_step ""} \
-                "power_pins_insertion" {run_power_pins_insertion_step ""} \
                 "gds_magic" {run_magic ""} \
                 "gds_drc_klayout" {run_klayout ""} \
                 "gds_xor_klayout" {run_klayout_gds_xor ""} \
diff --git a/openlane/user_project_wrapper/macro.cfg b/openlane/user_project_wrapper/macro.cfg
index 535ebc1..d45af45 100644
--- a/openlane/user_project_wrapper/macro.cfg
+++ b/openlane/user_project_wrapper/macro.cfg
@@ -1,14 +1,18 @@
-u_qspi_master           2200             600           N
-u_uart_i2c_usb_spi      2200            1300           N
-u_pinmux                2200            2200           N
-u_riscv_top	        150	        600	       N
-u_tsram0_2kb            150             1300           N
-u_tsram1_2kb            950             1300           N
+u_qspi_master           2250             700           N
+u_uart_i2c_usb_spi      2250            1400           N
+u_pinmux                2250            2300           N
+u_sram2_2kb             150             3000           N
+u_sram3_2kb             950             3000           N
 
-u_mbist                 150             2500           N
-u_sram0_2kb             150             1900           N
-u_sram1_2kb             950             1900           FS
-u_sram2_2kb             150             2900           N
-u_sram3_2kb             950             2900           N
-u_intercon              1850            600            N
-u_wb_host               1450            250            N
+u_mbist                 150             2650           N
+u_sram0_2kb             150             2100           N
+u_sram1_2kb             950             2100           N
+
+u_riscv_top	        950	        450	       N
+u_dcache_2kb            150             1400           N
+u_icache_2kb            150             800            N
+u_tsram0_2kb            150             200            N
+
+
+u_intercon              1850            700            N
+u_wb_host               1450            075            N
diff --git a/openlane/wb_interconnect/config.tcl b/openlane/wb_interconnect/config.tcl
index 7861baf..eec3264 100755
--- a/openlane/wb_interconnect/config.tcl
+++ b/openlane/wb_interconnect/config.tcl
@@ -42,12 +42,12 @@
 # Local sources + no2usb sources
 set ::env(VERILOG_FILES) "\
         $script_dir/../../verilog/rtl/clk_skew_adjust/src/clk_skew_adjust.gv \
-        $script_dir/../../verilog/rtl/lib/wb_stagging.sv                \
+        $script_dir/../../verilog/rtl/lib/sync_wbb.sv                \
+        $script_dir/../../verilog/rtl/lib/sync_fifo2.sv                \
         $script_dir/../../verilog/rtl/wb_interconnect/src/wb_arb.sv     \
         $script_dir/../../verilog/rtl/wb_interconnect/src/wb_interconnect.sv  \
 	"
 
-set ::env(VERILOG_INCLUDE_DIRS) [glob $script_dir/../../verilog/rtl/syntacore/scr1/src/includes $script_dir/../../verilog/rtl/sdram_ctrl/src/defs ]
 set ::env(SYNTH_DEFINES) [list SYNTHESIS ]
 
 set ::env(SYNTH_PARAMS) "CH_CLK_WD 8,\
@@ -70,7 +70,7 @@
 set ::env(FP_PIN_ORDER_CFG) $::env(DESIGN_DIR)/pin_order.cfg
 
 set ::env(FP_SIZING) absolute
-set ::env(DIE_AREA) "0 0 160 2200"
+set ::env(DIE_AREA) "0 0 200 2300"
 
 
 # If you're going to use multiple power domains, then keep this disabled.
@@ -80,24 +80,40 @@
 
 
 set ::env(PL_TIME_DRIVEN) 1
-set ::env(FP_CORE_UTIL) "50"
-set ::env(PL_TARGET_DENSITY) "0.50"
+set ::env(PL_TARGET_DENSITY) "0.30"
 
 # helps in anteena fix
 set ::env(USE_ARC_ANTENNA_CHECK) "0"
 
-set ::env(FP_IO_VEXTEND) 4
-set ::env(FP_IO_HEXTEND) 4
 
-set ::env(FP_PDN_VPITCH) 100
-set ::env(FP_PDN_HPITCH) 100
-set ::env(FP_PDN_VWIDTH) 5
-set ::env(FP_PDN_HWIDTH) 5
-
-set ::env(GLB_RT_MAXLAYER) 5
 set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10
 set ::env(DIODE_INSERTION_STRATEGY) 4
 
+## CTS
+set ::env(CTS_CLK_BUFFER_LIST) "sky130_fd_sc_hd__clkbuf_4 sky130_fd_sc_hd__clkbuf_8 sky130_fd_sc_hd__clkbuf_16"
+set ::env(CTS_SINK_CLUSTERING_MAX_DIAMETER) 50
+set ::env(CTS_SINK_CLUSTERING_SIZE) 20
+
+## Placement
+set ::env(PL_RESIZER_DESIGN_OPTIMIZATIONS) 1
+set ::env(PL_RESIZER_TIMING_OPTIMIZATIONS) 1
+
+set ::env(PL_RESIZER_MAX_SLEW_MARGIN) 2
+set ::env(PL_RESIZER_MAX_CAP_MARGIN) 2
+
+## Routing
+set ::env(GLB_RT_ADJUSTMENT) 0
+set ::env(GLB_RT_L2_ADJUSTMENT) 0.21
+set ::env(GLB_RT_L3_ADJUSTMENT) 0.21
+set ::env(GLB_RT_L4_ADJUSTMENT) 0.1
+set ::env(GLB_RT_L5_ADJUSTMENT) 0.1
+set ::env(GLB_RT_L6_ADJUSTMENT) 0.1
+set ::env(GLB_RT_ALLOW_CONGESTION) 0
+set ::env(GLB_RT_OVERFLOW_ITERS) 200
+
+set ::env(GLB_RT_MINLAYER) 2
+set ::env(GLB_RT_MAXLAYER) 6
+
 
 set ::env(QUIT_ON_TIMING_VIOLATIONS) "0"
 set ::env(QUIT_ON_MAGIC_DRC) "1"
@@ -105,10 +121,10 @@
 set ::env(QUIT_ON_SLEW_VIOLATIONS) "0"
 
 set ::env(GLB_RESIZER_TIMING_OPTIMIZATIONS) "0"
-set ::env(PL_RESIZER_BUFFER_INPUT_PORTS) "1"
+set ::env(PL_RESIZER_BUFFER_INPUT_PORTS) "0"
 set ::env(PL_RESIZER_BUFFER_OUTPUT_PORTS) "1"
-set ::env(PL_RESIZER_MAX_WIRE_LENGTH) "1000"
-set ::env(PL_RESIZER_MAX_SLEW_MARGIN) "1.5"
+set ::env(PL_RESIZER_MAX_WIRE_LENGTH) "2000"
+set ::env(PL_RESIZER_MAX_SLEW_MARGIN) "2.0"
 set ::env(PL_RESIZER_MAX_CAP_MARGIN) "5"
 
 ## FANOUT Reduced to take care of long routes
diff --git a/openlane/wb_interconnect/pin_order.cfg b/openlane/wb_interconnect/pin_order.cfg
index 295c0ef..9f2007f 100644
--- a/openlane/wb_interconnect/pin_order.cfg
+++ b/openlane/wb_interconnect/pin_order.cfg
@@ -4,6 +4,10 @@
 
 #S
 rst_n                000  0 2
+dcache_remap\[3\]
+dcache_remap\[2\]
+dcache_remap\[1\]
+dcache_remap\[0\]
 boot_remap\[3\]
 boot_remap\[2\]
 boot_remap\[1\]
@@ -164,13 +168,14 @@
 m0_wbd_dat_o\[1\]   
 m0_wbd_dat_o\[0\]   
 m0_wbd_ack_o        
+m0_wbd_lack_o        
 m0_wbd_err_o        
 m0_wbd_cyc_i        
 
 
 
 #W
-ch_data_out\[84\]   0000 0 2
+ch_data_out\[84\]   0250 0 2
 ch_data_out\[83\]   
 ch_data_out\[82\]   
 ch_data_out\[81\]   
@@ -227,7 +232,7 @@
 
 ch_clk_out\[0\]
 
-m1_wbd_stb_i         0200 0 2 
+m1_wbd_stb_i         0450 0 2 
 m1_wbd_we_i         
 m1_wbd_adr_i\[31\]  
 m1_wbd_adr_i\[30\]  
@@ -330,10 +335,11 @@
 m1_wbd_dat_o\[1\]   
 m1_wbd_dat_o\[0\]   
 m1_wbd_ack_o        
+m1_wbd_lack_o        
 m1_wbd_err_o        
 m1_wbd_cyc_i        
 
-m2_wbd_stb_i        0350 0 2
+m2_wbd_stb_i        0650 0 2
 m2_wbd_we_i         
 m2_wbd_adr_i\[31\]  
 m2_wbd_adr_i\[30\]  
@@ -371,6 +377,17 @@
 m2_wbd_sel_i\[2\]   
 m2_wbd_sel_i\[1\]   
 m2_wbd_sel_i\[0\]   
+m2_wbd_bl_i\[9\]   
+m2_wbd_bl_i\[8\]   
+m2_wbd_bl_i\[7\]   
+m2_wbd_bl_i\[6\]   
+m2_wbd_bl_i\[5\]   
+m2_wbd_bl_i\[4\]   
+m2_wbd_bl_i\[3\]   
+m2_wbd_bl_i\[2\]   
+m2_wbd_bl_i\[1\]   
+m2_wbd_bl_i\[0\]   
+m2_wbd_bry_i
 m2_wbd_dat_i\[31\]  
 m2_wbd_dat_i\[30\]  
 m2_wbd_dat_i\[29\]  
@@ -436,17 +453,103 @@
 m2_wbd_dat_o\[1\]   
 m2_wbd_dat_o\[0\]   
 m2_wbd_ack_o        
+m2_wbd_lack_o        
 m2_wbd_err_o        
 m2_wbd_cyc_i       
 
+m3_wbd_stb_i        0850 0 2
+m3_wbd_we_i         
+m3_wbd_adr_i\[31\]  
+m3_wbd_adr_i\[30\]  
+m3_wbd_adr_i\[29\]  
+m3_wbd_adr_i\[28\]  
+m3_wbd_adr_i\[27\]  
+m3_wbd_adr_i\[26\]  
+m3_wbd_adr_i\[25\]  
+m3_wbd_adr_i\[24\]  
+m3_wbd_adr_i\[23\]  
+m3_wbd_adr_i\[22\]  
+m3_wbd_adr_i\[21\]  
+m3_wbd_adr_i\[20\]  
+m3_wbd_adr_i\[19\]  
+m3_wbd_adr_i\[18\]  
+m3_wbd_adr_i\[17\]  
+m3_wbd_adr_i\[16\]  
+m3_wbd_adr_i\[15\]  
+m3_wbd_adr_i\[14\]  
+m3_wbd_adr_i\[13\]  
+m3_wbd_adr_i\[12\]  
+m3_wbd_adr_i\[11\]  
+m3_wbd_adr_i\[10\]  
+m3_wbd_adr_i\[9\]   
+m3_wbd_adr_i\[8\]   
+m3_wbd_adr_i\[7\]   
+m3_wbd_adr_i\[6\]   
+m3_wbd_adr_i\[5\]   
+m3_wbd_adr_i\[4\]   
+m3_wbd_adr_i\[3\]   
+m3_wbd_adr_i\[2\]   
+m3_wbd_adr_i\[1\]   
+m3_wbd_adr_i\[0\]   
+m3_wbd_sel_i\[3\]   
+m3_wbd_sel_i\[2\]   
+m3_wbd_sel_i\[1\]   
+m3_wbd_sel_i\[0\]   
+m3_wbd_bl_i\[9\]   
+m3_wbd_bl_i\[8\]   
+m3_wbd_bl_i\[7\]   
+m3_wbd_bl_i\[6\]   
+m3_wbd_bl_i\[5\]   
+m3_wbd_bl_i\[4\]   
+m3_wbd_bl_i\[3\]   
+m3_wbd_bl_i\[2\]   
+m3_wbd_bl_i\[1\]   
+m3_wbd_bl_i\[0\]   
+m3_wbd_bry_i
+m3_wbd_dat_o\[31\]  
+m3_wbd_dat_o\[30\]  
+m3_wbd_dat_o\[29\]  
+m3_wbd_dat_o\[28\]  
+m3_wbd_dat_o\[27\]  
+m3_wbd_dat_o\[26\]  
+m3_wbd_dat_o\[25\]  
+m3_wbd_dat_o\[24\]  
+m3_wbd_dat_o\[23\]  
+m3_wbd_dat_o\[22\]  
+m3_wbd_dat_o\[21\]  
+m3_wbd_dat_o\[20\]  
+m3_wbd_dat_o\[19\]  
+m3_wbd_dat_o\[18\]  
+m3_wbd_dat_o\[17\]  
+m3_wbd_dat_o\[16\]  
+m3_wbd_dat_o\[15\]  
+m3_wbd_dat_o\[14\]  
+m3_wbd_dat_o\[13\]  
+m3_wbd_dat_o\[12\]  
+m3_wbd_dat_o\[11\]  
+m3_wbd_dat_o\[10\]  
+m3_wbd_dat_o\[9\]   
+m3_wbd_dat_o\[8\]   
+m3_wbd_dat_o\[7\]   
+m3_wbd_dat_o\[6\]   
+m3_wbd_dat_o\[5\]   
+m3_wbd_dat_o\[4\]   
+m3_wbd_dat_o\[3\]   
+m3_wbd_dat_o\[2\]   
+m3_wbd_dat_o\[1\]   
+m3_wbd_dat_o\[0\]   
+m3_wbd_ack_o        
+m3_wbd_lack_o        
+m3_wbd_err_o        
+m3_wbd_cyc_i       
 
-ch_data_out\[23\]   1900 0 2
+ch_data_out\[23\]   1950 0 2
 ch_data_out\[22\]
 ch_data_out\[21\]
 ch_data_out\[20\]
 ch_clk_out\[4\]     
 
-s3_wbd_cyc_o        1925 0 2
+s3_wbd_cyc_o        1975 0 2
 s3_wbd_stb_o        
 s3_wbd_we_o         
 s3_wbd_adr_o\[12\]   
@@ -498,6 +601,17 @@
 s3_wbd_sel_o\[2\]   
 s3_wbd_sel_o\[1\]   
 s3_wbd_sel_o\[0\]   
+s3_wbd_bl_o\[9\]   
+s3_wbd_bl_o\[8\]   
+s3_wbd_bl_o\[7\]   
+s3_wbd_bl_o\[6\]   
+s3_wbd_bl_o\[5\]   
+s3_wbd_bl_o\[4\]   
+s3_wbd_bl_o\[3\]   
+s3_wbd_bl_o\[2\]   
+s3_wbd_bl_o\[1\]   
+s3_wbd_bl_o\[0\]   
+s3_wbd_bry_o
 s3_wbd_dat_i\[31\]  
 s3_wbd_dat_i\[30\]  
 s3_wbd_dat_i\[29\]  
@@ -531,8 +645,9 @@
 s3_wbd_dat_i\[1\]   
 s3_wbd_dat_i\[0\]   
 s3_wbd_ack_i        
+s3_wbd_lack_i        
 
-ch_data_in\[115\]   2050 0 2
+ch_data_in\[115\]   2110 0 2
 ch_data_in\[114\] 
 ch_data_in\[113\] 
 ch_data_in\[112\] 
@@ -566,7 +681,7 @@
 
 
 
-ch_clk_out\[5\]    2150 0 2
+ch_clk_out\[5\]    2200 0 2
 ch_clk_out\[6\]
 ch_clk_out\[7\]
 ch_data_out\[24\]
@@ -631,6 +746,17 @@
 s0_wbd_sel_o\[2\]   
 s0_wbd_sel_o\[1\]   
 s0_wbd_sel_o\[0\]   
+s0_wbd_bl_o\[9\]   
+s0_wbd_bl_o\[8\]   
+s0_wbd_bl_o\[7\]   
+s0_wbd_bl_o\[6\]   
+s0_wbd_bl_o\[5\]   
+s0_wbd_bl_o\[4\]   
+s0_wbd_bl_o\[3\]   
+s0_wbd_bl_o\[2\]   
+s0_wbd_bl_o\[1\]   
+s0_wbd_bl_o\[0\]   
+s0_wbd_bry_o
 s0_wbd_dat_o\[31\]  
 s0_wbd_dat_o\[30\]  
 s0_wbd_dat_o\[29\]  
@@ -696,6 +822,7 @@
 s0_wbd_dat_i\[1\]   
 s0_wbd_dat_i\[0\]   
 s0_wbd_ack_i        
+s0_wbd_lack_i        
 s0_wbd_cyc_o        
 
 
diff --git a/openlane/yifive/config.tcl b/openlane/yifive/config.tcl
index ea4e6c9..219ef26 100755
--- a/openlane/yifive/config.tcl
+++ b/openlane/yifive/config.tcl
@@ -41,39 +41,51 @@
 # Local sources + no2usb sources
 set ::env(VERILOG_FILES) "\
         $script_dir/../../verilog/rtl/clk_skew_adjust/src/clk_skew_adjust.gv \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/core/pipeline/ycr1_pipe_top.sv  \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/core/ycr1_core_top.sv  \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/core/ycr1_dm.sv  \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/core/ycr1_tapc_synchronizer.sv  \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/core/ycr1_clk_ctrl.sv  \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/core/ycr1_scu.sv  \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/core/ycr1_tapc.sv  \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/core/ycr1_tapc_shift_reg.sv  \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/core/ycr1_dmi.sv  \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/core/primitives/ycr1_reset_cells.sv  \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/core/pipeline/ycr1_pipe_ifu.sv  \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/core/pipeline/ycr1_pipe_idu.sv  \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/core/pipeline/ycr1_pipe_exu.sv  \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/core/pipeline/ycr1_pipe_mprf.sv  \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/core/pipeline/ycr1_pipe_csr.sv  \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/core/pipeline/ycr1_pipe_ialu.sv  \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/core/pipeline/ycr1_pipe_mul.sv  \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/core/pipeline/ycr1_pipe_div.sv  \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/core/pipeline/ycr1_pipe_lsu.sv  \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/core/pipeline/ycr1_pipe_hdu.sv  \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/core/pipeline/ycr1_pipe_tdu.sv  \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/core/pipeline/ycr1_ipic.sv   \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/top/ycr1_dmem_router.sv   \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/top/ycr1_imem_router.sv   \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/top/ycr1_tcm.sv   \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/top/ycr1_timer.sv   \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/top/ycr1_top_wb.sv   \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/top/ycr1_dmem_wb.sv   \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/top/ycr1_imem_wb.sv   \
-	$script_dir/../../verilog/rtl/yifive/ycr1/src/top/ycr1_intf.sv   \
-	$script_dir/../../verilog/rtl/lib/async_fifo.sv "
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr1_pipe_top.sv  \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/ycr1_core_top.sv  \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/ycr1_dm.sv  \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/ycr1_tapc_synchronizer.sv  \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/ycr1_clk_ctrl.sv  \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/ycr1_scu.sv  \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/ycr1_tapc.sv  \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/ycr1_tapc_shift_reg.sv  \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/ycr1_dmi.sv  \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/primitives/ycr1_reset_cells.sv  \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr1_pipe_ifu.sv  \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr1_pipe_idu.sv  \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr1_pipe_exu.sv  \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr1_pipe_mprf.sv  \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr1_pipe_csr.sv  \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr1_pipe_ialu.sv  \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr1_pipe_mul.sv  \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr1_pipe_div.sv  \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr1_pipe_lsu.sv  \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr1_pipe_hdu.sv  \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr1_pipe_tdu.sv  \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr1_ipic.sv   \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/top/ycr1_dmem_router.sv   \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/top/ycr1_imem_router.sv   \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/top/ycr1_icache_router.sv \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/top/ycr1_dcache_router.sv \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/top/ycr1_tcm.sv   \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/top/ycr1_timer.sv   \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/top/ycr1_top_wb.sv   \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/top/ycr1_dmem_wb.sv   \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/top/ycr1_imem_wb.sv   \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/top/ycr1_intf.sv   \
+        $script_dir/../../verilog/rtl/yifive/ycr1c/src/cache/src/core/icache_top.sv             \
+        $script_dir/../../verilog/rtl/yifive/ycr1c/src/cache/src/core/icache_app_fsm.sv         \
+        $script_dir/../../verilog/rtl/yifive/ycr1c/src/cache/src/core/icache_tag_fifo.sv        \
+        $script_dir/../../verilog/rtl/yifive/ycr1c/src/cache/src/core/dcache_tag_fifo.sv        \
+        $script_dir/../../verilog/rtl/yifive/ycr1c/src/cache/src/core/dcache_top.sv             \
+        $script_dir/../../verilog/rtl/yifive/ycr1c/src/lib/ycr1_async_wbb.sv                    \
+        $script_dir/../../verilog/rtl/yifive/ycr1c/src/lib/ycr1_arb.sv                          \
+        $script_dir/../../verilog/rtl/yifive/ycr1c/src/lib/sync_fifo.sv                         \
+        $script_dir/../../verilog/rtl/yifive/ycr1c/src/lib/async_fifo.sv                        \
+        $script_dir/../../verilog/rtl/yifive/ycr1c/src/lib/ctech_cells.sv                       \
+	"
 
-set ::env(VERILOG_INCLUDE_DIRS) [glob $script_dir/../../verilog/rtl/yifive/ycr1/src/includes ]
+set ::env(VERILOG_INCLUDE_DIRS) [glob $script_dir/../../verilog/rtl/yifive/ycr1c/src/includes ]
 set ::env(SYNTH_READ_BLACKBOX_LIB) 1
 set ::env(SYNTH_DEFINES) [list SYNTHESIS ]
 
@@ -94,7 +106,7 @@
 set ::env(FP_PIN_ORDER_CFG) $::env(DESIGN_DIR)/pin_order.cfg
 
 set ::env(FP_SIZING) absolute
-set ::env(DIE_AREA) [list 0.0 0.0 1520.0 520.0]
+set ::env(DIE_AREA) [list 0.0 0.0 750.0 1450.0]
 
 
 # If you're going to use multiple power domains, then keep this disabled.
@@ -104,7 +116,8 @@
 
 
 set ::env(PL_TIME_DRIVEN) 1
-set ::env(PL_TARGET_DENSITY) "0.32"
+set ::env(PL_TARGET_DENSITY) "0.40"
+set ::env(FP_CORE_UTIL) "50"
 
 # helps in anteena fix
 set ::env(USE_ARC_ANTENNA_CHECK) "0"
@@ -117,7 +130,7 @@
 set ::env(FP_PDN_VWIDTH) 3
 set ::env(FP_PDN_HWIDTH) 3
 
-set ::env(GLB_RT_MAXLAYER) 5
+set ::env(GLB_RT_MAXLAYER) 6
 set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10
 set ::env(DIODE_INSERTION_STRATEGY) 4
 
diff --git a/openlane/yifive/pin_order.cfg b/openlane/yifive/pin_order.cfg
index d9738fe..e168c5f 100644
--- a/openlane/yifive/pin_order.cfg
+++ b/openlane/yifive/pin_order.cfg
@@ -4,7 +4,7 @@
 
 
 #E
-soft_irq            0000 0 2
+soft_irq            0500 0 2
 irq_lines\[15\]     
 irq_lines\[14\]     
 irq_lines\[13\]     
@@ -63,219 +63,583 @@
 wb_clk            
 
 
-wbd_imem_stb_o          0200 0
-wbd_imem_we_o           
-wbd_imem_adr_o\[31\]    
-wbd_imem_adr_o\[30\]    
-wbd_imem_adr_o\[29\]    
-wbd_imem_adr_o\[28\]    
-wbd_imem_adr_o\[27\]    
-wbd_imem_adr_o\[26\]    
-wbd_imem_adr_o\[25\]    
-wbd_imem_adr_o\[24\]    
-wbd_imem_adr_o\[23\]    
-wbd_imem_adr_o\[22\]    
-wbd_imem_adr_o\[21\]    
-wbd_imem_adr_o\[20\]    
-wbd_imem_adr_o\[19\]    
-wbd_imem_adr_o\[18\]    
-wbd_imem_adr_o\[17\]    
-wbd_imem_adr_o\[16\]    
-wbd_imem_adr_o\[15\]    
-wbd_imem_adr_o\[14\]    
-wbd_imem_adr_o\[13\]    
-wbd_imem_adr_o\[12\]    
-wbd_imem_adr_o\[11\]    
-wbd_imem_adr_o\[10\]   
-wbd_imem_adr_o\[9\]    
-wbd_imem_adr_o\[8\]    
-wbd_imem_adr_o\[7\]    
-wbd_imem_adr_o\[6\]    
-wbd_imem_adr_o\[5\]    
-wbd_imem_adr_o\[4\]    
-wbd_imem_adr_o\[3\]    
-wbd_imem_adr_o\[2\]    
-wbd_imem_adr_o\[1\]    
-wbd_imem_adr_o\[0\]    
-wbd_imem_sel_o\[3\]    
-wbd_imem_sel_o\[2\]    
-wbd_imem_sel_o\[1\]    
-wbd_imem_sel_o\[0\]    
-wbd_imem_dat_o\[31\]   
-wbd_imem_dat_o\[30\]   
-wbd_imem_dat_o\[29\]   
-wbd_imem_dat_o\[28\]   
-wbd_imem_dat_o\[27\]   
-wbd_imem_dat_o\[26\]   
-wbd_imem_dat_o\[25\]   
-wbd_imem_dat_o\[24\]   
-wbd_imem_dat_o\[23\]   
-wbd_imem_dat_o\[22\]   
-wbd_imem_dat_o\[21\]   
-wbd_imem_dat_o\[20\]   
-wbd_imem_dat_o\[19\]   
-wbd_imem_dat_o\[18\]   
-wbd_imem_dat_o\[17\]   
-wbd_imem_dat_o\[16\]   
-wbd_imem_dat_o\[15\]   
-wbd_imem_dat_o\[14\]   
-wbd_imem_dat_o\[13\]   
-wbd_imem_dat_o\[12\]  
-wbd_imem_dat_o\[11\]  
-wbd_imem_dat_o\[10\]  
-wbd_imem_dat_o\[9\]   
-wbd_imem_dat_o\[8\]   
-wbd_imem_dat_o\[7\]   
-wbd_imem_dat_o\[6\]   
-wbd_imem_dat_o\[5\]   
-wbd_imem_dat_o\[4\]   
-wbd_imem_dat_o\[3\]   
-wbd_imem_dat_o\[2\]   
-wbd_imem_dat_o\[1\]   
-wbd_imem_dat_o\[0\]   
-wbd_imem_dat_i\[31\]  
-wbd_imem_dat_i\[30\]  
-wbd_imem_dat_i\[29\]  
-wbd_imem_dat_i\[28\]  
-wbd_imem_dat_i\[27\]  
-wbd_imem_dat_i\[26\]  
-wbd_imem_dat_i\[25\]  
-wbd_imem_dat_i\[24\]  
-wbd_imem_dat_i\[23\]  
-wbd_imem_dat_i\[22\]  
-wbd_imem_dat_i\[21\]  
-wbd_imem_dat_i\[20\]  
-wbd_imem_dat_i\[19\]  
-wbd_imem_dat_i\[18\]  
-wbd_imem_dat_i\[17\]  
-wbd_imem_dat_i\[16\]  
-wbd_imem_dat_i\[15\]  
-wbd_imem_dat_i\[14\]  
-wbd_imem_dat_i\[13\]  
-wbd_imem_dat_i\[12\]  
-wbd_imem_dat_i\[11\]  
-wbd_imem_dat_i\[10\]  
-wbd_imem_dat_i\[9\]  
-wbd_imem_dat_i\[8\]  
-wbd_imem_dat_i\[7\]  
-wbd_imem_dat_i\[6\]  
-wbd_imem_dat_i\[5\]  
-wbd_imem_dat_i\[4\]  
-wbd_imem_dat_i\[3\]  
-wbd_imem_dat_i\[2\]  
-wbd_imem_dat_i\[1\]  
-wbd_imem_dat_i\[0\]  
-wbd_imem_ack_i       
-wbd_imem_err_i       
+wbd_dmem_stb_o          0700 0
+wbd_dmem_we_o           
+wbd_dmem_adr_o\[31\]    
+wbd_dmem_adr_o\[30\]    
+wbd_dmem_adr_o\[29\]    
+wbd_dmem_adr_o\[28\]    
+wbd_dmem_adr_o\[27\]    
+wbd_dmem_adr_o\[26\]    
+wbd_dmem_adr_o\[25\]    
+wbd_dmem_adr_o\[24\]    
+wbd_dmem_adr_o\[23\]    
+wbd_dmem_adr_o\[22\]    
+wbd_dmem_adr_o\[21\]    
+wbd_dmem_adr_o\[20\]    
+wbd_dmem_adr_o\[19\]    
+wbd_dmem_adr_o\[18\]    
+wbd_dmem_adr_o\[17\]    
+wbd_dmem_adr_o\[16\]    
+wbd_dmem_adr_o\[15\]    
+wbd_dmem_adr_o\[14\]    
+wbd_dmem_adr_o\[13\]    
+wbd_dmem_adr_o\[12\]    
+wbd_dmem_adr_o\[11\]    
+wbd_dmem_adr_o\[10\]   
+wbd_dmem_adr_o\[9\]    
+wbd_dmem_adr_o\[8\]    
+wbd_dmem_adr_o\[7\]    
+wbd_dmem_adr_o\[6\]    
+wbd_dmem_adr_o\[5\]    
+wbd_dmem_adr_o\[4\]    
+wbd_dmem_adr_o\[3\]    
+wbd_dmem_adr_o\[2\]    
+wbd_dmem_adr_o\[1\]    
+wbd_dmem_adr_o\[0\]    
+wbd_dmem_sel_o\[3\]    
+wbd_dmem_sel_o\[2\]    
+wbd_dmem_sel_o\[1\]    
+wbd_dmem_sel_o\[0\]    
+wbd_dmem_dat_o\[31\]   
+wbd_dmem_dat_o\[30\]   
+wbd_dmem_dat_o\[29\]   
+wbd_dmem_dat_o\[28\]   
+wbd_dmem_dat_o\[27\]   
+wbd_dmem_dat_o\[26\]   
+wbd_dmem_dat_o\[25\]   
+wbd_dmem_dat_o\[24\]   
+wbd_dmem_dat_o\[23\]   
+wbd_dmem_dat_o\[22\]   
+wbd_dmem_dat_o\[21\]   
+wbd_dmem_dat_o\[20\]   
+wbd_dmem_dat_o\[19\]   
+wbd_dmem_dat_o\[18\]   
+wbd_dmem_dat_o\[17\]   
+wbd_dmem_dat_o\[16\]   
+wbd_dmem_dat_o\[15\]   
+wbd_dmem_dat_o\[14\]   
+wbd_dmem_dat_o\[13\]   
+wbd_dmem_dat_o\[12\]  
+wbd_dmem_dat_o\[11\]  
+wbd_dmem_dat_o\[10\]  
+wbd_dmem_dat_o\[9\]   
+wbd_dmem_dat_o\[8\]   
+wbd_dmem_dat_o\[7\]   
+wbd_dmem_dat_o\[6\]   
+wbd_dmem_dat_o\[5\]   
+wbd_dmem_dat_o\[4\]   
+wbd_dmem_dat_o\[3\]   
+wbd_dmem_dat_o\[2\]   
+wbd_dmem_dat_o\[1\]   
+wbd_dmem_dat_o\[0\]   
+wbd_dmem_dat_i\[31\]  
+wbd_dmem_dat_i\[30\]  
+wbd_dmem_dat_i\[29\]  
+wbd_dmem_dat_i\[28\]  
+wbd_dmem_dat_i\[27\]  
+wbd_dmem_dat_i\[26\]  
+wbd_dmem_dat_i\[25\]  
+wbd_dmem_dat_i\[24\]  
+wbd_dmem_dat_i\[23\]  
+wbd_dmem_dat_i\[22\]  
+wbd_dmem_dat_i\[21\]  
+wbd_dmem_dat_i\[20\]  
+wbd_dmem_dat_i\[19\]  
+wbd_dmem_dat_i\[18\]  
+wbd_dmem_dat_i\[17\]  
+wbd_dmem_dat_i\[16\]  
+wbd_dmem_dat_i\[15\]  
+wbd_dmem_dat_i\[14\]  
+wbd_dmem_dat_i\[13\]  
+wbd_dmem_dat_i\[12\]  
+wbd_dmem_dat_i\[11\]  
+wbd_dmem_dat_i\[10\]  
+wbd_dmem_dat_i\[9\]  
+wbd_dmem_dat_i\[8\]  
+wbd_dmem_dat_i\[7\]  
+wbd_dmem_dat_i\[6\]  
+wbd_dmem_dat_i\[5\]  
+wbd_dmem_dat_i\[4\]  
+wbd_dmem_dat_i\[3\]  
+wbd_dmem_dat_i\[2\]  
+wbd_dmem_dat_i\[1\]  
+wbd_dmem_dat_i\[0\]  
+wbd_dmem_ack_i       
+wbd_dmem_err_i       
 
-wbd_dmem_stb_o       0350 0  2
-wbd_dmem_we_o        
-wbd_dmem_adr_o\[31\] 
-wbd_dmem_adr_o\[30\] 
-wbd_dmem_adr_o\[29\] 
-wbd_dmem_adr_o\[28\] 
-wbd_dmem_adr_o\[27\] 
-wbd_dmem_adr_o\[26\] 
-wbd_dmem_adr_o\[25\] 
-wbd_dmem_adr_o\[24\] 
-wbd_dmem_adr_o\[23\] 
-wbd_dmem_adr_o\[22\] 
-wbd_dmem_adr_o\[21\] 
-wbd_dmem_adr_o\[20\] 
-wbd_dmem_adr_o\[19\] 
-wbd_dmem_adr_o\[18\] 
-wbd_dmem_adr_o\[17\] 
-wbd_dmem_adr_o\[16\] 
-wbd_dmem_adr_o\[15\] 
-wbd_dmem_adr_o\[14\] 
-wbd_dmem_adr_o\[13\] 
-wbd_dmem_adr_o\[12\] 
-wbd_dmem_adr_o\[11\] 
-wbd_dmem_adr_o\[10\] 
-wbd_dmem_adr_o\[9\] 
-wbd_dmem_adr_o\[8\] 
-wbd_dmem_adr_o\[7\] 
-wbd_dmem_adr_o\[6\] 
-wbd_dmem_adr_o\[5\] 
-wbd_dmem_adr_o\[4\] 
-wbd_dmem_adr_o\[3\] 
-wbd_dmem_adr_o\[2\] 
-wbd_dmem_adr_o\[1\] 
-wbd_dmem_adr_o\[0\] 
-wbd_dmem_sel_o\[3\]  
-wbd_dmem_sel_o\[2\]  
-wbd_dmem_sel_o\[1\]  
-wbd_dmem_sel_o\[0\]  
-wbd_dmem_dat_o\[31\] 
-wbd_dmem_dat_o\[30\] 
-wbd_dmem_dat_o\[29\] 
-wbd_dmem_dat_o\[28\] 
-wbd_dmem_dat_o\[27\] 
-wbd_dmem_dat_o\[26\] 
-wbd_dmem_dat_o\[25\] 
-wbd_dmem_dat_o\[24\] 
-wbd_dmem_dat_o\[23\] 
-wbd_dmem_dat_o\[22\] 
-wbd_dmem_dat_o\[21\] 
-wbd_dmem_dat_o\[20\] 
-wbd_dmem_dat_o\[19\] 
-wbd_dmem_dat_o\[18\] 
-wbd_dmem_dat_o\[17\] 
-wbd_dmem_dat_o\[16\] 
-wbd_dmem_dat_o\[15\] 
-wbd_dmem_dat_o\[14\] 
-wbd_dmem_dat_o\[13\] 
-wbd_dmem_dat_o\[12\] 
-wbd_dmem_dat_o\[11\] 
-wbd_dmem_dat_o\[10\] 
-wbd_dmem_dat_o\[9\]  
-wbd_dmem_dat_o\[8\]  
-wbd_dmem_dat_o\[7\]  
-wbd_dmem_dat_o\[6\]  
-wbd_dmem_dat_o\[5\]  
-wbd_dmem_dat_o\[4\]  
-wbd_dmem_dat_o\[3\]  
-wbd_dmem_dat_o\[2\]  
-wbd_dmem_dat_o\[1\]  
-wbd_dmem_dat_o\[0\]  
-wbd_dmem_dat_i\[31\] 
-wbd_dmem_dat_i\[30\] 
-wbd_dmem_dat_i\[29\] 
-wbd_dmem_dat_i\[28\] 
-wbd_dmem_dat_i\[27\] 
-wbd_dmem_dat_i\[26\] 
-wbd_dmem_dat_i\[25\] 
-wbd_dmem_dat_i\[24\] 
-wbd_dmem_dat_i\[23\] 
-wbd_dmem_dat_i\[22\] 
-wbd_dmem_dat_i\[21\] 
-wbd_dmem_dat_i\[20\] 
-wbd_dmem_dat_i\[19\] 
-wbd_dmem_dat_i\[18\] 
-wbd_dmem_dat_i\[17\] 
-wbd_dmem_dat_i\[16\] 
-wbd_dmem_dat_i\[15\] 
-wbd_dmem_dat_i\[14\] 
-wbd_dmem_dat_i\[13\] 
-wbd_dmem_dat_i\[12\] 
-wbd_dmem_dat_i\[11\] 
-wbd_dmem_dat_i\[10\] 
-wbd_dmem_dat_i\[9\] 
-wbd_dmem_dat_i\[8\] 
-wbd_dmem_dat_i\[7\] 
-wbd_dmem_dat_i\[6\] 
-wbd_dmem_dat_i\[5\] 
-wbd_dmem_dat_i\[4\] 
-wbd_dmem_dat_i\[3\] 
-wbd_dmem_dat_i\[2\] 
-wbd_dmem_dat_i\[1\] 
-wbd_dmem_dat_i\[0\] 
-wbd_dmem_ack_i      
-wbd_dmem_err_i      
+wb_dcache_stb_o       0900 0  2
+wb_dcache_we_o        
+wb_dcache_adr_o\[31\] 
+wb_dcache_adr_o\[30\] 
+wb_dcache_adr_o\[29\] 
+wb_dcache_adr_o\[28\] 
+wb_dcache_adr_o\[27\] 
+wb_dcache_adr_o\[26\] 
+wb_dcache_adr_o\[25\] 
+wb_dcache_adr_o\[24\] 
+wb_dcache_adr_o\[23\] 
+wb_dcache_adr_o\[22\] 
+wb_dcache_adr_o\[21\] 
+wb_dcache_adr_o\[20\] 
+wb_dcache_adr_o\[19\] 
+wb_dcache_adr_o\[18\] 
+wb_dcache_adr_o\[17\] 
+wb_dcache_adr_o\[16\] 
+wb_dcache_adr_o\[15\] 
+wb_dcache_adr_o\[14\] 
+wb_dcache_adr_o\[13\] 
+wb_dcache_adr_o\[12\] 
+wb_dcache_adr_o\[11\] 
+wb_dcache_adr_o\[10\] 
+wb_dcache_adr_o\[9\] 
+wb_dcache_adr_o\[8\] 
+wb_dcache_adr_o\[7\] 
+wb_dcache_adr_o\[6\] 
+wb_dcache_adr_o\[5\] 
+wb_dcache_adr_o\[4\] 
+wb_dcache_adr_o\[3\] 
+wb_dcache_adr_o\[2\] 
+wb_dcache_adr_o\[1\] 
+wb_dcache_adr_o\[0\] 
+wb_dcache_sel_o\[3\]  
+wb_dcache_sel_o\[2\]  
+wb_dcache_sel_o\[1\]  
+wb_dcache_sel_o\[0\]  
+wb_dcache_bl_o\[9\]  
+wb_dcache_bl_o\[8\]  
+wb_dcache_bl_o\[7\]  
+wb_dcache_bl_o\[6\]  
+wb_dcache_bl_o\[5\]  
+wb_dcache_bl_o\[4\]  
+wb_dcache_bl_o\[3\]  
+wb_dcache_bl_o\[2\]  
+wb_dcache_bl_o\[1\]  
+wb_dcache_bl_o\[0\]  
+wb_dcache_bry_o
+wb_dcache_dat_o\[31\] 
+wb_dcache_dat_o\[30\] 
+wb_dcache_dat_o\[29\] 
+wb_dcache_dat_o\[28\] 
+wb_dcache_dat_o\[27\] 
+wb_dcache_dat_o\[26\] 
+wb_dcache_dat_o\[25\] 
+wb_dcache_dat_o\[24\] 
+wb_dcache_dat_o\[23\] 
+wb_dcache_dat_o\[22\] 
+wb_dcache_dat_o\[21\] 
+wb_dcache_dat_o\[20\] 
+wb_dcache_dat_o\[19\] 
+wb_dcache_dat_o\[18\] 
+wb_dcache_dat_o\[17\] 
+wb_dcache_dat_o\[16\] 
+wb_dcache_dat_o\[15\] 
+wb_dcache_dat_o\[14\] 
+wb_dcache_dat_o\[13\] 
+wb_dcache_dat_o\[12\] 
+wb_dcache_dat_o\[11\] 
+wb_dcache_dat_o\[10\] 
+wb_dcache_dat_o\[9\]  
+wb_dcache_dat_o\[8\]  
+wb_dcache_dat_o\[7\]  
+wb_dcache_dat_o\[6\]  
+wb_dcache_dat_o\[5\]  
+wb_dcache_dat_o\[4\]  
+wb_dcache_dat_o\[3\]  
+wb_dcache_dat_o\[2\]  
+wb_dcache_dat_o\[1\]  
+wb_dcache_dat_o\[0\]  
+wb_dcache_dat_i\[31\] 
+wb_dcache_dat_i\[30\] 
+wb_dcache_dat_i\[29\] 
+wb_dcache_dat_i\[28\] 
+wb_dcache_dat_i\[27\] 
+wb_dcache_dat_i\[26\] 
+wb_dcache_dat_i\[25\] 
+wb_dcache_dat_i\[24\] 
+wb_dcache_dat_i\[23\] 
+wb_dcache_dat_i\[22\] 
+wb_dcache_dat_i\[21\] 
+wb_dcache_dat_i\[20\] 
+wb_dcache_dat_i\[19\] 
+wb_dcache_dat_i\[18\] 
+wb_dcache_dat_i\[17\] 
+wb_dcache_dat_i\[16\] 
+wb_dcache_dat_i\[15\] 
+wb_dcache_dat_i\[14\] 
+wb_dcache_dat_i\[13\] 
+wb_dcache_dat_i\[12\] 
+wb_dcache_dat_i\[11\] 
+wb_dcache_dat_i\[10\] 
+wb_dcache_dat_i\[9\] 
+wb_dcache_dat_i\[8\] 
+wb_dcache_dat_i\[7\] 
+wb_dcache_dat_i\[6\] 
+wb_dcache_dat_i\[5\] 
+wb_dcache_dat_i\[4\] 
+wb_dcache_dat_i\[3\] 
+wb_dcache_dat_i\[2\] 
+wb_dcache_dat_i\[1\] 
+wb_dcache_dat_i\[0\] 
+wb_dcache_ack_i      
+wb_dcache_lack_i      
+wb_dcache_err_i      
+
+wb_icache_stb_o       1100 0  2
+wb_icache_we_o        
+wb_icache_adr_o\[31\] 
+wb_icache_adr_o\[30\] 
+wb_icache_adr_o\[29\] 
+wb_icache_adr_o\[28\] 
+wb_icache_adr_o\[27\] 
+wb_icache_adr_o\[26\] 
+wb_icache_adr_o\[25\] 
+wb_icache_adr_o\[24\] 
+wb_icache_adr_o\[23\] 
+wb_icache_adr_o\[22\] 
+wb_icache_adr_o\[21\] 
+wb_icache_adr_o\[20\] 
+wb_icache_adr_o\[19\] 
+wb_icache_adr_o\[18\] 
+wb_icache_adr_o\[17\] 
+wb_icache_adr_o\[16\] 
+wb_icache_adr_o\[15\] 
+wb_icache_adr_o\[14\] 
+wb_icache_adr_o\[13\] 
+wb_icache_adr_o\[12\] 
+wb_icache_adr_o\[11\] 
+wb_icache_adr_o\[10\] 
+wb_icache_adr_o\[9\] 
+wb_icache_adr_o\[8\] 
+wb_icache_adr_o\[7\] 
+wb_icache_adr_o\[6\] 
+wb_icache_adr_o\[5\] 
+wb_icache_adr_o\[4\] 
+wb_icache_adr_o\[3\] 
+wb_icache_adr_o\[2\] 
+wb_icache_adr_o\[1\] 
+wb_icache_adr_o\[0\] 
+wb_icache_sel_o\[3\]  
+wb_icache_sel_o\[2\]  
+wb_icache_sel_o\[1\]  
+wb_icache_sel_o\[0\]  
+wb_icache_bl_o\[9\]  
+wb_icache_bl_o\[8\]  
+wb_icache_bl_o\[7\]  
+wb_icache_bl_o\[6\]  
+wb_icache_bl_o\[5\]  
+wb_icache_bl_o\[4\]  
+wb_icache_bl_o\[3\]  
+wb_icache_bl_o\[2\]  
+wb_icache_bl_o\[1\]  
+wb_icache_bl_o\[0\]  
+wb_icache_bry_o
+wb_icache_dat_i\[31\] 
+wb_icache_dat_i\[30\] 
+wb_icache_dat_i\[29\] 
+wb_icache_dat_i\[28\] 
+wb_icache_dat_i\[27\] 
+wb_icache_dat_i\[26\] 
+wb_icache_dat_i\[25\] 
+wb_icache_dat_i\[24\] 
+wb_icache_dat_i\[23\] 
+wb_icache_dat_i\[22\] 
+wb_icache_dat_i\[21\] 
+wb_icache_dat_i\[20\] 
+wb_icache_dat_i\[19\] 
+wb_icache_dat_i\[18\] 
+wb_icache_dat_i\[17\] 
+wb_icache_dat_i\[16\] 
+wb_icache_dat_i\[15\] 
+wb_icache_dat_i\[14\] 
+wb_icache_dat_i\[13\] 
+wb_icache_dat_i\[12\] 
+wb_icache_dat_i\[11\] 
+wb_icache_dat_i\[10\] 
+wb_icache_dat_i\[9\] 
+wb_icache_dat_i\[8\] 
+wb_icache_dat_i\[7\] 
+wb_icache_dat_i\[6\] 
+wb_icache_dat_i\[5\] 
+wb_icache_dat_i\[4\] 
+wb_icache_dat_i\[3\] 
+wb_icache_dat_i\[2\] 
+wb_icache_dat_i\[1\] 
+wb_icache_dat_i\[0\] 
+wb_icache_ack_i      
+wb_icache_lack_i      
+wb_icache_err_i      
+
+#W
+sram0_clk1          0000 0 2
+sram0_csb1
+sram0_addr1\[8\]
+sram0_addr1\[7\]
+sram0_addr1\[6\]
+sram0_addr1\[5\]
+sram0_addr1\[4\]
+sram0_addr1\[3\]
+sram0_addr1\[2\]
+sram0_addr1\[1\]
+sram0_addr1\[0\]
+
+sram0_dout1\[0\]     0200 0 2
+sram0_dout1\[1\]
+sram0_dout1\[2\]
+sram0_dout1\[3\]
+sram0_dout1\[4\]
+sram0_dout1\[5\]
+sram0_dout1\[6\]
+sram0_dout1\[7\]
+sram0_dout1\[8\]
+sram0_dout1\[9\]
+sram0_dout1\[10\]
+sram0_dout1\[11\]
+sram0_dout1\[12\]
+sram0_dout1\[13\]
+sram0_dout1\[14\]
+sram0_dout1\[15\]
+sram0_dout1\[16\]
+sram0_dout1\[17\]
+sram0_dout1\[18\]
+sram0_dout1\[19\]
+sram0_dout1\[20\]
+sram0_dout1\[21\]
+sram0_dout1\[22\]
+sram0_dout1\[23\]
+sram0_dout1\[24\]
+sram0_dout1\[25\]
+sram0_dout1\[26\]
+sram0_dout1\[27\]
+sram0_dout1\[28\]
+sram0_dout1\[29\]
+sram0_dout1\[30\]
+sram0_dout1\[31\]
+
+icache_mem_clk0          300 0 2
+icache_mem_csb0
+icache_mem_web0
+icache_mem_addr0\[0\]
+icache_mem_addr0\[1\]
+icache_mem_addr0\[2\]
+icache_mem_addr0\[3\]
+icache_mem_addr0\[4\]
+icache_mem_addr0\[5\]
+icache_mem_addr0\[6\]
+icache_mem_addr0\[7\]
+icache_mem_addr0\[8\]
+icache_mem_wmask0\[0\]
+icache_mem_wmask0\[1\]
+icache_mem_wmask0\[2\]
+icache_mem_wmask0\[3\]
+icache_mem_din0\[0\]
+icache_mem_din0\[1\]
+icache_mem_din0\[2\]
+icache_mem_din0\[3\]
+icache_mem_din0\[4\]
+icache_mem_din0\[5\]
+icache_mem_din0\[6\]
+icache_mem_din0\[7\]
+icache_mem_din0\[8\]
+icache_mem_din0\[9\]
+icache_mem_din0\[10\]
+icache_mem_din0\[11\]
+icache_mem_din0\[12\]
+icache_mem_din0\[13\]
+icache_mem_din0\[14\]
+icache_mem_din0\[15\]
+icache_mem_din0\[16\]
+icache_mem_din0\[17\]
+icache_mem_din0\[18\]
+icache_mem_din0\[19\]
+icache_mem_din0\[20\]
+icache_mem_din0\[21\]
+icache_mem_din0\[22\]
+icache_mem_din0\[23\]
+icache_mem_din0\[24\]
+icache_mem_din0\[25\]
+icache_mem_din0\[26\]
+icache_mem_din0\[27\]
+icache_mem_din0\[28\]
+icache_mem_din0\[29\]
+icache_mem_din0\[30\]
+icache_mem_din0\[31\]
+
+icache_mem_clk1          0400 0 2
+icache_mem_csb1
+icache_mem_addr1\[8\]
+icache_mem_addr1\[7\]
+icache_mem_addr1\[6\]
+icache_mem_addr1\[5\]
+icache_mem_addr1\[4\]
+icache_mem_addr1\[3\]
+icache_mem_addr1\[2\]
+icache_mem_addr1\[1\]
+icache_mem_addr1\[0\]
+
+icache_mem_dout1\[0\]     0450 0 2
+icache_mem_dout1\[1\]
+icache_mem_dout1\[2\]
+icache_mem_dout1\[3\]
+icache_mem_dout1\[4\]
+icache_mem_dout1\[5\]
+icache_mem_dout1\[6\]
+icache_mem_dout1\[7\]
+icache_mem_dout1\[8\]
+icache_mem_dout1\[9\]
+icache_mem_dout1\[10\]
+icache_mem_dout1\[11\]
+icache_mem_dout1\[12\]
+icache_mem_dout1\[13\]
+icache_mem_dout1\[14\]
+icache_mem_dout1\[15\]
+icache_mem_dout1\[16\]
+icache_mem_dout1\[17\]
+icache_mem_dout1\[18\]
+icache_mem_dout1\[19\]
+icache_mem_dout1\[20\]
+icache_mem_dout1\[21\]
+icache_mem_dout1\[22\]
+icache_mem_dout1\[23\]
+icache_mem_dout1\[24\]
+icache_mem_dout1\[25\]
+icache_mem_dout1\[26\]
+icache_mem_dout1\[27\]
+icache_mem_dout1\[28\]
+icache_mem_dout1\[29\]
+icache_mem_dout1\[30\]
+icache_mem_dout1\[31\]
+
+dcache_mem_clk0            850 0 2
+dcache_mem_csb0
+dcache_mem_web0
+dcache_mem_addr0\[0\]
+dcache_mem_addr0\[1\]
+dcache_mem_addr0\[2\]
+dcache_mem_addr0\[3\]
+dcache_mem_addr0\[4\]
+dcache_mem_addr0\[5\]
+dcache_mem_addr0\[6\]
+dcache_mem_addr0\[7\]
+dcache_mem_addr0\[8\]
+dcache_mem_wmask0\[0\]
+dcache_mem_wmask0\[1\]
+dcache_mem_wmask0\[2\]
+dcache_mem_wmask0\[3\]
+dcache_mem_din0\[0\]
+dcache_mem_din0\[1\]
+dcache_mem_din0\[2\]
+dcache_mem_din0\[3\]
+dcache_mem_din0\[4\]
+dcache_mem_din0\[5\]
+dcache_mem_din0\[6\]
+dcache_mem_din0\[7\]
+dcache_mem_din0\[8\]
+dcache_mem_din0\[9\]
+dcache_mem_din0\[10\]
+dcache_mem_din0\[11\]
+dcache_mem_din0\[12\]
+dcache_mem_din0\[13\]
+dcache_mem_din0\[14\]
+dcache_mem_din0\[15\]
+dcache_mem_din0\[16\]
+dcache_mem_din0\[17\]
+dcache_mem_din0\[18\]
+dcache_mem_din0\[19\]
+dcache_mem_din0\[20\]
+dcache_mem_din0\[21\]
+dcache_mem_din0\[22\]
+dcache_mem_din0\[23\]
+dcache_mem_din0\[24\]
+dcache_mem_din0\[25\]
+dcache_mem_din0\[26\]
+dcache_mem_din0\[27\]
+dcache_mem_din0\[28\]
+dcache_mem_din0\[29\]
+dcache_mem_din0\[30\]
+dcache_mem_din0\[31\]
 
 
-#N
-sram0_clk0                    250 0 2
+dcache_mem_dout0\[0\]   950 0 2
+dcache_mem_dout0\[1\]
+dcache_mem_dout0\[2\]
+dcache_mem_dout0\[3\]
+dcache_mem_dout0\[4\]
+dcache_mem_dout0\[5\]
+dcache_mem_dout0\[6\]
+dcache_mem_dout0\[7\]
+dcache_mem_dout0\[8\]
+dcache_mem_dout0\[9\]
+dcache_mem_dout0\[10\]
+dcache_mem_dout0\[11\]
+dcache_mem_dout0\[12\]
+dcache_mem_dout0\[13\]
+dcache_mem_dout0\[14\]
+dcache_mem_dout0\[15\]
+dcache_mem_dout0\[16\]
+dcache_mem_dout0\[17\]
+dcache_mem_dout0\[18\]
+dcache_mem_dout0\[19\]
+dcache_mem_dout0\[20\]
+dcache_mem_dout0\[21\]
+dcache_mem_dout0\[22\]
+dcache_mem_dout0\[23\]
+dcache_mem_dout0\[24\]
+dcache_mem_dout0\[25\]
+dcache_mem_dout0\[26\]
+dcache_mem_dout0\[27\]
+dcache_mem_dout0\[28\]
+dcache_mem_dout0\[29\]
+dcache_mem_dout0\[30\]
+dcache_mem_dout0\[31\]
+
+dcache_mem_clk1         1000 0 2
+dcache_mem_csb1
+dcache_mem_addr1\[8\]
+dcache_mem_addr1\[7\]
+dcache_mem_addr1\[6\]
+dcache_mem_addr1\[5\]
+dcache_mem_addr1\[4\]
+dcache_mem_addr1\[3\]
+dcache_mem_addr1\[2\]
+dcache_mem_addr1\[1\]
+dcache_mem_addr1\[0\]
+
+dcache_mem_dout1\[0\]   1050 0 2
+dcache_mem_dout1\[1\]
+dcache_mem_dout1\[2\]
+dcache_mem_dout1\[3\]
+dcache_mem_dout1\[4\]
+dcache_mem_dout1\[5\]
+dcache_mem_dout1\[6\]
+dcache_mem_dout1\[7\]
+dcache_mem_dout1\[8\]
+dcache_mem_dout1\[9\]
+dcache_mem_dout1\[10\]
+dcache_mem_dout1\[11\]
+dcache_mem_dout1\[12\]
+dcache_mem_dout1\[13\]
+dcache_mem_dout1\[14\]
+dcache_mem_dout1\[15\]
+dcache_mem_dout1\[16\]
+dcache_mem_dout1\[17\]
+dcache_mem_dout1\[18\]
+dcache_mem_dout1\[19\]
+dcache_mem_dout1\[20\]
+dcache_mem_dout1\[21\]
+dcache_mem_dout1\[22\]
+dcache_mem_dout1\[23\]
+dcache_mem_dout1\[24\]
+dcache_mem_dout1\[25\]
+dcache_mem_dout1\[26\]
+dcache_mem_dout1\[27\]
+dcache_mem_dout1\[28\]
+dcache_mem_dout1\[29\]
+dcache_mem_dout1\[30\]
+dcache_mem_dout1\[31\]
+
+#S
+sram0_clk0              0 0 2
 sram0_csb0
 sram0_web0
 sram0_addr0\[0\]
@@ -325,7 +689,7 @@
 sram0_din0\[31\]
 
 
-sram0_dout0\[0\]  0350 0 2
+sram0_dout0\[0\]  0100 0 2
 sram0_dout0\[1\]
 sram0_dout0\[2\]
 sram0_dout0\[3\]
@@ -358,184 +722,7 @@
 sram0_dout0\[30\]
 sram0_dout0\[31\]
 
-
-sram0_clk1              0450 0 2
-sram0_csb1
-sram0_addr1\[8\]
-sram0_addr1\[7\]
-sram0_addr1\[6\]
-sram0_addr1\[5\]
-sram0_addr1\[4\]
-sram0_addr1\[3\]
-sram0_addr1\[2\]
-sram0_addr1\[1\]
-sram0_addr1\[0\]
-
-sram0_dout1\[0\]  0550 0 2
-sram0_dout1\[1\]
-sram0_dout1\[2\]
-sram0_dout1\[3\]
-sram0_dout1\[4\]
-sram0_dout1\[5\]
-sram0_dout1\[6\]
-sram0_dout1\[7\]
-sram0_dout1\[8\]
-sram0_dout1\[9\]
-sram0_dout1\[10\]
-sram0_dout1\[11\]
-sram0_dout1\[12\]
-sram0_dout1\[13\]
-sram0_dout1\[14\]
-sram0_dout1\[15\]
-sram0_dout1\[16\]
-sram0_dout1\[17\]
-sram0_dout1\[18\]
-sram0_dout1\[19\]
-sram0_dout1\[20\]
-sram0_dout1\[21\]
-sram0_dout1\[22\]
-sram0_dout1\[23\]
-sram0_dout1\[24\]
-sram0_dout1\[25\]
-sram0_dout1\[26\]
-sram0_dout1\[27\]
-sram0_dout1\[28\]
-sram0_dout1\[29\]
-sram0_dout1\[30\]
-sram0_dout1\[31\]
-
-
-sram1_clk0           1000 0 2
-sram1_csb0    
-sram1_web0    
-sram1_addr0\[0\]
-sram1_addr0\[1\]
-sram1_addr0\[2\]
-sram1_addr0\[3\]
-sram1_addr0\[4\]
-sram1_addr0\[5\]
-sram1_addr0\[6\]
-sram1_addr0\[7\]
-sram1_addr0\[8\]
-sram1_wmask0\[0\]
-sram1_wmask0\[1\]
-sram1_wmask0\[2\]
-sram1_wmask0\[3\]
-sram1_din0\[0\]
-sram1_din0\[1\]
-sram1_din0\[2\]
-sram1_din0\[3\]
-sram1_din0\[4\]
-sram1_din0\[5\]
-sram1_din0\[6\]
-sram1_din0\[7\]
-sram1_din0\[8\]
-sram1_din0\[9\]
-sram1_din0\[10\]
-sram1_din0\[11\]
-sram1_din0\[12\]
-sram1_din0\[13\]
-sram1_din0\[14\]
-sram1_din0\[15\]
-sram1_din0\[16\]
-sram1_din0\[17\]
-sram1_din0\[18\]
-sram1_din0\[19\]
-sram1_din0\[20\]
-sram1_din0\[21\]
-sram1_din0\[22\]
-sram1_din0\[23\]
-sram1_din0\[24\]
-sram1_din0\[25\]
-sram1_din0\[26\]
-sram1_din0\[27\]
-sram1_din0\[28\]
-sram1_din0\[29\]
-sram1_din0\[30\]
-sram1_din0\[31\]
-
-
-sram1_dout0\[0\]  1100 0 2
-sram1_dout0\[1\]
-sram1_dout0\[2\]
-sram1_dout0\[3\]
-sram1_dout0\[4\]
-sram1_dout0\[5\]
-sram1_dout0\[6\]
-sram1_dout0\[7\]
-sram1_dout0\[8\]
-sram1_dout0\[9\]
-sram1_dout0\[10\]
-sram1_dout0\[11\]
-sram1_dout0\[12\]
-sram1_dout0\[13\]
-sram1_dout0\[14\]
-sram1_dout0\[15\]
-sram1_dout0\[16\]
-sram1_dout0\[17\]
-sram1_dout0\[18\]
-sram1_dout0\[19\]
-sram1_dout0\[20\]
-sram1_dout0\[21\]
-sram1_dout0\[22\]
-sram1_dout0\[23\]
-sram1_dout0\[24\]
-sram1_dout0\[25\]
-sram1_dout0\[26\]
-sram1_dout0\[27\]
-sram1_dout0\[28\]
-sram1_dout0\[29\]
-sram1_dout0\[30\]
-sram1_dout0\[31\]
-
-
-sram1_clk1           1200 0 2
-sram1_csb1
-sram1_addr1\[8\]
-sram1_addr1\[7\]
-sram1_addr1\[6\]
-sram1_addr1\[5\]
-sram1_addr1\[4\]
-sram1_addr1\[3\]
-sram1_addr1\[2\]
-sram1_addr1\[1\]
-sram1_addr1\[0\]
-
-sram1_dout1\[0\]  1300 0 2
-sram1_dout1\[1\]
-sram1_dout1\[2\]
-sram1_dout1\[3\]
-sram1_dout1\[4\]
-sram1_dout1\[5\]
-sram1_dout1\[6\]
-sram1_dout1\[7\]
-sram1_dout1\[8\]
-sram1_dout1\[9\]
-sram1_dout1\[10\]
-sram1_dout1\[11\]
-sram1_dout1\[12\]
-sram1_dout1\[13\]
-sram1_dout1\[14\]
-sram1_dout1\[15\]
-sram1_dout1\[16\]
-sram1_dout1\[17\]
-sram1_dout1\[18\]
-sram1_dout1\[19\]
-sram1_dout1\[20\]
-sram1_dout1\[21\]
-sram1_dout1\[22\]
-sram1_dout1\[23\]
-sram1_dout1\[24\]
-sram1_dout1\[25\]
-sram1_dout1\[26\]
-sram1_dout1\[27\]
-sram1_dout1\[28\]
-sram1_dout1\[29\]
-sram1_dout1\[30\]
-sram1_dout1\[31\]
-
-#S
-riscv_debug\[0\]      1000  0 2
+riscv_debug\[0\]      300  0 2
 riscv_debug\[1\]
 riscv_debug\[2\]
 riscv_debug\[3\]
@@ -601,7 +788,7 @@
 riscv_debug\[63\]
 
 
-wb_rst_n          1450 0 2
+wb_rst_n          500 0 2
 pwrup_rst_n       
 rst_n        
 core_clk              
diff --git a/signoff/mbist_wrapper/OPENLANE_VERSION b/signoff/mbist_wrapper/OPENLANE_VERSION
new file mode 100644
index 0000000..80c7664
--- /dev/null
+++ b/signoff/mbist_wrapper/OPENLANE_VERSION
@@ -0,0 +1 @@
+openlane N/A
diff --git a/signoff/mbist_wrapper/PDK_SOURCES b/signoff/mbist_wrapper/PDK_SOURCES
new file mode 100644
index 0000000..ca3684a
--- /dev/null
+++ b/signoff/mbist_wrapper/PDK_SOURCES
@@ -0,0 +1,6 @@
+-ne openlane 
+8d686c081c2c9aefa16dbbd8ccf5bc8f4dcabc4b
+-ne skywater-pdk 
+c094b6e83a4f9298e47f696ec5a7fd53535ec5eb
+-ne open_pdks 
+14db32aa8ba330e88632ff3ad2ff52f4f4dae1ad
diff --git a/signoff/mbist_wrapper/final_summary_report.csv b/signoff/mbist_wrapper/final_summary_report.csv
new file mode 100644
index 0000000..dde27c1
--- /dev/null
+++ b/signoff/mbist_wrapper/final_summary_report.csv
@@ -0,0 +1,2 @@
+,design,design_name,config,flow_status,total_runtime,routed_runtime,(Cell/mm^2)/Core_Util,DIEAREA_mm^2,CellPer_mm^2,OpenDP_Util,Peak_Memory_Usage_MB,cell_count,tritonRoute_violations,Short_violations,MetSpc_violations,OffGrid_violations,MinHole_violations,Other_violations,Magic_violations,antenna_violations,lvs_total_errors,cvc_total_errors,klayout_violations,wire_length,vias,wns,pl_wns,optimized_wns,fastroute_wns,spef_wns,tns,pl_tns,optimized_tns,fastroute_tns,spef_tns,HPWL,routing_layer1_pct,routing_layer2_pct,routing_layer3_pct,routing_layer4_pct,routing_layer5_pct,routing_layer6_pct,wires_count,wire_bits,public_wires_count,public_wire_bits,memories_count,memory_bits,processes_count,cells_pre_abc,AND,DFF,NAND,NOR,OR,XOR,XNOR,MUX,inputs,outputs,level,EndCaps,TapCells,Diodes,Total_Physical_Cells,suggested_clock_frequency,suggested_clock_period,CLOCK_PERIOD,SYNTH_STRATEGY,SYNTH_MAX_FANOUT,FP_CORE_UTIL,FP_ASPECT_RATIO,FP_PDN_VPITCH,FP_PDN_HPITCH,PL_TARGET_DENSITY,GLB_RT_ADJUSTMENT,STD_CELL_LIBRARY,CELL_PAD,DIODE_INSERTION_STRATEGY
+0,/project/openlane/mbist_wrapper,mbist_wrapper,mbist_wrapper,flow_completed,0h4m34s,-1,14342.857142857143,0.315,7171.428571428572,9.9,644.01,2259,0,0,0,0,0,0,-1,2,0,0,-1,167687,24265,-0.67,-5.59,-1,-1.19,-1,-0.67,-2630.72,-1,-1.19,-1,126574452.0,3.03,19.02,3.65,4.89,0.0,-1,1595,5654,730,4741,0,0,0,1483,0,0,0,0,0,0,0,4,737,586,15,138,4082,0,4220,90.9090909090909,11,10,AREA 0,4,50,1,140,140,0.3,0.0,sky130_fd_sc_hd,4,4
diff --git a/signoff/pinmux/final_summary_report.csv b/signoff/pinmux/final_summary_report.csv
index ed3dcac..a88c45c 100644
--- a/signoff/pinmux/final_summary_report.csv
+++ b/signoff/pinmux/final_summary_report.csv
@@ -1,2 +1,2 @@
 ,design,design_name,config,flow_status,total_runtime,routed_runtime,(Cell/mm^2)/Core_Util,DIEAREA_mm^2,CellPer_mm^2,OpenDP_Util,Peak_Memory_Usage_MB,cell_count,tritonRoute_violations,Short_violations,MetSpc_violations,OffGrid_violations,MinHole_violations,Other_violations,Magic_violations,antenna_violations,lvs_total_errors,cvc_total_errors,klayout_violations,wire_length,vias,wns,pl_wns,optimized_wns,fastroute_wns,spef_wns,tns,pl_tns,optimized_tns,fastroute_tns,spef_tns,HPWL,routing_layer1_pct,routing_layer2_pct,routing_layer3_pct,routing_layer4_pct,routing_layer5_pct,routing_layer6_pct,wires_count,wire_bits,public_wires_count,public_wire_bits,memories_count,memory_bits,processes_count,cells_pre_abc,AND,DFF,NAND,NOR,OR,XOR,XNOR,MUX,inputs,outputs,level,EndCaps,TapCells,Diodes,Total_Physical_Cells,suggested_clock_frequency,suggested_clock_period,CLOCK_PERIOD,SYNTH_STRATEGY,SYNTH_MAX_FANOUT,FP_CORE_UTIL,FP_ASPECT_RATIO,FP_PDN_VPITCH,FP_PDN_HPITCH,PL_TARGET_DENSITY,GLB_RT_ADJUSTMENT,STD_CELL_LIBRARY,CELL_PAD,DIODE_INSERTION_STRATEGY
-0,/project/openlane/pinmux,pinmux,pinmux,flow_completed,0h14m33s,-1,46109.09090909091,0.2475,23054.545454545456,27.06,725.12,5706,0,0,0,0,0,0,-1,1,0,-1,-1,429328,61246,0.0,0.0,-1,0.0,-1,0.0,0.0,-1,0.0,-1,317766216.0,6.39,43.04,33.51,11.97,0.39,-1,3574,8561,543,5529,0,0,0,4202,0,0,0,0,0,0,0,4,1343,1339,16,314,3259,0,3573,90.9090909090909,11,10,AREA 0,4,50,1,100,100,0.3,0.0,sky130_fd_sc_hd,4,4
+0,/project/openlane/pinmux,pinmux,pinmux,flow_completed,0h24m9s,-1,46109.09090909091,0.2475,23054.545454545456,27.06,722.6,5706,0,0,0,0,0,0,-1,1,0,-1,-1,429797,61501,0.0,0.0,-1,0.0,-1,0.0,0.0,-1,0.0,-1,317748797.0,6.41,43.62,33.59,11.07,0.27,-1,3574,8561,543,5529,0,0,0,4202,0,0,0,0,0,0,0,4,1343,1339,16,314,3259,0,3573,90.9090909090909,11,10,AREA 0,4,50,1,100,100,0.3,0.0,sky130_fd_sc_hd,4,4
diff --git a/signoff/qspim/final_summary_report.csv b/signoff/qspim/final_summary_report.csv
index 48489c6..e17c115 100644
--- a/signoff/qspim/final_summary_report.csv
+++ b/signoff/qspim/final_summary_report.csv
@@ -1,2 +1,2 @@
 ,design,design_name,config,flow_status,total_runtime,routed_runtime,(Cell/mm^2)/Core_Util,DIEAREA_mm^2,CellPer_mm^2,OpenDP_Util,Peak_Memory_Usage_MB,cell_count,tritonRoute_violations,Short_violations,MetSpc_violations,OffGrid_violations,MinHole_violations,Other_violations,Magic_violations,antenna_violations,lvs_total_errors,cvc_total_errors,klayout_violations,wire_length,vias,wns,pl_wns,optimized_wns,fastroute_wns,spef_wns,tns,pl_tns,optimized_tns,fastroute_tns,spef_tns,HPWL,routing_layer1_pct,routing_layer2_pct,routing_layer3_pct,routing_layer4_pct,routing_layer5_pct,routing_layer6_pct,wires_count,wire_bits,public_wires_count,public_wire_bits,memories_count,memory_bits,processes_count,cells_pre_abc,AND,DFF,NAND,NOR,OR,XOR,XNOR,MUX,inputs,outputs,level,EndCaps,TapCells,Diodes,Total_Physical_Cells,suggested_clock_frequency,suggested_clock_period,CLOCK_PERIOD,SYNTH_STRATEGY,SYNTH_MAX_FANOUT,FP_CORE_UTIL,FP_ASPECT_RATIO,FP_PDN_VPITCH,FP_PDN_HPITCH,PL_TARGET_DENSITY,GLB_RT_ADJUSTMENT,STD_CELL_LIBRARY,CELL_PAD,DIODE_INSERTION_STRATEGY
-0,/project/openlane/qspim,qspim_top,qspim,flow_completed,0h12m38s,-1,69827.27272727272,0.22,34913.63636363636,40.98,754.58,7681,0,0,0,0,0,0,-1,1,0,-1,-1,362731,71425,0.0,-4.04,-1,0.0,-1,0.0,-2134.37,-1,0.0,-1,233420632.0,13.69,38.63,39.31,3.37,1.13,-1,6480,9736,734,3989,0,0,0,7426,0,0,0,0,0,0,0,4,1895,2312,21,388,2940,0,3328,90.9090909090909,11,10,AREA 0,4,50,1,100,100,0.42,0.0,sky130_fd_sc_hd,4,4
+0,/project/openlane/qspim,qspim_top,qspim,flow_completed,0h20m0s,-1,65850.50505050505,0.2475,32925.25252525252,37.63,745.37,8149,0,0,0,0,0,0,-1,1,0,-1,-1,373982,74376,0.0,-4.44,-1,0.0,-1,0.0,-2107.85,-1,0.0,-1,236380045.0,0.0,37.41,33.44,4.51,0.78,-1,7004,10337,741,4073,0,0,0,7930,0,0,0,0,0,0,0,4,1937,2441,22,388,3234,0,3622,90.9090909090909,11,10,AREA 0,4,50,1,100,100,0.42,0.0,sky130_fd_sc_hd,4,4
diff --git a/signoff/user_project_wrapper/final_summary_report.csv b/signoff/user_project_wrapper/final_summary_report.csv
index 221a94b..a82158b 100644
--- a/signoff/user_project_wrapper/final_summary_report.csv
+++ b/signoff/user_project_wrapper/final_summary_report.csv
@@ -1,2 +1,2 @@
 ,design,design_name,config,flow_status,total_runtime,routed_runtime,(Cell/mm^2)/Core_Util,DIEAREA_mm^2,CellPer_mm^2,OpenDP_Util,Peak_Memory_Usage_MB,cell_count,tritonRoute_violations,Short_violations,MetSpc_violations,OffGrid_violations,MinHole_violations,Other_violations,Magic_violations,antenna_violations,lvs_total_errors,cvc_total_errors,klayout_violations,wire_length,vias,wns,pl_wns,optimized_wns,fastroute_wns,spef_wns,tns,pl_tns,optimized_tns,fastroute_tns,spef_tns,HPWL,routing_layer1_pct,routing_layer2_pct,routing_layer3_pct,routing_layer4_pct,routing_layer5_pct,routing_layer6_pct,wires_count,wire_bits,public_wires_count,public_wire_bits,memories_count,memory_bits,processes_count,cells_pre_abc,AND,DFF,NAND,NOR,OR,XOR,XNOR,MUX,inputs,outputs,level,EndCaps,TapCells,Diodes,Total_Physical_Cells,suggested_clock_frequency,suggested_clock_period,CLOCK_PERIOD,SYNTH_STRATEGY,SYNTH_MAX_FANOUT,FP_CORE_UTIL,FP_ASPECT_RATIO,FP_PDN_VPITCH,FP_PDN_HPITCH,PL_TARGET_DENSITY,GLB_RT_ADJUSTMENT,STD_CELL_LIBRARY,CELL_PAD,DIODE_INSERTION_STRATEGY
-0,/project/openlane/user_project_wrapper,user_project_wrapper,user_project_wrapper,flow_completed,0h40m57s,-1,2.529576587795766,10.2784,1.264788293897883,-1,530.45,13,0,0,0,0,0,0,-1,0,0,-1,-1,1176117,8176,0.0,-1,-1,0.0,-1,0.0,-1,-1,0.0,-1,-1,40144.36,3.16,3.65,0.41,0.63,-1,272,2536,272,2536,0,0,0,13,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,90.9090909090909,11,10,AREA 0,5,50,1,180,90,0.55,0.0,sky130_fd_sc_hd,4,0
+0,/project/openlane/user_project_wrapper,user_project_wrapper,user_project_wrapper,flow_completed,0h49m1s,-1,2.724159402241594,10.2784,1.362079701120797,-1,538.05,14,0,0,0,0,0,0,-1,0,0,-1,-1,1480871,10235,0.0,-1,-1,0.0,-1,0.0,-1,-1,0.0,-1,-1,64380.84,4.37,5.34,0.99,0.77,-1,313,2874,313,2874,0,0,0,14,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,90.9090909090909,11,10,AREA 0,5,50,1,100,90,0.55,0.0,sky130_fd_sc_hd,4,0
diff --git a/signoff/wb_interconnect/final_summary_report.csv b/signoff/wb_interconnect/final_summary_report.csv
index de2a952..af52d28 100644
--- a/signoff/wb_interconnect/final_summary_report.csv
+++ b/signoff/wb_interconnect/final_summary_report.csv
@@ -1,2 +1,2 @@
 ,design,design_name,config,flow_status,total_runtime,routed_runtime,(Cell/mm^2)/Core_Util,DIEAREA_mm^2,CellPer_mm^2,OpenDP_Util,Peak_Memory_Usage_MB,cell_count,tritonRoute_violations,Short_violations,MetSpc_violations,OffGrid_violations,MinHole_violations,Other_violations,Magic_violations,antenna_violations,lvs_total_errors,cvc_total_errors,klayout_violations,wire_length,vias,wns,pl_wns,optimized_wns,fastroute_wns,spef_wns,tns,pl_tns,optimized_tns,fastroute_tns,spef_tns,HPWL,routing_layer1_pct,routing_layer2_pct,routing_layer3_pct,routing_layer4_pct,routing_layer5_pct,routing_layer6_pct,wires_count,wire_bits,public_wires_count,public_wire_bits,memories_count,memory_bits,processes_count,cells_pre_abc,AND,DFF,NAND,NOR,OR,XOR,XNOR,MUX,inputs,outputs,level,EndCaps,TapCells,Diodes,Total_Physical_Cells,suggested_clock_frequency,suggested_clock_period,CLOCK_PERIOD,SYNTH_STRATEGY,SYNTH_MAX_FANOUT,FP_CORE_UTIL,FP_ASPECT_RATIO,FP_PDN_VPITCH,FP_PDN_HPITCH,PL_TARGET_DENSITY,GLB_RT_ADJUSTMENT,STD_CELL_LIBRARY,CELL_PAD,DIODE_INSERTION_STRATEGY
-0,/project/openlane/wb_interconnect,wb_interconnect,wb_interconnect,flow_completed,0h8m25s,-1,10670.454545454546,0.35200000000000004,5335.227272727273,4.18,656.2,1878,0,-1,-1,-1,-1,0,-1,1,0,-1,-1,595153,26667,0.0,0.0,-1,0.0,-1,0.0,0.0,-1,0.0,-1,524917517.0,43.3,14.09,52.85,1.35,22.33,-1,948,3082,178,2312,0,0,0,1249,0,0,0,0,0,0,0,4,439,494,10,1600,4411,0,6011,90.9090909090909,11,10,AREA 0,2,50,1,100,100,0.5,0.0,sky130_fd_sc_hd,4,4
+0,/project/openlane/wb_interconnect,wb_interconnect,wb_interconnect,flow_completed,0h17m1s,-1,19817.391304347824,0.46,9908.695652173912,9.26,733.2,4558,0,-1,-1,-1,-1,0,0,1,0,-1,-1,845641,51327,-1.0,-9.35,-1,-0.57,-1,-120.98,-2527.7,-1,-31.1,-1,738740222.0,0.0,15.77,51.42,2.18,44.71,0.0,1769,5285,252,3767,0,0,0,2675,0,0,0,0,0,0,0,4,1191,1078,18,1674,5873,0,7547,90.9090909090909,11,10,AREA 0,2,50,1,153.6,153.18,0.3,0,sky130_fd_sc_hd,4,4
diff --git a/signoff/yifive/final_summary_report.csv b/signoff/yifive/final_summary_report.csv
index bc3a2be..25aa043 100644
--- a/signoff/yifive/final_summary_report.csv
+++ b/signoff/yifive/final_summary_report.csv
@@ -1,2 +1,2 @@
 ,design,design_name,config,flow_status,total_runtime,routed_runtime,(Cell/mm^2)/Core_Util,DIEAREA_mm^2,CellPer_mm^2,OpenDP_Util,Peak_Memory_Usage_MB,cell_count,tritonRoute_violations,Short_violations,MetSpc_violations,OffGrid_violations,MinHole_violations,Other_violations,Magic_violations,antenna_violations,lvs_total_errors,cvc_total_errors,klayout_violations,wire_length,vias,wns,pl_wns,optimized_wns,fastroute_wns,spef_wns,tns,pl_tns,optimized_tns,fastroute_tns,spef_tns,HPWL,routing_layer1_pct,routing_layer2_pct,routing_layer3_pct,routing_layer4_pct,routing_layer5_pct,routing_layer6_pct,wires_count,wire_bits,public_wires_count,public_wire_bits,memories_count,memory_bits,processes_count,cells_pre_abc,AND,DFF,NAND,NOR,OR,XOR,XNOR,MUX,inputs,outputs,level,EndCaps,TapCells,Diodes,Total_Physical_Cells,suggested_clock_frequency,suggested_clock_period,CLOCK_PERIOD,SYNTH_STRATEGY,SYNTH_MAX_FANOUT,FP_CORE_UTIL,FP_ASPECT_RATIO,FP_PDN_VPITCH,FP_PDN_HPITCH,PL_TARGET_DENSITY,GLB_RT_ADJUSTMENT,STD_CELL_LIBRARY,CELL_PAD,DIODE_INSERTION_STRATEGY
-0,/project/openlane/yifive,ycr1_top_wb,yifive,flow_completed,0h38m35s,-1,53646.25506072874,0.7904,26823.12753036437,30.96,1188.15,21201,0,-1,-1,-1,-1,0,-1,1,0,-1,-1,1626736,237479,-1.77,-17.38,-1,0.0,-1,-2145.74,-21120.0,-1,0.0,-1,1293377672.0,0.0,62.57,24.05,22.6,0.0,-1,18589,30059,1068,12431,0,0,0,21971,0,0,0,0,0,0,0,4,5240,5924,49,366,10822,0,11188,90.9090909090909,11,10,AREA 0,4,50,1,100,100,0.32,0.0,sky130_fd_sc_hd,4,4
+0,/project/openlane/yifive,ycr1_top_wb,yifive,flow_completed,1h36m1s,-1,58992.183908045976,1.0875,29496.091954022988,33.75,1525.48,32077,0,-1,-1,-1,-1,0,-1,1,0,-1,-1,2442216,371640,-27.11,-54.85,-1,-9.94,-1,-72257.27,-140592.75,-1,-4304.53,-1,1669037052.0,11.0,44.4,52.11,9.29,10.28,-1,26877,46216,1728,20697,0,0,0,32103,0,0,0,0,0,0,0,4,7879,8416,55,1050,15019,0,16069,90.9090909090909,11,10,AREA 0,4,50,1,100,100,0.4,0.0,sky130_fd_sc_hd,4,4
diff --git a/verilog/dv/user_basic/user_basic_tb.v b/verilog/dv/user_basic/user_basic_tb.v
index fbad972..faa6d8c 100644
--- a/verilog/dv/user_basic/user_basic_tb.v
+++ b/verilog/dv/user_basic/user_basic_tb.v
@@ -242,8 +242,8 @@
          wb_user_core_write('h3080_0000,'h1);
 
 	 wb_user_core_read_check(32'h30020058,read_data,32'h8273_8343);
-	 wb_user_core_read_check(32'h3002005C,read_data,32'h1501_2022);
-	 wb_user_core_read_check(32'h30020060,read_data,32'h0003_1000);
+	 wb_user_core_read_check(32'h3002005C,read_data,32'h0202_2022);
+	 wb_user_core_read_check(32'h30020060,read_data,32'h0003_2000);
 
       end
    
diff --git a/verilog/rtl/mbist_wrapper/src/mbist_wrapper.sv b/verilog/rtl/mbist_wrapper/src/mbist_wrapper.sv
index c838f52..77e50d4 100644
--- a/verilog/rtl/mbist_wrapper/src/mbist_wrapper.sv
+++ b/verilog/rtl/mbist_wrapper/src/mbist_wrapper.sv
@@ -90,7 +90,6 @@
         // WB I/F
         input   wire                          wb_clk_i,  // System clock
         input   wire                          wb_clk2_i, // System clock2 is no cts
-        input   wire                          wb_cyc_i,  // strobe/request
         input   wire                          wb_stb_i,  // strobe/request
 	input   wire [(BIST_NO_SRAM+1)/2-1:0] wb_cs_i,
         input   wire [BIST_ADDR_WD-1:0]       wb_adr_i,  // address
@@ -102,9 +101,40 @@
         output  wire [BIST_DATA_WD-1:0]       wb_dat_o,  // data input
         output  wire                          wb_ack_o,  // acknowlegement
         output  wire                          wb_lack_o, // acknowlegement
-        output  wire                          wb_err_o  // error
+        output  wire                          wb_err_o,  // error
 
 
+     // towards memory
+     // PORT-A
+        output wire   [BIST_NO_SRAM-1:0]      mem_clk_a,
+        output wire   [BIST_ADDR_WD-1:0]      mem_addr_a0,
+        output wire   [BIST_ADDR_WD-1:0]      mem_addr_a1,
+        output wire   [BIST_ADDR_WD-1:0]      mem_addr_a2,
+        output wire   [BIST_ADDR_WD-1:0]      mem_addr_a3,
+        output wire   [BIST_NO_SRAM-1:0]      mem_cen_a,
+        output wire   [BIST_NO_SRAM-1:0]      mem_web_a,
+        output wire   [BIST_DATA_WD/8-1:0]    mem_mask_a0,
+        output wire   [BIST_DATA_WD/8-1:0]    mem_mask_a1,
+        output wire   [BIST_DATA_WD/8-1:0]    mem_mask_a2,
+        output wire   [BIST_DATA_WD/8-1:0]    mem_mask_a3,
+        output wire   [BIST_DATA_WD-1:0]      mem_din_a0,
+        output wire   [BIST_DATA_WD-1:0]      mem_din_a1,
+        output wire   [BIST_DATA_WD-1:0]      mem_din_a2,
+        output wire   [BIST_DATA_WD-1:0]      mem_din_a3,
+
+        input  wire   [BIST_DATA_WD-1:0]      mem_dout_a0,
+        input  wire   [BIST_DATA_WD-1:0]      mem_dout_a1,
+        input  wire   [BIST_DATA_WD-1:0]      mem_dout_a2,
+        input  wire   [BIST_DATA_WD-1:0]      mem_dout_a3,
+
+
+     // PORT-B
+        output wire [BIST_NO_SRAM-1:0]        mem_clk_b,
+        output wire [BIST_NO_SRAM-1:0]        mem_cen_b,
+        output wire   [BIST_ADDR_WD-1:0]      mem_addr_b0,
+        output wire   [BIST_ADDR_WD-1:0]      mem_addr_b1,
+        output wire   [BIST_ADDR_WD-1:0]      mem_addr_b2,
+        output wire   [BIST_ADDR_WD-1:0]      mem_addr_b3
 
 
 
@@ -113,44 +143,6 @@
 parameter  NO_SRAM_WD = (BIST_NO_SRAM+1)/2;
 parameter     BIST1_ADDR_WD = 11; // 512x32 SRAM
 
-// FUNCTIONAL PORT 
-// towards memory MBIST1
-// PORT-A
-wire   [BIST_NO_SRAM-1:0]      mem_clk_a;
-wire   [BIST1_ADDR_WD-1:2]     mem0_addr_a;
-wire   [BIST1_ADDR_WD-1:2]     mem1_addr_a;
-wire   [BIST1_ADDR_WD-1:2]     mem2_addr_a;
-wire   [BIST1_ADDR_WD-1:2]     mem3_addr_a;
-wire   [BIST_NO_SRAM-1:0]      mem_cen_a;
-wire   [BIST_NO_SRAM-1:0]      mem_web_a;
-wire [BIST_DATA_WD/8-1:0]      mem0_mask_a;
-wire [BIST_DATA_WD/8-1:0]      mem1_mask_a;
-wire [BIST_DATA_WD/8-1:0]      mem2_mask_a;
-wire [BIST_DATA_WD/8-1:0]      mem3_mask_a;
-wire   [BIST_DATA_WD-1:0]      mem0_din_a;
-wire   [BIST_DATA_WD-1:0]      mem1_din_a;
-wire   [BIST_DATA_WD-1:0]      mem2_din_a;
-wire   [BIST_DATA_WD-1:0]      mem3_din_a;
-wire   [BIST_DATA_WD-1:0]      mem0_dout_a;
-wire   [BIST_DATA_WD-1:0]      mem1_dout_a;
-wire   [BIST_DATA_WD-1:0]      mem2_dout_a;
-wire   [BIST_DATA_WD-1:0]      mem3_dout_a;
-
-// PORT-B
-wire [BIST_NO_SRAM-1:0]        mem_clk_b;
-wire [BIST_NO_SRAM-1:0]        mem_cen_b;
-wire [BIST1_ADDR_WD-1:2]       mem0_addr_b;
-wire [BIST1_ADDR_WD-1:2]       mem1_addr_b;
-wire [BIST1_ADDR_WD-1:2]       mem2_addr_b;
-wire [BIST1_ADDR_WD-1:2]       mem3_addr_b;
-
-logic                          mem_req;
-logic [(BIST_NO_SRAM+1)/2-1:0] mem_cs;
-logic [BIST_ADDR_WD-1:0]       mem_addr;
-logic [31:0]                   mem_wdata;
-logic                          mem_we;
-logic [3:0]                    mem_wmask;
-logic [31:0]                   mem_rdata;
 
 mbist_wb  #(
 	.BIST_NO_SRAM           (4                      ),
@@ -280,7 +272,7 @@
 );
 
 
-
+/**
 sky130_sram_2kbyte_1rw1r_32x512_8 u_sram0_2kb(
 `ifdef USE_POWER_PINS
     .vccd1 (vccd1),// User area 1 1.8V supply
@@ -362,5 +354,8 @@
     .dout1    ()
   );
 
+
+***/
+
 endmodule
 
diff --git a/verilog/rtl/user_project_wrapper.v b/verilog/rtl/user_project_wrapper.v
index efe14c3..3e91285 100644
--- a/verilog/rtl/user_project_wrapper.v
+++ b/verilog/rtl/user_project_wrapper.v
@@ -31,7 +31,8 @@
 ////      4. UART                                                 ////
 ////      5, USB 1.1                                              ////
 ////      6. SPI Master (Single)                                  ////
-////      7. SRAM 2KB                                             ////
+////      7. TCM SRAM 2KB                                         ////
+////      8. 2KB icache and 2KB dcache                            ////
 ////      8. 6 Channel ADC                                        ////
 ////      9. Pinmux with GPIO and 6 PWM                           ////
 ////                                                              ////
@@ -232,384 +233,412 @@
 // Local Parameter Declaration
 // --------------------------------------------------
 
-parameter     BIST_NO_SRAM= 4; // NO of MBIST MEMORY
-parameter     SDR_DW   = 8;  // SDR Data Width 
-parameter     SDR_BW   = 1;  // SDR Byte Width
-parameter     WB_WIDTH = 32; // WB ADDRESS/DARA WIDTH
+parameter     BIST_NO_SRAM  = 4; // NO of MBIST MEMORY
+parameter     SDR_DW        = 8;  // SDR Data Width 
+parameter     SDR_BW        = 1;  // SDR Byte Width
+parameter     WB_WIDTH      = 32; // WB ADDRESS/DARA WIDTH
 parameter     BIST1_ADDR_WD = 11; // 512x32 SRAM
-parameter     BIST_DATA_WD = 32;
+parameter     BIST_DATA_WD  = 32;
 
 //---------------------------------------------------------------------
 // Wishbone Risc V Dcache Memory Interface
 //---------------------------------------------------------------------
-wire                           wbd_riscv_dcache_stb_i; // strobe/request
-wire   [WB_WIDTH-1:0]          wbd_riscv_dcache_adr_i; // address
-wire                           wbd_riscv_dcache_we_i;  // write
-wire   [WB_WIDTH-1:0]          wbd_riscv_dcache_dat_i; // data output
-wire   [3:0]                   wbd_riscv_dcache_sel_i; // byte enable
-wire   [9:0]                   wbd_riscv_dcache_bl_i;  // burst length
-wire                           wbd_riscv_dcache_bry_i; // burst ready
-wire   [WB_WIDTH-1:0]          wbd_riscv_dcache_dat_o; // data input
-wire                           wbd_riscv_dcache_ack_o; // acknowlegement
-wire                           wbd_riscv_dcache_lack_o;// last burst acknowlegement
-wire                           wbd_riscv_dcache_err_o;  // error
+wire                           wbd_riscv_dcache_stb_i                 ; // strobe/request
+wire   [WB_WIDTH-1:0]          wbd_riscv_dcache_adr_i                 ; // address
+wire                           wbd_riscv_dcache_we_i                  ; // write
+wire   [WB_WIDTH-1:0]          wbd_riscv_dcache_dat_i                 ; // data output
+wire   [3:0]                   wbd_riscv_dcache_sel_i                 ; // byte enable
+wire   [9:0]                   wbd_riscv_dcache_bl_i                  ; // burst length
+wire                           wbd_riscv_dcache_bry_i                 ; // burst ready
+wire   [WB_WIDTH-1:0]          wbd_riscv_dcache_dat_o                 ; // data input
+wire                           wbd_riscv_dcache_ack_o                 ; // acknowlegement
+wire                           wbd_riscv_dcache_lack_o                ; // last burst acknowlegement
+wire                           wbd_riscv_dcache_err_o                 ; // error
 
+// CACHE SRAM Memory I/F
+wire                           dcache_mem_clk0                        ; // CLK
+wire                           dcache_mem_csb0                        ; // CS#
+wire                           dcache_mem_web0                        ; // WE#
+wire   [8:0]                   dcache_mem_addr0                       ; // Address
+wire   [3:0]                   dcache_mem_wmask0                      ; // WMASK#
+wire   [31:0]                  dcache_mem_din0                        ; // Write Data
+wire   [31:0]                  dcache_mem_dout0                       ; // Read Data
+   
+// SRAM-0 PORT-1, IMEM I/F
+wire                           dcache_mem_clk1                        ; // CLK
+wire                           dcache_mem_csb1                        ; // CS#
+wire  [8:0]                    dcache_mem_addr1                       ; // Address
+wire  [31:0]                   dcache_mem_dout1                       ; // Read Data
 //---------------------------------------------------------------------
 // Wishbone Risc V Icache Memory Interface
 //---------------------------------------------------------------------
-wire                           wbd_riscv_icache_stb_i; // strobe/request
-wire   [WB_WIDTH-1:0]          wbd_riscv_icache_adr_i; // address
-wire                           wbd_riscv_icache_we_i;  // write
-wire   [WB_WIDTH-1:0]          wbd_riscv_icache_dat_i; // data output
-wire   [3:0]                   wbd_riscv_icache_sel_i; // byte enable
-wire   [9:0]                   wbd_riscv_icache_bl_i;  // burst length
-wire                           wbd_riscv_icache_bry_i; // burst ready
-wire   [WB_WIDTH-1:0]          wbd_riscv_icache_dat_o; // data input
-wire                           wbd_riscv_icache_ack_o; // acknowlegement
-wire                           wbd_riscv_icache_lack_o;// last burst acknowlegement
-wire                           wbd_riscv_icache_err_o;  // error
+wire                           wbd_riscv_icache_stb_i                 ; // strobe/request
+wire   [WB_WIDTH-1:0]          wbd_riscv_icache_adr_i                 ; // address
+wire                           wbd_riscv_icache_we_i                  ; // write
+wire   [3:0]                   wbd_riscv_icache_sel_i                 ; // byte enable
+wire   [9:0]                   wbd_riscv_icache_bl_i                  ; // burst length
+wire                           wbd_riscv_icache_bry_i                 ; // burst ready
+wire   [WB_WIDTH-1:0]          wbd_riscv_icache_dat_o                 ; // data input
+wire                           wbd_riscv_icache_ack_o                 ; // acknowlegement
+wire                           wbd_riscv_icache_lack_o                ; // last burst acknowlegement
+wire                           wbd_riscv_icache_err_o                 ; // error
+
+// CACHE SRAM Memory I/F
+wire                           icache_mem_clk0                        ; // CLK
+wire                           icache_mem_csb0                        ; // CS#
+wire                           icache_mem_web0                        ; // WE#
+wire   [8:0]                   icache_mem_addr0                       ; // Address
+wire   [3:0]                   icache_mem_wmask0                      ; // WMASK#
+wire   [31:0]                  icache_mem_din0                        ; // Write Data
+// wire   [31:0]               icache_mem_dout0                       ; // Read Data
+   
+// SRAM-0 PORT-1, IMEM I/F
+wire                           icache_mem_clk1                        ; // CLK
+wire                           icache_mem_csb1                        ; // CS#
+wire  [8:0]                    icache_mem_addr1                       ; // Address
+wire  [31:0]                   icache_mem_dout1                       ; // Read Data
 
 //---------------------------------------------------------------------
 // RISC V Wishbone Data Memory Interface
 //---------------------------------------------------------------------
-wire                           wbd_riscv_dmem_stb_i; // strobe/request
-wire   [WB_WIDTH-1:0]          wbd_riscv_dmem_adr_i; // address
-wire                           wbd_riscv_dmem_we_i;  // write
-wire   [WB_WIDTH-1:0]          wbd_riscv_dmem_dat_i; // data output
-wire   [3:0]                   wbd_riscv_dmem_sel_i; // byte enable
-wire   [WB_WIDTH-1:0]          wbd_riscv_dmem_dat_o; // data input
-wire                           wbd_riscv_dmem_ack_o; // acknowlegement
-wire                           wbd_riscv_dmem_err_o; // error
+wire                           wbd_riscv_dmem_stb_i                   ; // strobe/request
+wire   [WB_WIDTH-1:0]          wbd_riscv_dmem_adr_i                   ; // address
+wire                           wbd_riscv_dmem_we_i                    ; // write
+wire   [WB_WIDTH-1:0]          wbd_riscv_dmem_dat_i                   ; // data output
+wire   [3:0]                   wbd_riscv_dmem_sel_i                   ; // byte enable
+wire   [WB_WIDTH-1:0]          wbd_riscv_dmem_dat_o                   ; // data input
+wire                           wbd_riscv_dmem_ack_o                   ; // acknowlegement
+wire                           wbd_riscv_dmem_err_o                   ; // error
 
 //---------------------------------------------------------------------
 // WB HOST Interface
 //---------------------------------------------------------------------
-wire                           wbd_int_cyc_i; // strobe/request
-wire                           wbd_int_stb_i; // strobe/request
-wire   [WB_WIDTH-1:0]          wbd_int_adr_i; // address
-wire                           wbd_int_we_i;  // write
-wire   [WB_WIDTH-1:0]          wbd_int_dat_i; // data output
-wire   [3:0]                   wbd_int_sel_i; // byte enable
-wire   [WB_WIDTH-1:0]          wbd_int_dat_o; // data input
-wire                           wbd_int_ack_o; // acknowlegement
-wire                           wbd_int_err_o; // error
+wire                           wbd_int_cyc_i                          ; // strobe/request
+wire                           wbd_int_stb_i                          ; // strobe/request
+wire   [WB_WIDTH-1:0]          wbd_int_adr_i                          ; // address
+wire                           wbd_int_we_i                           ; // write
+wire   [WB_WIDTH-1:0]          wbd_int_dat_i                          ; // data output
+wire   [3:0]                   wbd_int_sel_i                          ; // byte enable
+wire   [WB_WIDTH-1:0]          wbd_int_dat_o                          ; // data input
+wire                           wbd_int_ack_o                          ; // acknowlegement
+wire                           wbd_int_err_o                          ; // error
 //---------------------------------------------------------------------
 //    SPI Master Wishbone Interface
 //---------------------------------------------------------------------
-wire                           wbd_spim_stb_o; // strobe/request
-wire   [WB_WIDTH-1:0]          wbd_spim_adr_o; // address
-wire                           wbd_spim_we_o;  // write
-wire   [WB_WIDTH-1:0]          wbd_spim_dat_o; // data output
-wire   [3:0]                   wbd_spim_sel_o; // byte enable
-wire   [9:0]                   wbd_spim_bl_o;  // Burst count
-wire                           wbd_spim_bry_o; // Busrt Ready
-wire                           wbd_spim_cyc_o ;
-wire   [WB_WIDTH-1:0]          wbd_spim_dat_i; // data input
-wire                           wbd_spim_ack_i; // acknowlegement
-wire                           wbd_spim_lack_i;// Last acknowlegement
-wire                           wbd_spim_err_i;  // error
+wire                           wbd_spim_stb_o                         ; // strobe/request
+wire   [WB_WIDTH-1:0]          wbd_spim_adr_o                         ; // address
+wire                           wbd_spim_we_o                          ; // write
+wire   [WB_WIDTH-1:0]          wbd_spim_dat_o                         ; // data output
+wire   [3:0]                   wbd_spim_sel_o                         ; // byte enable
+wire   [9:0]                   wbd_spim_bl_o                          ; // Burst count
+wire                           wbd_spim_bry_o                         ; // Busrt Ready
+wire                           wbd_spim_cyc_o                         ;
+wire   [WB_WIDTH-1:0]          wbd_spim_dat_i                         ; // data input
+wire                           wbd_spim_ack_i                         ; // acknowlegement
+wire                           wbd_spim_lack_i                        ; // Last acknowlegement
+wire                           wbd_spim_err_i                         ; // error
 
 //---------------------------------------------------------------------
 //    SPI Master Wishbone Interface
 //---------------------------------------------------------------------
-wire                           wbd_adc_stb_o ;
-wire [7:0]                     wbd_adc_adr_o ;
-wire                           wbd_adc_we_o  ; // 1 - Write, 0 - Read
-wire [WB_WIDTH-1:0]            wbd_adc_dat_o ;
-wire [WB_WIDTH/8-1:0]          wbd_adc_sel_o ; // Byte enable
-wire                           wbd_adc_cyc_o ;
-wire  [2:0]                    wbd_adc_cti_o ;
-wire  [WB_WIDTH-1:0]           wbd_adc_dat_i ;
-wire                           wbd_adc_ack_i ;
+wire                           wbd_adc_stb_o                          ;
+wire [7:0]                     wbd_adc_adr_o                          ;
+wire                           wbd_adc_we_o                           ; // 1 - Write, 0 - Read
+wire [WB_WIDTH-1:0]            wbd_adc_dat_o                          ;
+wire [WB_WIDTH/8-1:0]          wbd_adc_sel_o                          ; // Byte enable
+wire                           wbd_adc_cyc_o                          ;
+wire  [2:0]                    wbd_adc_cti_o                          ;
+wire  [WB_WIDTH-1:0]           wbd_adc_dat_i                          ;
+wire                           wbd_adc_ack_i                          ;
 
 //---------------------------------------------------------------------
 //    Global Register Wishbone Interface
 //---------------------------------------------------------------------
-wire                           wbd_glbl_stb_o; // strobe/request
-wire   [7:0]                   wbd_glbl_adr_o; // address
-wire                           wbd_glbl_we_o;  // write
-wire   [WB_WIDTH-1:0]          wbd_glbl_dat_o; // data output
-wire   [3:0]                   wbd_glbl_sel_o; // byte enable
-wire                           wbd_glbl_cyc_o ;
-wire   [WB_WIDTH-1:0]          wbd_glbl_dat_i; // data input
-wire                           wbd_glbl_ack_i; // acknowlegement
-wire                           wbd_glbl_err_i;  // error
+wire                           wbd_glbl_stb_o                         ; // strobe/request
+wire   [7:0]                   wbd_glbl_adr_o                         ; // address
+wire                           wbd_glbl_we_o                          ; // write
+wire   [WB_WIDTH-1:0]          wbd_glbl_dat_o                         ; // data output
+wire   [3:0]                   wbd_glbl_sel_o                         ; // byte enable
+wire                           wbd_glbl_cyc_o                         ;
+wire   [WB_WIDTH-1:0]          wbd_glbl_dat_i                         ; // data input
+wire                           wbd_glbl_ack_i                         ; // acknowlegement
+wire                           wbd_glbl_err_i                         ; // error
 
 //---------------------------------------------------------------------
 //    Global Register Wishbone Interface
 //---------------------------------------------------------------------
-wire                           wbd_uart_stb_o; // strobe/request
-wire   [7:0]                   wbd_uart_adr_o; // address
-wire                           wbd_uart_we_o;  // write
-wire   [31:0]                  wbd_uart_dat_o; // data output
-wire   [3:0]                   wbd_uart_sel_o; // byte enable
-wire                           wbd_uart_cyc_o ;
-wire   [31:0]                  wbd_uart_dat_i; // data input
-wire                           wbd_uart_ack_i; // acknowlegement
-wire                           wbd_uart_err_i;  // error
+wire                           wbd_uart_stb_o                         ; // strobe/request
+wire   [7:0]                   wbd_uart_adr_o                         ; // address
+wire                           wbd_uart_we_o                          ; // write
+wire   [31:0]                  wbd_uart_dat_o                         ; // data output
+wire   [3:0]                   wbd_uart_sel_o                         ; // byte enable
+wire                           wbd_uart_cyc_o                         ;
+wire   [31:0]                  wbd_uart_dat_i                         ; // data input
+wire                           wbd_uart_ack_i                         ; // acknowlegement
+wire                           wbd_uart_err_i                         ;  // error
 
 //---------------------------------------------------------------------
 //  MBIST1  
 //---------------------------------------------------------------------
-wire                           wbd_mbist_stb_o; // strobe/request
-wire   [12:0]                  wbd_mbist_adr_o; // address
-wire                           wbd_mbist_we_o;  // write
-wire   [WB_WIDTH-1:0]          wbd_mbist_dat_o; // data output
-wire   [3:0]                   wbd_mbist_sel_o; // byte enable
-wire   [9:0]                   wbd_mbist_bl_o; // byte enable
-wire                           wbd_mbist_bry_o; // byte enable
-wire                           wbd_mbist_cyc_o ;
-wire   [WB_WIDTH-1:0]          wbd_mbist_dat_i; // data input
-wire                           wbd_mbist_ack_i; // acknowlegement
-wire                           wbd_mbist_lack_i; // acknowlegement
-wire                           wbd_mbist_err_i;  // error
+wire                           wbd_mbist_stb_o                        ; // strobe/request
+wire   [12:0]                  wbd_mbist_adr_o                        ; // address
+wire                           wbd_mbist_we_o                         ; // write
+wire   [WB_WIDTH-1:0]          wbd_mbist_dat_o                        ; // data output
+wire   [3:0]                   wbd_mbist_sel_o                        ; // byte enable
+wire   [9:0]                   wbd_mbist_bl_o                         ; // byte enable
+wire                           wbd_mbist_bry_o                        ; // byte enable
+wire                           wbd_mbist_cyc_o                        ;
+wire   [WB_WIDTH-1:0]          wbd_mbist_dat_i                        ; // data input
+wire                           wbd_mbist_ack_i                        ; // acknowlegement
+wire                           wbd_mbist_lack_i                       ; // acknowlegement
+wire                           wbd_mbist_err_i                        ; // error
 
 //----------------------------------------------------
 //  CPU Configuration
 //----------------------------------------------------
-wire                              cpu_rst_n     ;
-wire                              qspim_rst_n     ;
-wire                              sspim_rst_n     ;
-wire                              uart_rst_n    ;// uart reset
-wire                              i2c_rst_n     ;// i2c reset
-wire                              usb_rst_n     ;// i2c reset
-wire   [3:0]                      boot_remap    ;// Boot Remap
-wire   [3:0]                      dcache_remap  ;// Remap the dcache address
-wire                              cpu_clk       ;
-wire                              rtc_clk       ;
-wire                              usb_clk       ;
-wire                              wbd_clk_int   ;
+wire                           cpu_rst_n                              ;
+wire                           qspim_rst_n                            ;
+wire                           sspim_rst_n                            ;
+wire                           uart_rst_n                             ; // uart reset
+wire                           i2c_rst_n                              ; // i2c reset
+wire                           usb_rst_n                              ; // i2c reset
+wire   [3:0]                   boot_remap                             ; // Boot Remap
+wire   [3:0]                   dcache_remap                           ; // Remap the dcache address
+wire                           cpu_clk                                ;
+wire                           rtc_clk                                ;
+wire                           usb_clk                                ;
+wire                           wbd_clk_int                            ;
 
-wire                              wbd_clk_pinmux   ;
-//wire                              wbd_clk_int1  ;
-//wire                              wbd_clk_int2  ;
-wire                              wbd_int_rst_n ;
-//wire                              wbd_int1_rst_n ;
-//wire                              wbd_int2_rst_n ;
+wire                           wbd_clk_pinmux                         ;
+//wire                           wbd_clk_int1                         ;
+//wire                           wbd_clk_int2                         ;
+wire                           wbd_int_rst_n                          ;
+//wire                           wbd_int1_rst_n                       ;
+//wire                           wbd_int2_rst_n                       ;
 
-wire [31:0]                       fuse_mhartid  ;
-wire [15:0]                       irq_lines     ;
-wire                              soft_irq      ;
+wire [31:0]                    fuse_mhartid                           ;
+wire [15:0]                    irq_lines                              ;
+wire                           soft_irq                               ;
 
 
-wire [7:0]                        cfg_glb_ctrl  ;
-wire [31:0]                       cfg_clk_ctrl1 ;
-wire [31:0]                       cfg_clk_ctrl2 ;
-wire [3:0]                        cfg_cska_wi   ; // clock skew adjust for wishbone interconnect
-wire [3:0]                        cfg_cska_wh   ; // clock skew adjust for web host
+wire [7:0]                     cfg_glb_ctrl                           ;
+wire [31:0]                    cfg_clk_ctrl1                          ;
+wire [31:0]                    cfg_clk_ctrl2                          ;
+wire [3:0]                     cfg_cska_wi                            ; // clock skew adjust for wishbone interconnect
+wire [3:0]                     cfg_cska_wh                            ; // clock skew adjust for web host
 
-wire [3:0]                        cfg_cska_riscv; // clock skew adjust for riscv
-wire [3:0]                        cfg_cska_uart ; // clock skew adjust for uart
-wire [3:0]                        cfg_cska_qspi  ; // clock skew adjust for spi
-wire [3:0]                        cfg_cska_pinmux; // clock skew adjust for pinmux
-wire [3:0]                        cfg_cska_qspi_co ; // clock skew adjust for global reg
-wire [3:0]                        cfg_cska_mbist1;
-wire [3:0]                        cfg_cska_mbist2;
-wire [3:0]                        cfg_cska_mbist3;
-wire [3:0]                        cfg_cska_mbist4;
+wire [3:0]                     cfg_cska_riscv                         ; // clock skew adjust for riscv
+wire [3:0]                     cfg_cska_uart                          ; // clock skew adjust for uart
+wire [3:0]                     cfg_cska_qspi                          ; // clock skew adjust for spi
+wire [3:0]                     cfg_cska_pinmux                        ; // clock skew adjust for pinmux
+wire [3:0]                     cfg_cska_qspi_co                       ; // clock skew adjust for global reg
+wire [3:0]                     cfg_cska_mbist1                        ;
+wire [3:0]                     cfg_cska_mbist2                        ;
+wire [3:0]                     cfg_cska_mbist3                        ;
+wire [3:0]                     cfg_cska_mbist4                        ;
 
 // Bus Repeater Signals  output from Wishbone Interface
-wire [3:0]                        cfg_cska_riscv_rp  ; // clock skew adjust for riscv
-wire [3:0]                        cfg_cska_uart_rp   ; // clock skew adjust for uart
-wire [3:0]                        cfg_cska_qspi_rp   ; // clock skew adjust for spi
-wire [3:0]                        cfg_cska_pinmux_rp ; // clock skew adjust for pinmux
-wire [3:0]                        cfg_cska_qspi_co_rp; // clock skew adjust for global reg
-wire [3:0]                        cfg_cska_mbist1_rp ;
-wire [3:0]                        cfg_cska_mbist2_rp ;
-wire [3:0]                        cfg_cska_mbist3_rp ;
-wire [3:0]                        cfg_cska_mbist4_rp ;
+wire [3:0]                     cfg_cska_riscv_rp                      ; // clock skew adjust for riscv
+wire [3:0]                     cfg_cska_uart_rp                       ; // clock skew adjust for uart
+wire [3:0]                     cfg_cska_qspi_rp                       ; // clock skew adjust for spi
+wire [3:0]                     cfg_cska_pinmux_rp                     ; // clock skew adjust for pinmux
+wire [3:0]                     cfg_cska_qspi_co_rp                    ; // clock skew adjust for global reg
+wire [3:0]                     cfg_cska_mbist1_rp                     ;
+wire [3:0]                     cfg_cska_mbist2_rp                     ;
+wire [3:0]                     cfg_cska_mbist3_rp                     ;
+wire [3:0]                     cfg_cska_mbist4_rp                     ;
 
-wire [31:0]                       fuse_mhartid_rp   ; // Repeater
-wire [15:0]                       irq_lines_rp      ; // Repeater
-wire                              soft_irq_rp       ; // Repeater
+wire [31:0]                    fuse_mhartid_rp                        ; // Repeater
+wire [15:0]                    irq_lines_rp                           ; // Repeater
+wire                           soft_irq_rp                            ; // Repeater
 
-wire                              wbd_clk_risc_rp   ;
-wire                              wbd_clk_qspi_rp   ;
-wire                              wbd_clk_uart_rp   ;
-wire                              wbd_clk_pinmux_rp ;
-wire                              wbd_clk_mbist1_rp ;
-wire                              wbd_clk_mbist2_rp ;
-wire                              wbd_clk_mbist3_rp ;
-wire                              wbd_clk_mbist4_rp ;
+wire                           wbd_clk_risc_rp                        ;
+wire                           wbd_clk_qspi_rp                        ;
+wire                           wbd_clk_uart_rp                        ;
+wire                           wbd_clk_pinmux_rp                      ;
+wire                           wbd_clk_mbist1_rp                      ;
+wire                           wbd_clk_mbist2_rp                      ;
+wire                           wbd_clk_mbist3_rp                      ;
+wire                           wbd_clk_mbist4_rp                      ;
 
 // Progammable Clock Skew inserted signals
-wire                              wbd_clk_wi_skew    ; // clock for wishbone interconnect with clock skew
-wire                              wbd_clk_riscv_skew ; // clock for riscv with clock skew
-wire                              wbd_clk_uart_skew  ; // clock for uart with clock skew
-wire                              wbd_clk_spi_skew   ; // clock for spi with clock skew
-wire                              wbd_clk_glbl_skew  ; // clock for global reg with clock skew
-wire                              wbd_clk_wh_skew    ; // clock for global reg
-wire                              wbd_clk_mbist_skew; // clock for global reg
-wire                              wbd_clk_mbist2_skew; // clock for global reg
-wire                              wbd_clk_mbist3_skew; // clock for global reg
-wire                              wbd_clk_mbist4_skew; // clock for global reg
+wire                           wbd_clk_wi_skew                        ; // clock for wishbone interconnect with clock skew
+wire                           wbd_clk_riscv_skew                     ; // clock for riscv with clock skew
+wire                           wbd_clk_uart_skew                      ; // clock for uart with clock skew
+wire                           wbd_clk_spi_skew                       ; // clock for spi with clock skew
+wire                           wbd_clk_glbl_skew                      ; // clock for global reg with clock skew
+wire                           wbd_clk_wh_skew                        ; // clock for global reg
+wire                           wbd_clk_mbist_skew                     ; // clock for global reg
+wire                           wbd_clk_mbist2_skew                    ; // clock for global reg
+wire                           wbd_clk_mbist3_skew                    ; // clock for global reg
+wire                           wbd_clk_mbist4_skew                    ; // clock for global reg
 
 
 
-wire [31:0]                       spi_debug           ;
-wire [31:0]                       pinmux_debug           ;
-wire [63:0]                       riscv_debug         ;
+wire [31:0]                    spi_debug                              ;
+wire [31:0]                    pinmux_debug                           ;
+wire [63:0]                    riscv_debug                            ;
 
 // SFLASH I/F
-wire                             sflash_sck          ;
-wire                             sflash_ss           ;
-wire [3:0]                       sflash_oen          ;
-wire [3:0]                       sflash_do           ;
-wire [3:0]                       sflash_di           ;
+wire                           sflash_sck                             ;
+wire                           sflash_ss                              ;
+wire [3:0]                     sflash_oen                             ;
+wire [3:0]                     sflash_do                              ;
+wire [3:0]                     sflash_di                              ;
 
 // SSRAM I/F
-//wire                             ssram_sck           ;
-//wire                             ssram_ss            ;
-//wire                             ssram_oen           ;
-//wire [3:0]                       ssram_do            ;
-//wire [3:0]                       ssram_di            ;
+//wire                         ssram_sck                              ;
+//wire                         ssram_ss                               ;
+//wire                         ssram_oen                              ;
+//wire [3:0]                   ssram_do                               ;
+//wire [3:0]                   ssram_di                               ;
 
 // USB I/F
-wire                             usb_dp_o            ;
-wire                             usb_dn_o            ;
-wire                             usb_oen             ;
-wire                             usb_dp_i            ;
-wire                             usb_dn_i            ;
+wire                           usb_dp_o                               ;
+wire                           usb_dn_o                               ;
+wire                           usb_oen                                ;
+wire                           usb_dp_i                               ;
+wire                           usb_dn_i                               ;
 
 // UART I/F
-wire                             uart_txd            ;
-wire                             uart_rxd            ;
+wire                           uart_txd                               ;
+wire                           uart_rxd                               ;
 
 // I2CM I/F
-wire                             i2cm_clk_o          ;
-wire                             i2cm_clk_i          ;
-wire                             i2cm_clk_oen        ;
-wire                             i2cm_data_oen       ;
-wire                             i2cm_data_o         ;
-wire                             i2cm_data_i         ;
+wire                           i2cm_clk_o                             ;
+wire                           i2cm_clk_i                             ;
+wire                           i2cm_clk_oen                           ;
+wire                           i2cm_data_oen                          ;
+wire                           i2cm_data_o                            ;
+wire                           i2cm_data_i                            ;
 
 // SPI MASTER
-wire                             spim_sck            ;
-wire                             spim_ss             ;
-wire                             spim_miso           ;
-wire                             spim_mosi           ;
+wire                           spim_sck                               ;
+wire                           spim_ss                                ;
+wire                           spim_miso                              ;
+wire                           spim_mosi                              ;
 
-wire [7:0]                       sar2dac             ;
-wire                             analog_dac_out      ;
-wire                             pulse1m_mclk        ;
-wire                             h_reset_n           ;
+wire [7:0]                     sar2dac                                ;
+wire                           analog_dac_out                         ;
+wire                           pulse1m_mclk                           ;
+wire                           h_reset_n                              ;
 
 `ifndef SCR1_TCM_MEM
 // SRAM-0 PORT-0 - DMEM I/F
-wire                             sram0_clk0           ; // CLK
-wire                             sram0_csb0           ; // CS#
-wire                             sram0_web0           ; // WE#
-wire   [8:0]                     sram0_addr0          ; // Address
-wire   [3:0]                     sram0_wmask0         ; // WMASK#
-wire   [31:0]                    sram0_din0           ; // Write Data
-wire   [31:0]                    sram0_dout0          ; // Read Data
+wire                           sram0_clk0                             ; // CLK
+wire                           sram0_csb0                             ; // CS#
+wire                           sram0_web0                             ; // WE#
+wire   [8:0]                   sram0_addr0                            ; // Address
+wire   [3:0]                   sram0_wmask0                           ; // WMASK#
+wire   [31:0]                  sram0_din0                             ; // Write Data
+wire   [31:0]                  sram0_dout0                            ; // Read Data
 
 // SRAM-0 PORT-1, IMEM I/F
-wire                             sram0_clk1           ; // CLK
-wire                             sram0_csb1           ; // CS#
-wire  [8:0]                      sram0_addr1          ; // Address
-wire  [31:0]                     sram0_dout1          ; // Read Data
+wire                           sram0_clk1                             ; // CLK
+wire                           sram0_csb1                             ; // CS#
+wire  [8:0]                    sram0_addr1                            ; // Address
+wire  [31:0]                   sram0_dout1                            ; // Read Data
 
 // SRAM-1 PORT-0 - DMEM I/F
-wire                             sram1_clk0           ; // CLK
-wire                             sram1_csb0           ; // CS#
-wire                             sram1_web0           ; // WE#
-wire   [8:0]                     sram1_addr0          ; // Address
-wire   [3:0]                     sram1_wmask0         ; // WMASK#
-wire   [31:0]                    sram1_din0           ; // Write Data
-wire   [31:0]                    sram1_dout0          ; // Read Data
+wire                           sram1_clk0                             ; // CLK
+wire                           sram1_csb0                             ; // CS#
+wire                           sram1_web0                             ; // WE#
+wire   [8:0]                   sram1_addr0                            ; // Address
+wire   [3:0]                   sram1_wmask0                           ; // WMASK#
+wire   [31:0]                  sram1_din0                             ; // Write Data
+wire   [31:0]                  sram1_dout0                            ; // Read Data
 
 // SRAM-1 PORT-1, IMEM I/F
-wire                             sram1_clk1           ; // CLK
-wire                             sram1_csb1           ; // CS#
-wire  [8:0]                      sram1_addr1          ; // Address
-wire  [31:0]                     sram1_dout1          ; // Read Data
+wire                           sram1_clk1                             ; // CLK
+wire                           sram1_csb1                             ; // CS#
+wire  [8:0]                    sram1_addr1                            ; // Address
+wire  [31:0]                   sram1_dout1                            ; // Read Data
 
 `endif
 
 // SPIM I/F
-wire                             sspim_sck           ; // clock out
-wire                             sspim_so            ; // serial data out
-wire                             sspim_si            ; // serial data in
-wire                             sspim_ssn           ; // cs_n
+wire                           sspim_sck                              ; // clock out
+wire                           sspim_so                               ; // serial data out
+wire                           sspim_si                               ; // serial data in
+wire                           sspim_ssn                              ; // cs_n
 
 
-wire                             usb_intr_o          ;
-wire                             i2cm_intr_o         ;
+wire                           usb_intr_o                             ;
+wire                           i2cm_intr_o                            ;
 
 //----------------------------------------------------------------
 //  UART Master I/F
 //  -------------------------------------------------------------
-wire                             uartm_rxd           ;
-wire                             uartm_txd           ;
+wire                           uartm_rxd                              ;
+wire                           uartm_txd                              ;
 
 //----------------------------------------------------------
 // BIST I/F
 // ---------------------------------------------------------
-wire                             bist_en             ;
-wire                             bist_run            ;
-wire                             bist_load           ;
+wire                           bist_en                                ;
+wire                           bist_run                               ;
+wire                           bist_load                              ;
 
-wire                             bist_sdi            ;
-wire                             bist_shift          ;
-wire                             bist_sdo            ;
+wire                           bist_sdi                               ;
+wire                           bist_shift                             ;
+wire                           bist_sdo                               ;
 
-wire                             bist_done           ;
-wire [3:0]                       bist_error          ;
-wire [3:0]                       bist_correct        ;
-wire [3:0]                       bist_error_cnt0     ;
-wire [3:0]                       bist_error_cnt1     ;
-wire [3:0]                       bist_error_cnt2     ;
-wire [3:0]                       bist_error_cnt3     ;
+wire                           bist_done                              ;
+wire [3:0]                     bist_error                             ;
+wire [3:0]                     bist_correct                           ;
+wire [3:0]                     bist_error_cnt0                        ;
+wire [3:0]                     bist_error_cnt1                        ;
+wire [3:0]                     bist_error_cnt2                        ;
+wire [3:0]                     bist_error_cnt3                        ;
 
 // With Repeater Buffer
-wire                             bist_en_rp          ;
-wire                             bist_run_rp         ;
-wire                             bist_load_rp        ;
+wire                           bist_en_rp                             ;
+wire                           bist_run_rp                            ;
+wire                           bist_load_rp                           ;
 
-wire                             bist_sdi_rp         ;
-wire                             bist_shift_rp       ;
-wire                             bist_sdo_rp         ;
+wire                           bist_sdi_rp                            ;
+wire                           bist_shift_rp                          ;
+wire                           bist_sdo_rp                            ;
 
-wire                             bist_done_rp        ;
-wire [3:0]                       bist_error_rp       ;
-wire [3:0]                       bist_correct_rp     ;
-wire [3:0]                       bist_error_cnt0_rp  ;
-wire [3:0]                       bist_error_cnt1_rp  ;
-wire [3:0]                       bist_error_cnt2_rp  ;
-wire [3:0]                       bist_error_cnt3_rp  ;
+wire                           bist_done_rp                           ;
+wire [3:0]                     bist_error_rp                          ;
+wire [3:0]                     bist_correct_rp                        ;
+wire [3:0]                     bist_error_cnt0_rp                     ;
+wire [3:0]                     bist_error_cnt1_rp                     ;
+wire [3:0]                     bist_error_cnt2_rp                     ;
+wire [3:0]                     bist_error_cnt3_rp                     ;
 
 // towards memory MBIST1
 // PORT-A
-//wire   [BIST_NO_SRAM-1:0]      mem_clk_a;
-//wire   [BIST1_ADDR_WD-1:2]     mem0_addr_a;
-//wire   [BIST1_ADDR_WD-1:2]     mem1_addr_a;
-//wire   [BIST1_ADDR_WD-1:2]     mem2_addr_a;
-//wire   [BIST1_ADDR_WD-1:2]     mem3_addr_a;
-//wire   [BIST_NO_SRAM-1:0]      mem_cen_a;
-//wire   [BIST_NO_SRAM-1:0]      mem_web_a;
-//wire [BIST_DATA_WD/8-1:0]      mem0_mask_a;
-//wire [BIST_DATA_WD/8-1:0]      mem1_mask_a;
-//wire [BIST_DATA_WD/8-1:0]      mem2_mask_a;
-//wire [BIST_DATA_WD/8-1:0]      mem3_mask_a;
-//wire   [BIST_DATA_WD-1:0]      mem0_din_a;
-//wire   [BIST_DATA_WD-1:0]      mem1_din_a;
-//wire   [BIST_DATA_WD-1:0]      mem2_din_a;
-//wire   [BIST_DATA_WD-1:0]      mem3_din_a;
-//wire   [BIST_DATA_WD-1:0]      mem0_dout_a;
-//wire   [BIST_DATA_WD-1:0]      mem1_dout_a;
-//wire   [BIST_DATA_WD-1:0]      mem2_dout_a;
-//wire   [BIST_DATA_WD-1:0]      mem3_dout_a;
+wire   [BIST_NO_SRAM-1:0]      mem_clk_a                              ;
+wire   [BIST1_ADDR_WD-1:2]     mem0_addr_a                            ;
+wire   [BIST1_ADDR_WD-1:2]     mem1_addr_a                            ;
+wire   [BIST1_ADDR_WD-1:2]     mem2_addr_a                            ;
+wire   [BIST1_ADDR_WD-1:2]     mem3_addr_a                            ;
+wire   [BIST_NO_SRAM-1:0]      mem_cen_a                              ;
+wire   [BIST_NO_SRAM-1:0]      mem_web_a                              ;
+wire [BIST_DATA_WD/8-1:0]      mem0_mask_a                            ;
+wire [BIST_DATA_WD/8-1:0]      mem1_mask_a                            ;
+wire [BIST_DATA_WD/8-1:0]      mem2_mask_a                            ;
+wire [BIST_DATA_WD/8-1:0]      mem3_mask_a                            ;
+wire   [BIST_DATA_WD-1:0]      mem0_din_a                             ;
+wire   [BIST_DATA_WD-1:0]      mem1_din_a                             ;
+wire   [BIST_DATA_WD-1:0]      mem2_din_a                             ;
+wire   [BIST_DATA_WD-1:0]      mem3_din_a                             ;
+wire   [BIST_DATA_WD-1:0]      mem0_dout_a                            ;
+wire   [BIST_DATA_WD-1:0]      mem1_dout_a                            ;
+wire   [BIST_DATA_WD-1:0]      mem2_dout_a                            ;
+wire   [BIST_DATA_WD-1:0]      mem3_dout_a                            ;
 
 // PORT-B
-//wire [BIST_NO_SRAM-1:0]        mem_clk_b;
-//wire [BIST_NO_SRAM-1:0]        mem_cen_b;
-//wire [BIST1_ADDR_WD-1:2]       mem0_addr_b;
-//wire [BIST1_ADDR_WD-1:2]       mem1_addr_b;
-//wire [BIST1_ADDR_WD-1:2]       mem2_addr_b;
-//wire [BIST1_ADDR_WD-1:2]       mem3_addr_b;
+wire [BIST_NO_SRAM-1:0]        mem_clk_b                              ;
+wire [BIST_NO_SRAM-1:0]        mem_cen_b                              ;
+wire [BIST1_ADDR_WD-1:2]       mem0_addr_b                            ;
+wire [BIST1_ADDR_WD-1:2]       mem1_addr_b                            ;
+wire [BIST1_ADDR_WD-1:2]       mem2_addr_b                            ;
+wire [BIST1_ADDR_WD-1:2]       mem3_addr_b                            ;
 
-wire [3:0]                     spi_csn;
+wire [3:0]                     spi_csn                                ;
 
 /////////////////////////////////////////////////////////
 // Clock Skew Ctrl
@@ -641,63 +670,63 @@
 
 wb_host u_wb_host(
 `ifdef USE_POWER_PINS
-    .vccd1                 (vccd1                    ),// User area 1 1.8V supply
-    .vssd1                 (vssd1                    ),// User area 1 digital ground
+          .vccd1              (vccd1                        ),// User area 1 1.8V supply
+          .vssd1              (vssd1                        ),// User area 1 digital ground
 `endif
-       .user_clock1      (wb_clk_i             ),
-       .user_clock2      (user_clock2          ),
+          .user_clock1        (wb_clk_i                     ),
+          .user_clock2        (user_clock2                  ),
 
-       .cpu_clk          (cpu_clk              ),
-       .rtc_clk          (rtc_clk              ),
-       .usb_clk          (usb_clk              ),
+          .cpu_clk            (cpu_clk                      ),
+          .rtc_clk            (rtc_clk                      ),
+          .usb_clk            (usb_clk                      ),
 
-       .wbd_int_rst_n    (wbd_int_rst_n        ),
-       .cpu_rst_n        (cpu_rst_n            ),
-       .qspim_rst_n      (qspim_rst_n          ),
-       .sspim_rst_n      (sspim_rst_n          ), // spi reset
-       .uart_rst_n       (uart_rst_n           ), // uart reset
-       .i2cm_rst_n       (i2c_rst_n            ), // i2c reset
-       .usb_rst_n        (usb_rst_n            ), // usb reset
-       .bist_rst_n       (bist_rst_n           ), // BIST Reset  
+          .wbd_int_rst_n      (wbd_int_rst_n                ),
+          .cpu_rst_n          (cpu_rst_n                    ),
+          .qspim_rst_n        (qspim_rst_n                  ),
+          .sspim_rst_n        (sspim_rst_n                  ), // spi reset
+          .uart_rst_n         (uart_rst_n                   ), // uart reset
+          .i2cm_rst_n         (i2c_rst_n                    ), // i2c reset
+          .usb_rst_n          (usb_rst_n                    ), // usb reset
+          .bist_rst_n         (bist_rst_n                   ), // BIST Reset  
 
     // 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_err_o        (                     ),  
+          .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_err_o          (                             ),  
 
     // Clock Skeq Adjust
-       .wbd_clk_int      (wbd_clk_int          ),
-       .wbd_clk_wh       (wbd_clk_wh           ),  
-       .cfg_cska_wh      (cfg_cska_wh          ),
+          .wbd_clk_int        (wbd_clk_int                  ),
+          .wbd_clk_wh         (wbd_clk_wh                   ),  
+          .cfg_cska_wh        (cfg_cska_wh                  ),
 
     // Slave Port
-       .wbs_clk_out      (wbd_clk_int          ),
-       .wbs_clk_i        (wbd_clk_wh           ),  
-       .wbs_cyc_o        (wbd_int_cyc_i        ),  
-       .wbs_stb_o        (wbd_int_stb_i        ),  
-       .wbs_adr_o        (wbd_int_adr_i        ),  
-       .wbs_we_o         (wbd_int_we_i         ),  
-       .wbs_dat_o        (wbd_int_dat_i        ),  
-       .wbs_sel_o        (wbd_int_sel_i        ),  
-       .wbs_dat_i        (wbd_int_dat_o        ),  
-       .wbs_ack_i        (wbd_int_ack_o        ),  
-       .wbs_err_i        (wbd_int_err_o        ),  
+          .wbs_clk_out        (wbd_clk_int                  ),
+          .wbs_clk_i          (wbd_clk_wh                   ),  
+          .wbs_cyc_o          (wbd_int_cyc_i                ),  
+          .wbs_stb_o          (wbd_int_stb_i                ),  
+          .wbs_adr_o          (wbd_int_adr_i                ),  
+          .wbs_we_o           (wbd_int_we_i                 ),  
+          .wbs_dat_o          (wbd_int_dat_i                ),  
+          .wbs_sel_o          (wbd_int_sel_i                ),  
+          .wbs_dat_i          (wbd_int_dat_o                ),  
+          .wbs_ack_i          (wbd_int_ack_o                ),  
+          .wbs_err_i          (wbd_int_err_o                ),  
 
-       .cfg_clk_ctrl1    (cfg_clk_ctrl1        ),
-       .cfg_clk_ctrl2    (cfg_clk_ctrl2        ),
+          .cfg_clk_ctrl1      (cfg_clk_ctrl1                ),
+          .cfg_clk_ctrl2      (cfg_clk_ctrl2                ),
 
-       .la_data_in       (la_data_in[17:0]     ),
+          .la_data_in         (la_data_in[17:0]             ),
 
-       .uartm_rxd        (uartm_rxd            ),
-       .uartm_txd        (uartm_txd            )
+          .uartm_rxd          (uartm_rxd                    ),
+          .uartm_txd          (uartm_txd                    )
 
 
     );
@@ -710,198 +739,267 @@
 //------------------------------------------------------------------------------
 ycr1_top_wb u_riscv_top (
 `ifdef USE_POWER_PINS
-    .vccd1                 (vccd1                    ),// User area 1 1.8V supply
-    .vssd1                 (vssd1                    ),// User area 1 digital ground
+          .vccd1              (vccd1                        ),// User area 1 1.8V supply
+          .vssd1              (vssd1                        ),// User area 1 digital ground
 `endif
-    .wbd_clk_int           (wbd_clk_risc_rp          ), 
-    .cfg_cska_riscv        (cfg_cska_riscv_rp        ), 
-    .wbd_clk_riscv         (wbd_clk_riscv_skew       ),
+          .wbd_clk_int        (wbd_clk_risc_rp              ), 
+          .cfg_cska_riscv     (cfg_cska_riscv_rp            ), 
+          .wbd_clk_riscv      (wbd_clk_riscv_skew           ),
 
     // Reset
-    .pwrup_rst_n            (wbd_int_rst_n             ),
-    .rst_n                  (wbd_int_rst_n             ),
-    .cpu_rst_n              (cpu_rst_n                 ),
-    .riscv_debug            (riscv_debug               ),
+          .pwrup_rst_n        (wbd_int_rst_n                ),
+          .rst_n              (wbd_int_rst_n                ),
+          .cpu_rst_n          (cpu_rst_n                    ),
+          .riscv_debug        (riscv_debug                  ),
 
     // Clock
-    .core_clk               (cpu_clk                   ),
-    .rtc_clk                (rtc_clk                   ),
+          .core_clk           (cpu_clk                      ),
+          .rtc_clk            (rtc_clk                      ),
 
     // Fuses
-    .fuse_mhartid           (fuse_mhartid_rp           ),
+          .fuse_mhartid       (fuse_mhartid_rp              ),
 
     // IRQ
-    .irq_lines              (irq_lines_rp              ), 
-    .soft_irq               (soft_irq_rp               ), // TODO - Interrupts
+          .irq_lines          (irq_lines_rp                 ), 
+          .soft_irq           (soft_irq_rp                  ), // TODO - Interrupts
 
     // DFT
-    // .test_mode           (1'b0                      ), // Moved inside IP
-    // .test_rst_n          (1'b1                      ), // Moved inside IP
+    //    .test_mode          (1'b0                         ), // Moved inside IP
+    //    .test_rst_n         (1'b1                         ), // Moved inside IP
 
 `ifndef SCR1_TCM_MEM
     // SRAM-0 PORT-0
-    .sram0_clk0             (sram0_clk0                ),
-    .sram0_csb0             (sram0_csb0                ),
-    .sram0_web0             (sram0_web0                ),
-    .sram0_addr0            (sram0_addr0               ),
-    .sram0_wmask0           (sram0_wmask0              ),
-    .sram0_din0             (sram0_din0                ),
-    .sram0_dout0            (sram0_dout0               ),
+          .sram0_clk0         (sram0_clk0                   ),
+          .sram0_csb0         (sram0_csb0                   ),
+          .sram0_web0         (sram0_web0                   ),
+          .sram0_addr0        (sram0_addr0                  ),
+          .sram0_wmask0       (sram0_wmask0                 ),
+          .sram0_din0         (sram0_din0                   ),
+          .sram0_dout0        (sram0_dout0                  ),
     
     // SRAM-0 PORT-0
-    .sram0_clk1             (sram0_clk1                ),
-    .sram0_csb1             (sram0_csb1                ),
-    .sram0_addr1            (sram0_addr1               ),
-    .sram0_dout1            (sram0_dout1               ),
+          .sram0_clk1         (sram0_clk1                   ),
+          .sram0_csb1         (sram0_csb1                   ),
+          .sram0_addr1        (sram0_addr1                  ),
+          .sram0_dout1        (sram0_dout1                  ),
 
   //  // SRAM-1 PORT-0
-  //  .sram1_clk0             (sram1_clk0                ),
-  //  .sram1_csb0             (sram1_csb0                ),
-  //  .sram1_web0             (sram1_web0                ),
-  //  .sram1_addr0            (sram1_addr0               ),
-  //  .sram1_wmask0           (sram1_wmask0              ),
-  //  .sram1_din0             (sram1_din0                ),
-  //  .sram1_dout0            (sram1_dout0               ),
+  //      .sram1_clk0         (sram1_clk0                   ),
+  //      .sram1_csb0         (sram1_csb0                   ),
+  //      .sram1_web0         (sram1_web0                   ),
+  //      .sram1_addr0        (sram1_addr0                  ),
+  //      .sram1_wmask0       (sram1_wmask0                 ),
+  //      .sram1_din0         (sram1_din0                   ),
+  //      .sram1_dout0        (sram1_dout0                  ),
   //  
   //  // SRAM PORT-0
-  //  .sram1_clk1             (sram1_clk1                ),
-  //  .sram1_csb1             (sram1_csb1                ),
-  //  .sram1_addr1            (sram1_addr1               ),
-  //  .sram1_dout1            (sram1_dout1               ),
+  //      .sram1_clk1         (sram1_clk1                   ),
+  //      .sram1_csb1         (sram1_csb1                   ),
+  //      .sram1_addr1        (sram1_addr1                  ),
+  //      .sram1_dout1        (sram1_dout1                  ),
 `endif
     
-    .wb_rst_n               (wbd_int_rst_n               ),
-    .wb_clk                 (wbd_clk_riscv_skew          ),
+          .wb_rst_n           (wbd_int_rst_n                ),
+          .wb_clk             (wbd_clk_riscv_skew           ),
 
     // Instruction cache memory interface
-    .wb_icache_stb_o       (wbd_riscv_icache_stb_i      ),
-    .wb_icache_adr_o       (wbd_riscv_icache_adr_i      ),
-    .wb_icache_we_o        (wbd_riscv_icache_we_i       ), 
-    .wb_icache_dat_o       (wbd_riscv_icache_dat_i      ),
-    .wb_icache_sel_o       (wbd_riscv_icache_sel_i      ),
-    .wb_icache_bl_o        (wbd_riscv_icache_bl_i       ),
-    .wb_icache_bry_o       (wbd_riscv_icache_bry_i      ),
-    .wb_icache_dat_i       (wbd_riscv_icache_dat_o      ),
-    .wb_icache_ack_i       (wbd_riscv_icache_ack_o      ),
-    .wb_icache_lack_i      (wbd_riscv_icache_lack_o     ),
-    .wb_icache_err_i       (wbd_riscv_icache_err_o      ),
+          .wb_icache_stb_o    (wbd_riscv_icache_stb_i       ),
+          .wb_icache_adr_o    (wbd_riscv_icache_adr_i       ),
+          .wb_icache_we_o     (wbd_riscv_icache_we_i        ), 
+          .wb_icache_sel_o    (wbd_riscv_icache_sel_i       ),
+          .wb_icache_bl_o     (wbd_riscv_icache_bl_i        ),
+          .wb_icache_bry_o    (wbd_riscv_icache_bry_i       ),
+          .wb_icache_dat_i    (wbd_riscv_icache_dat_o       ),
+          .wb_icache_ack_i    (wbd_riscv_icache_ack_o       ),
+          .wb_icache_lack_i   (wbd_riscv_icache_lack_o      ),
+          .wb_icache_err_i    (wbd_riscv_icache_err_o       ),
+
+          .icache_mem_clk0    (icache_mem_clk0              ), // CLK
+          .icache_mem_csb0    (icache_mem_csb0              ), // CS#
+          .icache_mem_web0    (icache_mem_web0              ), // WE#
+          .icache_mem_addr0   (icache_mem_addr0             ), // Address
+          .icache_mem_wmask0  (icache_mem_wmask0            ), // WMASK#
+          .icache_mem_din0    (icache_mem_din0              ), // Write Data
+//        .icache_mem_dout0   (icache_mem_dout0             ), // Read Data
+                                
+                                
+          .icache_mem_clk1    (icache_mem_clk1              ), // CLK
+          .icache_mem_csb1    (icache_mem_csb1              ), // CS#
+          .icache_mem_addr1   (icache_mem_addr1             ), // Address
+          .icache_mem_dout1   (icache_mem_dout1             ), // Read Data
 
     // Data cache memory interface
-    .wb_dcache_stb_o       (wbd_riscv_dcache_stb_i     ),
-    .wb_dcache_adr_o       (wbd_riscv_dcache_adr_i     ),
-    .wb_dcache_we_o        (wbd_riscv_dcache_we_i      ), 
-    .wb_dcache_dat_o       (wbd_riscv_dcache_dat_i     ),
-    .wb_dcache_sel_o       (wbd_riscv_dcache_sel_i     ),
-    .wb_dcache_bl_o        (wbd_riscv_dcache_bl_i      ),
-    .wb_dcache_bry_o       (wbd_riscv_dcache_bry_i     ),
-    .wb_dcache_dat_i       (wbd_riscv_dcache_dat_o     ),
-    .wb_dcache_ack_i       (wbd_riscv_dcache_ack_o     ),
-    .wb_dcache_lack_i      (wbd_riscv_dcache_lack_o    ),
-    .wb_dcache_err_i       (wbd_riscv_dcache_err_o     ),
+          .wb_dcache_stb_o    (wbd_riscv_dcache_stb_i       ),
+          .wb_dcache_adr_o    (wbd_riscv_dcache_adr_i       ),
+          .wb_dcache_we_o     (wbd_riscv_dcache_we_i        ), 
+          .wb_dcache_dat_o    (wbd_riscv_dcache_dat_i       ),
+          .wb_dcache_sel_o    (wbd_riscv_dcache_sel_i       ),
+          .wb_dcache_bl_o     (wbd_riscv_dcache_bl_i        ),
+          .wb_dcache_bry_o    (wbd_riscv_dcache_bry_i       ),
+          .wb_dcache_dat_i    (wbd_riscv_dcache_dat_o       ),
+          .wb_dcache_ack_i    (wbd_riscv_dcache_ack_o       ),
+          .wb_dcache_lack_i   (wbd_riscv_dcache_lack_o      ),
+          .wb_dcache_err_i    (wbd_riscv_dcache_err_o       ),
+
+          .dcache_mem_clk0    (dcache_mem_clk0              ), // CLK
+          .dcache_mem_csb0    (dcache_mem_csb0              ), // CS#
+          .dcache_mem_web0    (dcache_mem_web0              ), // WE#
+          .dcache_mem_addr0   (dcache_mem_addr0             ), // Address
+          .dcache_mem_wmask0  (dcache_mem_wmask0            ), // WMASK#
+          .dcache_mem_din0    (dcache_mem_din0              ), // Write Data
+          .dcache_mem_dout0   (dcache_mem_dout0             ), // Read Data
+                                
+                                
+          .dcache_mem_clk1    (dcache_mem_clk1              ), // CLK
+          .dcache_mem_csb1    (dcache_mem_csb1              ), // CS#
+          .dcache_mem_addr1   (dcache_mem_addr1             ), // Address
+          .dcache_mem_dout1   (dcache_mem_dout1             ), // Read Data
+
 
     // Data memory interface
-    .wbd_dmem_stb_o         (wbd_riscv_dmem_stb_i      ),
-    .wbd_dmem_adr_o         (wbd_riscv_dmem_adr_i      ),
-    .wbd_dmem_we_o          (wbd_riscv_dmem_we_i       ), 
-    .wbd_dmem_dat_o         (wbd_riscv_dmem_dat_i      ),
-    .wbd_dmem_sel_o         (wbd_riscv_dmem_sel_i      ),
-    .wbd_dmem_dat_i         (wbd_riscv_dmem_dat_o      ),
-    .wbd_dmem_ack_i         (wbd_riscv_dmem_ack_o      ),
-    .wbd_dmem_err_i         (wbd_riscv_dmem_err_o      ) 
+          .wbd_dmem_stb_o     (wbd_riscv_dmem_stb_i         ),
+          .wbd_dmem_adr_o     (wbd_riscv_dmem_adr_i         ),
+          .wbd_dmem_we_o      (wbd_riscv_dmem_we_i          ), 
+          .wbd_dmem_dat_o     (wbd_riscv_dmem_dat_i         ),
+          .wbd_dmem_sel_o     (wbd_riscv_dmem_sel_i         ),
+          .wbd_dmem_dat_i     (wbd_riscv_dmem_dat_o         ),
+          .wbd_dmem_ack_i     (wbd_riscv_dmem_ack_o         ),
+          .wbd_dmem_err_i     (wbd_riscv_dmem_err_o         ) 
 );
 
 `ifndef SCR1_TCM_MEM
 sky130_sram_2kbyte_1rw1r_32x512_8 u_tsram0_2kb(
 `ifdef USE_POWER_PINS
-    .vccd1 (vccd1),// User area 1 1.8V supply
-    .vssd1 (vssd1),// User area 1 digital ground
+          .vccd1              (vccd1                        ),// area 1 1.8V supply
+          .vssd1              (vssd1                        ),// area 1 digital ground
 `endif
 // Port 0: RW
-    .clk0     (sram0_clk0),
-    .csb0     (sram0_csb0),
-    .web0     (sram0_web0),
-    .wmask0   (sram0_wmask0),
-    .addr0    (sram0_addr0),
-    .din0     (sram0_din0),
-    .dout0    (sram0_dout0),
+          .clk0               (sram0_clk0                   ),
+          .csb0               (sram0_csb0                   ),
+          .web0               (sram0_web0                   ),
+          .wmask0             (sram0_wmask0                 ),
+          .addr0              (sram0_addr0                  ),
+          .din0               (sram0_din0                   ),
+          .dout0              (sram0_dout0                  ),
 // Port 1: R
-    .clk1     (sram0_clk1),
-    .csb1     (sram0_csb1),
-    .addr1    (sram0_addr1),
-    .dout1    (sram0_dout1)
+          .clk1               (sram0_clk1                   ),
+          .csb1               (sram0_csb1                   ),
+          .addr1              (sram0_addr1                  ),
+          .dout1              (sram0_dout1                  )
   );
 
 /***
 sky130_sram_2kbyte_1rw1r_32x512_8 u_tsram1_2kb(
 `ifdef USE_POWER_PINS
-    .vccd1 (vccd1),// User area 1 1.8V supply
-    .vssd1 (vssd1),// User area 1 digital ground
+          .vccd1              (vccd1                        ),// User area 1 1.8V supply
+          .vssd1              (vssd1                        ),// User area 1 digital ground
 `endif
 // Port 0: RW
-    .clk0     (sram1_clk0),
-    .csb0     (sram1_csb0),
-    .web0     (sram1_web0),
-    .wmask0   (sram1_wmask0),
-    .addr0    (sram1_addr0),
-    .din0     (sram1_din0),
-    .dout0    (sram1_dout0),
+          .clk0               (sram1_clk0                   ),
+          .csb0               (sram1_csb0                   ),
+          .web0               (sram1_web0                   ),
+          .wmask0             (sram1_wmask0                 ),
+          .addr0              (sram1_addr0                  ),
+          .din0               (sram1_din0                   ),
+          .dout0              (sram1_dout0                  ),
 // Port 1: R
-    .clk1     (sram1_clk1),
-    .csb1     (sram1_csb1),
-    .addr1    (sram1_addr1),
-    .dout1    (sram1_dout1)
+          .clk1               (sram1_clk1                   ),
+          .csb1               (sram1_csb1                   ),
+          .addr1              (sram1_addr1                  ),
+          .dout1              (sram1_dout1                  )
   );
 ***/
 `endif
 
 
+sky130_sram_2kbyte_1rw1r_32x512_8 u_icache_2kb(
+`ifdef USE_POWER_PINS
+          .vccd1              (vccd1                        ),// User area 1 1.8V supply
+          .vssd1              (vssd1                        ),// User area 1 digital ground
+`endif
+// Port 0: RW
+          .clk0               (icache_mem_clk0              ),
+          .csb0               (icache_mem_csb0              ),
+          .web0               (icache_mem_web0              ),
+          .wmask0             (icache_mem_wmask0            ),
+          .addr0              (icache_mem_addr0             ),
+          .din0               (icache_mem_din0              ),
+          .dout0              (                             ),
+// Port 1: R
+          .clk1               (icache_mem_clk1              ),
+          .csb1               (icache_mem_csb1              ),
+          .addr1              (icache_mem_addr1             ),
+          .dout1              (icache_mem_dout1             )
+  );
+
+sky130_sram_2kbyte_1rw1r_32x512_8 u_dcache_2kb(
+`ifdef USE_POWER_PINS
+          .vccd1              (vccd1                        ),// User area 1 1.8V supply
+          .vssd1              (vssd1                        ),// User area 1 digital ground
+`endif
+// Port 0: RW
+          .clk0               (dcache_mem_clk0              ),
+          .csb0               (dcache_mem_csb0              ),
+          .web0               (dcache_mem_web0              ),
+          .wmask0             (dcache_mem_wmask0            ),
+          .addr0              (dcache_mem_addr0             ),
+          .din0               (dcache_mem_din0              ),
+          .dout0              (dcache_mem_dout0             ),
+// Port 1: R
+          .clk1               (dcache_mem_clk1              ),
+          .csb1               (dcache_mem_csb1              ),
+          .addr1              (dcache_mem_addr1             ),
+          .dout1              (dcache_mem_dout1             )
+  );
+
+
 /*********************************************************
 * SPI Master
-* This is an implementation of an SPI master that is controlled via an AXI bus. 
+* This is implementation of an SPI master that is controlled via an AXI bus                                                  . 
 * It has FIFOs for transmitting and receiving data. 
 * It supports both the normal SPI mode and QPI mode with 4 data lines.
 * *******************************************************/
 
 qspim_top
-#(
+#                             (
 `ifndef SYNTHESIS
-    .WB_WIDTH  (WB_WIDTH)
+    .WB_WIDTH  (WB_WIDTH                                    )
 `endif
 ) u_qspi_master
 (
 `ifdef USE_POWER_PINS
-         .vccd1         (vccd1                 ),// User area 1 1.8V supply
-         .vssd1         (vssd1                 ),// User area 1 digital ground
+          .vccd1              (vccd1                        ),// User area 1 1.8V supply
+          .vssd1              (vssd1                        ),// User area 1 digital ground
 `endif
-    .mclk                   (wbd_clk_spi               ),
-    .rst_n                  (qspim_rst_n               ),
+          .mclk               (wbd_clk_spi                  ),
+          .rst_n              (qspim_rst_n                  ),
 
     // Clock Skew Adjust
-    .cfg_cska_sp_co         (cfg_cska_qspi_co_rp       ),
-    .cfg_cska_spi           (cfg_cska_qspi_rp          ),
-    .wbd_clk_int            (wbd_clk_qspi_rp           ),
-    .wbd_clk_spi            (wbd_clk_spi               ),
+          .cfg_cska_sp_co     (cfg_cska_qspi_co_rp          ),
+          .cfg_cska_spi       (cfg_cska_qspi_rp             ),
+          .wbd_clk_int        (wbd_clk_qspi_rp              ),
+          .wbd_clk_spi        (wbd_clk_spi                  ),
 
-    .wbd_stb_i              (wbd_spim_stb_o            ),
-    .wbd_adr_i              (wbd_spim_adr_o            ),
-    .wbd_we_i               (wbd_spim_we_o             ), 
-    .wbd_dat_i              (wbd_spim_dat_o            ),
-    .wbd_sel_i              (wbd_spim_sel_o            ),
-    .wbd_bl_i               (wbd_spim_bl_o             ),
-    .wbd_bry_i              (wbd_spim_bry_o            ),
-    .wbd_dat_o              (wbd_spim_dat_i            ),
-    .wbd_ack_o              (wbd_spim_ack_i            ),
-    .wbd_lack_o             (wbd_spim_lack_i           ),
-    .wbd_err_o              (wbd_spim_err_i            ),
+          .wbd_stb_i          (wbd_spim_stb_o               ),
+          .wbd_adr_i          (wbd_spim_adr_o               ),
+          .wbd_we_i           (wbd_spim_we_o                ), 
+          .wbd_dat_i          (wbd_spim_dat_o               ),
+          .wbd_sel_i          (wbd_spim_sel_o               ),
+          .wbd_bl_i           (wbd_spim_bl_o                ),
+          .wbd_bry_i          (wbd_spim_bry_o               ),
+          .wbd_dat_o          (wbd_spim_dat_i               ),
+          .wbd_ack_o          (wbd_spim_ack_i               ),
+          .wbd_lack_o         (wbd_spim_lack_i              ),
+          .wbd_err_o          (wbd_spim_err_i               ),
 
-    .spi_debug              (spi_debug                 ),
+          .spi_debug          (spi_debug                    ),
 
     // Pad Interface
-    .spi_sdi                (sflash_di                 ),
-    .spi_clk                (sflash_sck                ),
-    .spi_csn                (spi_csn                   ),
-    .spi_sdo                (sflash_do                 ),
-    .spi_oen                (sflash_oen                )
+          .spi_sdi            (sflash_di                    ),
+          .spi_clk            (sflash_sck                   ),
+          .spi_csn            (spi_csn                      ),
+          .spi_sdo            (sflash_do                    ),
+          .spi_oen            (sflash_oen                   )
 
 );
 
@@ -909,15 +1007,15 @@
 
 wb_interconnect  #(
 	`ifndef SYNTHESIS
-	        .CH_CLK_WD(8),
-	        .CH_DATA_WD(116)
+	         .CH_CLK_WD          (8                            ),
+	         .CH_DATA_WD         (116                          )
         `endif
 	) u_intercon (
 `ifdef USE_POWER_PINS
-         .vccd1         (vccd1                 ),// User area 1 1.8V supply
-         .vssd1         (vssd1                 ),// User area 1 digital ground
+          .vccd1              (vccd1                        ),// User area 1 1.8V supply
+          .vssd1              (vssd1                        ),// User area 1 digital ground
 `endif
-	 .ch_clk_in     ({
+	   .ch_clk_in          ({
                           wbd_clk_int, 
                           wbd_clk_int, 
                           wbd_clk_int, 
@@ -925,8 +1023,8 @@
                           wbd_clk_int, 
                           wbd_clk_int, 
                           wbd_clk_int, 
-                          wbd_clk_int}),
-	 .ch_clk_out    ({
+                          wbd_clk_int}                      ),
+	   .ch_clk_out         ({
                           wbd_clk_mbist4_rp, 
                           wbd_clk_mbist3_rp, 
                           wbd_clk_mbist2_rp, 
@@ -934,8 +1032,8 @@
                           wbd_clk_pinmux_rp, 
                           wbd_clk_uart_rp, 
                           wbd_clk_qspi_rp, 
-                          wbd_clk_risc_rp}),
-	 .ch_data_in    ({
+                          wbd_clk_risc_rp}                  ),
+	   .ch_data_in    ({
 	                 bist_error_cnt3[3:0],
 			 bist_correct[3],
 			 bist_error[3],
@@ -974,7 +1072,7 @@
 		         cfg_cska_qspi[3:0],
                          cfg_cska_riscv[3:0]
 			 } ),
-	 .ch_data_out   ({
+	    .ch_data_out   ({
 	                 bist_error_cnt3_rp[3:0],
 			 bist_correct_rp[3],
 			 bist_error_rp[3],
@@ -1013,115 +1111,114 @@
                          cfg_cska_riscv_rp[3:0]
                          }),
      // Clock Skew adjust
-	 .wbd_clk_int   (wbd_clk_int           ), 
-	 .cfg_cska_wi   (cfg_cska_wi           ), 
-	 .wbd_clk_wi    (wbd_clk_wi_skew       ),
+	         .wbd_clk_int        (wbd_clk_int                  ), 
+	         .cfg_cska_wi        (cfg_cska_wi                  ), 
+	         .wbd_clk_wi         (wbd_clk_wi_skew              ),
 
-         .clk_i         (wbd_clk_wi_skew       ), 
-         .rst_n         (wbd_int_rst_n         ),
-	 .dcache_remap  (dcache_remap          ),
-	 .boot_remap    (boot_remap            ),
+                 .clk_i              (wbd_clk_wi_skew              ), 
+                 .rst_n              (wbd_int_rst_n                ),
+                 .dcache_remap       (dcache_remap                 ),
+                 .boot_remap         (boot_remap                   ),
 
          // Master 0 Interface
-         .m0_wbd_dat_i  (wbd_int_dat_i         ),
-         .m0_wbd_adr_i  (wbd_int_adr_i         ),
-         .m0_wbd_sel_i  (wbd_int_sel_i         ),
-         .m0_wbd_we_i   (wbd_int_we_i          ),
-         .m0_wbd_cyc_i  (wbd_int_cyc_i         ),
-         .m0_wbd_stb_i  (wbd_int_stb_i         ),
-         .m0_wbd_dat_o  (wbd_int_dat_o         ),
-         .m0_wbd_ack_o  (wbd_int_ack_o         ),
-         .m0_wbd_err_o  (wbd_int_err_o         ),
+          .m0_wbd_dat_i       (wbd_int_dat_i                ),
+          .m0_wbd_adr_i       (wbd_int_adr_i                ),
+          .m0_wbd_sel_i       (wbd_int_sel_i                ),
+          .m0_wbd_we_i        (wbd_int_we_i                 ),
+          .m0_wbd_cyc_i       (wbd_int_cyc_i                ),
+          .m0_wbd_stb_i       (wbd_int_stb_i                ),
+          .m0_wbd_dat_o       (wbd_int_dat_o                ),
+          .m0_wbd_ack_o       (wbd_int_ack_o                ),
+          .m0_wbd_err_o       (wbd_int_err_o                ),
          
          // Master 1 Interface
-         .m1_wbd_dat_i  (wbd_riscv_dmem_dat_i  ),
-         .m1_wbd_adr_i  (wbd_riscv_dmem_adr_i  ),
-         .m1_wbd_sel_i  (wbd_riscv_dmem_sel_i  ),
-         .m1_wbd_we_i   (wbd_riscv_dmem_we_i   ),
-         .m1_wbd_cyc_i  (wbd_riscv_dmem_stb_i  ),
-         .m1_wbd_stb_i  (wbd_riscv_dmem_stb_i  ),
-         .m1_wbd_dat_o  (wbd_riscv_dmem_dat_o  ),
-         .m1_wbd_ack_o  (wbd_riscv_dmem_ack_o  ),
-         .m1_wbd_err_o  (wbd_riscv_dmem_err_o  ),
+          .m1_wbd_dat_i       (wbd_riscv_dmem_dat_i         ),
+          .m1_wbd_adr_i       (wbd_riscv_dmem_adr_i         ),
+          .m1_wbd_sel_i       (wbd_riscv_dmem_sel_i         ),
+          .m1_wbd_we_i        (wbd_riscv_dmem_we_i          ),
+          .m1_wbd_cyc_i       (wbd_riscv_dmem_stb_i         ),
+          .m1_wbd_stb_i       (wbd_riscv_dmem_stb_i         ),
+          .m1_wbd_dat_o       (wbd_riscv_dmem_dat_o         ),
+          .m1_wbd_ack_o       (wbd_riscv_dmem_ack_o         ),
+          .m1_wbd_err_o       (wbd_riscv_dmem_err_o         ),
          
          // Master 2 Interface
-         .m2_wbd_dat_i  (wbd_riscv_dcache_dat_i  ),
-         .m2_wbd_adr_i  (wbd_riscv_dcache_adr_i  ),
-         .m2_wbd_sel_i  (wbd_riscv_dcache_sel_i  ),
-         .m2_wbd_bl_i   (wbd_riscv_dcache_bl_i   ),
-         .m2_wbd_bry_i  (wbd_riscv_dcache_bry_i  ),
-         .m2_wbd_we_i   (wbd_riscv_dcache_we_i   ),
-         .m2_wbd_cyc_i  (wbd_riscv_dcache_stb_i  ),
-         .m2_wbd_stb_i  (wbd_riscv_dcache_stb_i  ),
-         .m2_wbd_dat_o  (wbd_riscv_dcache_dat_o  ),
-         .m2_wbd_ack_o  (wbd_riscv_dcache_ack_o  ),
-         .m2_wbd_lack_o (wbd_riscv_dcache_lack_o ),
-         .m2_wbd_err_o  (wbd_riscv_dcache_err_o  ),
+          .m2_wbd_dat_i       (wbd_riscv_dcache_dat_i       ),
+          .m2_wbd_adr_i       (wbd_riscv_dcache_adr_i       ),
+          .m2_wbd_sel_i       (wbd_riscv_dcache_sel_i       ),
+          .m2_wbd_bl_i        (wbd_riscv_dcache_bl_i        ),
+          .m2_wbd_bry_i       (wbd_riscv_dcache_bry_i       ),
+          .m2_wbd_we_i        (wbd_riscv_dcache_we_i        ),
+          .m2_wbd_cyc_i       (wbd_riscv_dcache_stb_i       ),
+          .m2_wbd_stb_i       (wbd_riscv_dcache_stb_i       ),
+          .m2_wbd_dat_o       (wbd_riscv_dcache_dat_o       ),
+          .m2_wbd_ack_o       (wbd_riscv_dcache_ack_o       ),
+          .m2_wbd_lack_o      (wbd_riscv_dcache_lack_o      ),
+          .m2_wbd_err_o       (wbd_riscv_dcache_err_o       ),
 
          // Master 3 Interface
-         .m3_wbd_dat_i  (wbd_riscv_icache_dat_i  ),
-         .m3_wbd_adr_i  (wbd_riscv_icache_adr_i  ),
-         .m3_wbd_sel_i  (wbd_riscv_icache_sel_i  ),
-         .m3_wbd_bl_i   (wbd_riscv_icache_bl_i   ),
-         .m3_wbd_bry_i  (wbd_riscv_icache_bry_i  ),
-         .m3_wbd_we_i   (wbd_riscv_icache_we_i   ),
-         .m3_wbd_cyc_i  (wbd_riscv_icache_stb_i  ),
-         .m3_wbd_stb_i  (wbd_riscv_icache_stb_i  ),
-         .m3_wbd_dat_o  (wbd_riscv_icache_dat_o  ),
-         .m3_wbd_ack_o  (wbd_riscv_icache_ack_o  ),
-         .m3_wbd_lack_o (wbd_riscv_icache_lack_o ),
-         .m3_wbd_err_o  (wbd_riscv_icache_err_o  ),
+          .m3_wbd_adr_i       (wbd_riscv_icache_adr_i       ),
+          .m3_wbd_sel_i       (wbd_riscv_icache_sel_i       ),
+          .m3_wbd_bl_i        (wbd_riscv_icache_bl_i        ),
+          .m3_wbd_bry_i       (wbd_riscv_icache_bry_i       ),
+          .m3_wbd_we_i        (wbd_riscv_icache_we_i        ),
+          .m3_wbd_cyc_i       (wbd_riscv_icache_stb_i       ),
+          .m3_wbd_stb_i       (wbd_riscv_icache_stb_i       ),
+          .m3_wbd_dat_o       (wbd_riscv_icache_dat_o       ),
+          .m3_wbd_ack_o       (wbd_riscv_icache_ack_o       ),
+          .m3_wbd_lack_o      (wbd_riscv_icache_lack_o      ),
+          .m3_wbd_err_o       (wbd_riscv_icache_err_o       ),
          
          
          // Slave 0 Interface
          // .s0_wbd_err_i  (1'b0           ), - Moved inside IP
-         .s0_wbd_dat_i  (wbd_spim_dat_i ),
-         .s0_wbd_ack_i  (wbd_spim_ack_i ),
-         .s0_wbd_lack_i (wbd_spim_lack_i ),
-         .s0_wbd_dat_o  (wbd_spim_dat_o ),
-         .s0_wbd_adr_o  (wbd_spim_adr_o ),
-         .s0_wbd_bry_o  (wbd_spim_bry_o ),
-         .s0_wbd_bl_o   (wbd_spim_bl_o ),
-         .s0_wbd_sel_o  (wbd_spim_sel_o ),
-         .s0_wbd_we_o   (wbd_spim_we_o  ),  
-         .s0_wbd_cyc_o  (wbd_spim_cyc_o ),
-         .s0_wbd_stb_o  (wbd_spim_stb_o ),
+          .s0_wbd_dat_i       (wbd_spim_dat_i               ),
+          .s0_wbd_ack_i       (wbd_spim_ack_i               ),
+          .s0_wbd_lack_i      (wbd_spim_lack_i              ),
+          .s0_wbd_dat_o       (wbd_spim_dat_o               ),
+          .s0_wbd_adr_o       (wbd_spim_adr_o               ),
+          .s0_wbd_bry_o       (wbd_spim_bry_o               ),
+          .s0_wbd_bl_o        (wbd_spim_bl_o                ),
+          .s0_wbd_sel_o       (wbd_spim_sel_o               ),
+          .s0_wbd_we_o        (wbd_spim_we_o                ),  
+          .s0_wbd_cyc_o       (wbd_spim_cyc_o               ),
+          .s0_wbd_stb_o       (wbd_spim_stb_o               ),
          
          // Slave 1 Interface
          // .s1_wbd_err_i  (1'b0           ), - Moved inside IP
-         .s1_wbd_dat_i  (wbd_uart_dat_i ),
-         .s1_wbd_ack_i  (wbd_uart_ack_i ),
-         .s1_wbd_dat_o  (wbd_uart_dat_o ),
-         .s1_wbd_adr_o  (wbd_uart_adr_o ),
-         .s1_wbd_sel_o  (wbd_uart_sel_o ),
-         .s1_wbd_we_o   (wbd_uart_we_o  ),  
-         .s1_wbd_cyc_o  (wbd_uart_cyc_o ),
-         .s1_wbd_stb_o  (wbd_uart_stb_o ),
+          .s1_wbd_dat_i       (wbd_uart_dat_i               ),
+          .s1_wbd_ack_i       (wbd_uart_ack_i               ),
+          .s1_wbd_dat_o       (wbd_uart_dat_o               ),
+          .s1_wbd_adr_o       (wbd_uart_adr_o               ),
+          .s1_wbd_sel_o       (wbd_uart_sel_o               ),
+          .s1_wbd_we_o        (wbd_uart_we_o                ),  
+          .s1_wbd_cyc_o       (wbd_uart_cyc_o               ),
+          .s1_wbd_stb_o       (wbd_uart_stb_o               ),
          
          // Slave 2 Interface
          // .s2_wbd_err_i  (1'b0           ), - Moved inside IP
-         .s2_wbd_dat_i  (wbd_glbl_dat_i ),
-         .s2_wbd_ack_i  (wbd_glbl_ack_i ),
-         .s2_wbd_dat_o  (wbd_glbl_dat_o ),
-         .s2_wbd_adr_o  (wbd_glbl_adr_o ),
-         .s2_wbd_sel_o  (wbd_glbl_sel_o ),
-         .s2_wbd_we_o   (wbd_glbl_we_o  ),  
-         .s2_wbd_cyc_o  (wbd_glbl_cyc_o ),
-         .s2_wbd_stb_o  (wbd_glbl_stb_o ),
+          .s2_wbd_dat_i       (wbd_glbl_dat_i               ),
+          .s2_wbd_ack_i       (wbd_glbl_ack_i               ),
+          .s2_wbd_dat_o       (wbd_glbl_dat_o               ),
+          .s2_wbd_adr_o       (wbd_glbl_adr_o               ),
+          .s2_wbd_sel_o       (wbd_glbl_sel_o               ),
+          .s2_wbd_we_o        (wbd_glbl_we_o                ),  
+          .s2_wbd_cyc_o       (wbd_glbl_cyc_o               ),
+          .s2_wbd_stb_o       (wbd_glbl_stb_o               ),
 
          // Slave 3 Interface
          // .s3_wbd_err_i  (1'b0          ), - Moved inside IP
-         .s3_wbd_dat_i  (wbd_mbist_dat_i ),
-         .s3_wbd_ack_i  (wbd_mbist_ack_i ),
-         .s3_wbd_lack_i (wbd_mbist_lack_i ),
-         .s3_wbd_dat_o  (wbd_mbist_dat_o ),
-         .s3_wbd_adr_o  (wbd_mbist_adr_o ),
-         .s3_wbd_sel_o  (wbd_mbist_sel_o ),
-         .s3_wbd_bry_o  (wbd_mbist_bry_o ),
-         .s3_wbd_bl_o   (wbd_mbist_bl_o ),
-         .s3_wbd_we_o   (wbd_mbist_we_o  ),  
-         .s3_wbd_cyc_o  (wbd_mbist_cyc_o ),
-         .s3_wbd_stb_o  (wbd_mbist_stb_o )
+          .s3_wbd_dat_i       (wbd_mbist_dat_i              ),
+          .s3_wbd_ack_i       (wbd_mbist_ack_i              ),
+          .s3_wbd_lack_i      (wbd_mbist_lack_i             ),
+          .s3_wbd_dat_o       (wbd_mbist_dat_o              ),
+          .s3_wbd_adr_o       (wbd_mbist_adr_o              ),
+          .s3_wbd_sel_o       (wbd_mbist_sel_o              ),
+          .s3_wbd_bry_o       (wbd_mbist_bry_o              ),
+          .s3_wbd_bl_o        (wbd_mbist_bl_o               ),
+          .s3_wbd_we_o        (wbd_mbist_we_o               ),  
+          .s3_wbd_cyc_o       (wbd_mbist_cyc_o              ),
+          .s3_wbd_stb_o       (wbd_mbist_stb_o              )
 
 	);
 
@@ -1303,165 +1400,162 @@
 	     u_mbist (
 
 `ifdef USE_POWER_PINS
-       .vccd1                  (vccd1                     ),// User area 1 1.8V supply
-       .vssd1                  (vssd1                     ),// User area 1 digital ground
+          .vccd1              (vccd1                        ),// User area 1 1.8V supply
+          .vssd1              (vssd1                        ),// User area 1 digital ground
 `endif
 
      // Clock Skew adjust
-	.wbd_clk_int          (wbd_clk_mbist1_rp     ), 
-	.cfg_cska_mbist       (cfg_cska_mbist1_rp    ), 
-	.wbd_clk_mbist        (wbd_clk_mbist_skew   ),
+	         .wbd_clk_int        (wbd_clk_mbist1_rp            ), 
+	         .cfg_cska_mbist     (cfg_cska_mbist1_rp           ), 
+	         .wbd_clk_mbist      (wbd_clk_mbist_skew           ),
 
 	// WB I/F
-        .wb_clk2_i            (wbd_clk_mbist_skew  ),  
-        .wb_clk_i             (wbd_clk_mbist_skew  ),  
-        .wb_cyc_i             (wbd_mbist_cyc_o),  
-        .wb_stb_i             (wbd_mbist_stb_o),  
-	.wb_cs_i              (wbd_mbist_adr_o[12:11]),
-        .wb_adr_i             (wbd_mbist_adr_o[BIST1_ADDR_WD-1:2]),  
-        .wb_we_i              (wbd_mbist_we_o ),  
-        .wb_dat_i             (wbd_mbist_dat_o),  
-        .wb_sel_i             (wbd_mbist_sel_o),  
-        .wb_bl_i              (wbd_mbist_bl_o),  
-        .wb_bry_i             (wbd_mbist_bry_o),  
-        .wb_dat_o             (wbd_mbist_dat_i),  
-        .wb_ack_o             (wbd_mbist_ack_i),  
-        .wb_lack_o            (wbd_mbist_lack_i),  
-        .wb_err_o             (                 ), 
+                  .wb_clk2_i         (wbd_clk_mbist_skew  ),  
+                  .wb_clk_i          (wbd_clk_mbist_skew  ),  
+                  .wb_stb_i          (wbd_mbist_stb_o),  
+	          .wb_cs_i           (wbd_mbist_adr_o[12:11]),
+                  .wb_adr_i          (wbd_mbist_adr_o[BIST1_ADDR_WD-1:2]),  
+                  .wb_we_i           (wbd_mbist_we_o ),  
+                  .wb_dat_i          (wbd_mbist_dat_o),  
+                  .wb_sel_i          (wbd_mbist_sel_o),  
+                  .wb_bl_i           (wbd_mbist_bl_o),  
+                  .wb_bry_i          (wbd_mbist_bry_o),  
+                  .wb_dat_o          (wbd_mbist_dat_i),  
+                  .wb_ack_o          (wbd_mbist_ack_i),  
+                  .wb_lack_o         (wbd_mbist_lack_i),  
+                  .wb_err_o          (                 ), 
 
-	.rst_n                (bist_rst_n       ),
+	         .rst_n              (bist_rst_n                   ),
 
 	
-	.bist_en              (bist_en_rp       ),
-	.bist_run             (bist_run_rp      ),
-	.bist_shift           (bist_shift_rp    ),
-	.bist_load            (bist_load_rp     ),
-	.bist_sdi             (bist_sdi_rp      ),
+	         .bist_en            (bist_en_rp                   ),
+	         .bist_run           (bist_run_rp                  ),
+	         .bist_shift         (bist_shift_rp                ),
+	         .bist_load          (bist_load_rp                 ),
+	         .bist_sdi           (bist_sdi_rp                  ),
 
-	.bist_error_cnt3      (bist_error_cnt3  ),
-	.bist_error_cnt2      (bist_error_cnt2  ),
-	.bist_error_cnt1      (bist_error_cnt1  ),
-	.bist_error_cnt0      (bist_error_cnt0  ),
-	.bist_correct         (bist_correct     ),
-	.bist_error           (bist_error       ),
-	.bist_done            (bist_done        ),
-	.bist_sdo             (bist_sdo         )
+	         .bist_error_cnt3    (bist_error_cnt3              ),
+	         .bist_error_cnt2    (bist_error_cnt2              ),
+	         .bist_error_cnt1    (bist_error_cnt1              ),
+	         .bist_error_cnt0    (bist_error_cnt0              ),
+	         .bist_correct       (bist_correct                 ),
+	         .bist_error         (bist_error                   ),
+	         .bist_done          (bist_done                    ),
+	         .bist_sdo           (bist_sdo                     ),
 
-    // // towards memory
-    // // PORT-A
-    //    .mem_clk_a            (mem_clk_a         ),
-    //    .mem_addr_a0          (mem0_addr_a       ),
-    //    .mem_addr_a1          (mem1_addr_a       ),
-    //    .mem_addr_a2          (mem2_addr_a       ),
-    //    .mem_addr_a3          (mem3_addr_a       ),
-    //    .mem_cen_a            (mem_cen_a         ),
-    //    .mem_web_a            (mem_web_a         ),
-    //    .mem_mask_a0          (mem0_mask_a       ),
-    //    .mem_mask_a1          (mem1_mask_a       ),
-    //    .mem_mask_a2          (mem2_mask_a       ),
-    //    .mem_mask_a3          (mem3_mask_a       ),
-    //    .mem_din_a0           (mem0_din_a        ),
-    //    .mem_din_a1           (mem1_din_a        ),
-    //    .mem_din_a2           (mem2_din_a        ),
-    //    .mem_din_a3           (mem3_din_a        ),
-    //    .mem_dout_a0          (mem0_dout_a       ),
-    //    .mem_dout_a1          (mem1_dout_a       ),
-    //    .mem_dout_a2          (mem2_dout_a       ),
-    //    .mem_dout_a3          (mem3_dout_a       ),
-    // // PORT-B
-    //    .mem_clk_b            (mem_clk_b         ),
-    //    .mem_cen_b            (mem_cen_b         ),
-    //    .mem_addr_b0          (mem0_addr_b       ),
-    //    .mem_addr_b1          (mem1_addr_b       ),
-    //    .mem_addr_b2          (mem2_addr_b       ),
-    //    .mem_addr_b3          (mem3_addr_b       )
+    // towards memory
+    // PORT-A
+          .mem_clk_a          (mem_clk_a                    ),
+          .mem_addr_a0        (mem0_addr_a                  ),
+          .mem_addr_a1        (mem1_addr_a                  ),
+          .mem_addr_a2        (mem2_addr_a                  ),
+          .mem_addr_a3        (mem3_addr_a                  ),
+          .mem_cen_a          (mem_cen_a                    ),
+          .mem_web_a          (mem_web_a                    ),
+          .mem_mask_a0        (mem0_mask_a                  ),
+          .mem_mask_a1        (mem1_mask_a                  ),
+          .mem_mask_a2        (mem2_mask_a                  ),
+          .mem_mask_a3        (mem3_mask_a                  ),
+          .mem_din_a0         (mem0_din_a                   ),
+          .mem_din_a1         (mem1_din_a                   ),
+          .mem_din_a2         (mem2_din_a                   ),
+          .mem_din_a3         (mem3_din_a                   ),
+          .mem_dout_a0        (mem0_dout_a                  ),
+          .mem_dout_a1        (mem1_dout_a                  ),
+          .mem_dout_a2        (mem2_dout_a                  ),
+          .mem_dout_a3        (mem3_dout_a                  ),
+    // PORT-B
+          .mem_clk_b          (mem_clk_b                    ),
+          .mem_cen_b          (mem_cen_b                    ),
+          .mem_addr_b0        (mem0_addr_b                  ),
+          .mem_addr_b1        (mem1_addr_b                  ),
+          .mem_addr_b2        (mem2_addr_b                  ),
+          .mem_addr_b3        (mem3_addr_b                  )
 
 
 );
 
-/***
 sky130_sram_2kbyte_1rw1r_32x512_8 u_sram0_2kb(
 `ifdef USE_POWER_PINS
-    .vccd1 (vccd1),// User area 1 1.8V supply
-    .vssd1 (vssd1),// User area 1 digital ground
+          .vccd1              (vccd1                        ),// User area 1 1.8V supply
+          .vssd1              (vssd1                        ),// User area 1 digital ground
 `endif
 // Port 0: RW
-    .clk0     (mem_clk_a[0]),
-    .csb0     (mem_cen_a[0]),
-    .web0     (mem_web_a[0]),
-    .wmask0   (mem0_mask_a),
-    .addr0    (mem0_addr_a),
-    .din0     (mem0_din_a),
-    .dout0    (mem0_dout_a),
+          .clk0               (mem_clk_a[0]                 ),
+          .csb0               (mem_cen_a[0]                 ),
+          .web0               (mem_web_a[0]                 ),
+          .wmask0             (mem0_mask_a                  ),
+          .addr0              (mem0_addr_a                  ),
+          .din0               (mem0_din_a                   ),
+          .dout0              (mem0_dout_a                  ),
 // Port 1: R
-    .clk1     (mem_clk_b[0]),
-    .csb1     (mem_cen_b[0]),
-    .addr1    (mem0_addr_b),
-    .dout1    ()
+          .clk1               (mem_clk_b[0]                 ),
+          .csb1               (mem_cen_b[0]                 ),
+          .addr1              (mem0_addr_b                  ),
+          .dout1              (                             )
   );
 
 sky130_sram_2kbyte_1rw1r_32x512_8 u_sram1_2kb(
 `ifdef USE_POWER_PINS
-    .vccd1 (vccd1),// User area 1 1.8V supply
-    .vssd1 (vssd1),// User area 1 digital ground
+          .vccd1              (vccd1                        ),// User area 1 1.8V supply
+          .vssd1              (vssd1                        ),// User area 1 digital ground
 `endif
 // Port 0: RW
-    .clk0     (mem_clk_a[1]),
-    .csb0     (mem_cen_a[1]),
-    .web0     (mem_web_a[1]),
-    .wmask0   (mem1_mask_a),
-    .addr0    (mem1_addr_a),
-    .din0     (mem1_din_a),
-    .dout0    (mem1_dout_a),
+          .clk0               (mem_clk_a[1]                 ),
+          .csb0               (mem_cen_a[1]                 ),
+          .web0               (mem_web_a[1]                 ),
+          .wmask0             (mem1_mask_a                  ),
+          .addr0              (mem1_addr_a                  ),
+          .din0               (mem1_din_a                   ),
+          .dout0              (mem1_dout_a                  ),
 // Port 1: R
-    .clk1     (mem_clk_b[1]),
-    .csb1     (mem_cen_b[1]),
-    .addr1    (mem1_addr_b),
-    .dout1    ()
+          .clk1               (mem_clk_b[1]                 ),
+          .csb1               (mem_cen_b[1]                 ),
+          .addr1              (mem1_addr_b                  ),
+          .dout1              (                             )
   );
 
 sky130_sram_2kbyte_1rw1r_32x512_8 u_sram2_2kb(
 `ifdef USE_POWER_PINS
-    .vccd1 (vccd1),// User area 1 1.8V supply
-    .vssd1 (vssd1),// User area 1 digital ground
+          .vccd1              (vccd1                        ),// User area 1 1.8V supply
+          .vssd1              (vssd1                        ),// User area 1 digital ground
 `endif
 // Port 0: RW
-    .clk0     (mem_clk_a[2]),
-    .csb0     (mem_cen_a[2]),
-    .web0     (mem_web_a[2]),
-    .wmask0   (mem2_mask_a),
-    .addr0    (mem2_addr_a),
-    .din0     (mem2_din_a),
-    .dout0    (mem2_dout_a),
+          .clk0               (mem_clk_a[2]                 ),
+          .csb0               (mem_cen_a[2]                 ),
+          .web0               (mem_web_a[2]                 ),
+          .wmask0             (mem2_mask_a                  ),
+          .addr0              (mem2_addr_a                  ),
+          .din0               (mem2_din_a                   ),
+          .dout0              (mem2_dout_a                  ),
 // Port 1: R
-    .clk1     (mem_clk_b[2]),
-    .csb1     (mem_cen_b[2]),
-    .addr1    (mem2_addr_b),
-    .dout1    ()
+          .clk1               (mem_clk_b[2]                 ),
+          .csb1               (mem_cen_b[2]                 ),
+          .addr1              (mem2_addr_b                  ),
+          .dout1              (                             )
   );
 
 
 sky130_sram_2kbyte_1rw1r_32x512_8 u_sram3_2kb(
 `ifdef USE_POWER_PINS
-    .vccd1 (vccd1),// User area 1 1.8V supply
-    .vssd1 (vssd1),// User area 1 digital ground
+          .vccd1              (vccd1                        ),// User area 1 1.8V supply
+          .vssd1              (vssd1                        ),// User area 1 digital ground
 `endif
 // Port 0: RW
-    .clk0     (mem_clk_a[3]),
-    .csb0     (mem_cen_a[3]),
-    .web0     (mem_web_a[3]),
-    .wmask0   (mem3_mask_a),
-    .addr0    (mem3_addr_a),
-    .din0     (mem3_din_a),
-    .dout0    (mem3_dout_a),
+          .clk0               (mem_clk_a[3]                 ),
+          .csb0               (mem_cen_a[3]                 ),
+          .web0               (mem_web_a[3]                 ),
+          .wmask0             (mem3_mask_a                  ),
+          .addr0              (mem3_addr_a                  ),
+          .din0               (mem3_din_a                   ),
+          .dout0              (mem3_dout_a                  ),
 // Port 1: R
-    .clk1     (mem_clk_b[3]),
-    .csb1     (mem_cen_b[3]),
-    .addr1    (mem3_addr_b),
-    .dout1    ()
+          .clk1               (mem_clk_b[3]                 ),
+          .csb1               (mem_cen_b[3]                 ),
+          .addr1              (mem3_addr_b                  ),
+          .dout1              (                             )
   );
 
-**/
 
 /***
 sar_adc  u_adc (
diff --git a/verilog/rtl/wb_interconnect/src/wb_interconnect.sv b/verilog/rtl/wb_interconnect/src/wb_interconnect.sv
index 1f83bc6..ef22d72 100644
--- a/verilog/rtl/wb_interconnect/src/wb_interconnect.sv
+++ b/verilog/rtl/wb_interconnect/src/wb_interconnect.sv
@@ -169,7 +169,6 @@
          output	logic 	        m2_wbd_err_o,
          
          // Master 3 Interface
-         input	logic [31:0]	m3_wbd_dat_i,
          input	logic [31:0]	m3_wbd_adr_i,
          input	logic [3:0]	m3_wbd_sel_i,
          input	logic [9:0]	m3_wbd_bl_i,
@@ -428,7 +427,7 @@
 assign m2_wb_wr.wbd_stb = m2_wbd_stb_i;
 assign m2_wb_wr.wbd_tid = m2_wbd_tid_i;
 
-assign m3_wb_wr.wbd_dat = m3_wbd_dat_i;
+assign m3_wb_wr.wbd_dat = 'h0;
 assign m3_wb_wr.wbd_adr = {m3_wbd_adr_i[31:2],2'b00};
 assign m3_wb_wr.wbd_sel = m3_wbd_sel_i;
 assign m3_wb_wr.wbd_bl  = m3_wbd_bl_i;
diff --git a/verilog/rtl/yifive/ycr1c b/verilog/rtl/yifive/ycr1c
index 8b57442..08852b6 160000
--- a/verilog/rtl/yifive/ycr1c
+++ b/verilog/rtl/yifive/ycr1c
@@ -1 +1 @@
-Subproject commit 8b5744202fecf8a87d84da5dc7583a84aeef4fc1
+Subproject commit 08852b63dac383caf5161340680e28ce834065a4