mpw6 openlane setup
diff --git a/openlane/Makefile b/openlane/Makefile
index e2e91a5..4d42a79 100644
--- a/openlane/Makefile
+++ b/openlane/Makefile
@@ -1,5 +1,4 @@
 # SPDX-FileCopyrightText: 2020 Efabless Corporation
-#
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at
@@ -13,16 +12,16 @@
 # limitations under the License.
 #
 # SPDX-License-Identifier: Apache-2.0
-
 #SHELL = sh -xv
+
 BLOCKS = $(shell find * -maxdepth 0 -type d)
 CONFIG = $(foreach block,$(BLOCKS), ./$(block)/config.tcl)
 CLEAN = $(foreach block,$(BLOCKS), clean-$(block))
 
-OPENLANE_TAG = mpw5
+OPENLANE_TAG = mpw6
 OPENLANE_IMAGE_NAME = riscduino/openlane:$(OPENLANE_TAG)
-OPENLANE_BASIC_COMMAND = "cd /project/openlane && flow.tcl -design ./$* -save_path .. -save -tag $* -overwrite"
-OPENLANE_INTERACTIVE_COMMAND = "cd /project/openlane && flow.tcl -it -file ./$*/interactive.tcl -design ./$* -save_path .. -save -tag $* -overwrite"
+OPENLANE_BASIC_COMMAND = "cd $(PWD)/../openlane && flow.tcl -design ./$* -save_path .. -save -tag $* -overwrite"
+OPENLANE_INTERACTIVE_COMMAND = "cd $(PWD)/../openlane && flow.tcl -design ./$* -save_path .. -save -tag $* -overwrite -it -file ./$*/interactive.tcl"
 
 all: $(BLOCKS)
 
@@ -30,18 +29,45 @@
 	@echo "Missing $@. Please create a configuration for that design"
 	@exit 1
 
-$(BLOCKS) : % : ./%/config.tcl FORCE
+.PHONY: $(BLOCKS)
+$(BLOCKS) : % : ./%/config.tcl
+ifeq ($(OPENLANE_ROOT),)
+	@echo "Please export OPENLANE_ROOT"
+	@exit 1
+endif
+ifeq ($(PDK_ROOT),)
+	@echo "Please export PDK_ROOT"
+	@exit 1
+endif
 	@echo "###############################################"
 	@sleep 1
 
 	@if [ -f ./$*/interactive.tcl ]; then\
-		docker run -it  \
-		-v $(PWD)/..:/project \
+		docker run --rm -v $(OPENLANE_ROOT):/openlane \
+		-v $(PDK_ROOT):$(PDK_ROOT) \
+		-v $(PWD)/..:$(PWD)/.. \
+		-v $(MCW_ROOT):$(MCW_ROOT) \
+		-v $(CARAVEL_ROOT):$(CARAVEL_ROOT) \
+		-e MCW_ROOT=$(MCW_ROOT) \
+		-e PDK_ROOT=$(PDK_ROOT) \
+		-e CARAVEL_ROOT=$(CARAVEL_ROOT) \
+		-e PDK=$(PDK) \
+		-e TEST_MISMATCHES=tools \
+		-e MISMATCHES_OK=1 \
 		-u $(shell id -u $(USER)):$(shell id -g $(USER)) \
 		$(OPENLANE_IMAGE_NAME) sh -c $(OPENLANE_INTERACTIVE_COMMAND);\
 	else\
-		docker run -it  \
-		-v $(PWD)/..:/project \
+		docker run --rm -v $(OPENLANE_ROOT):/openlane \
+		-v $(PDK_ROOT):$(PDK_ROOT) \
+		-v $(PWD)/..:$(PWD)/.. \
+		-v $(CARAVEL_ROOT):$(CARAVEL_ROOT) \
+		-v $(MCW_ROOT):$(MCW_ROOT) \
+		-e MCW_ROOT=$(MCW_ROOT) \
+		-e PDK=$(PDK) \
+		-e PDK_ROOT=$(PDK_ROOT) \
+		-e CARAVEL_ROOT=$(CARAVEL_ROOT) \
+		-e TEST_MISMATCHES=tools \
+		-e MISMATCHES_OK=1 \
 		-u $(shell id -u $(USER)):$(shell id -g $(USER)) \
 		$(OPENLANE_IMAGE_NAME) sh -c $(OPENLANE_BASIC_COMMAND);\
 	fi
@@ -50,6 +76,25 @@
 	cp $*/runs/$*/PDK_SOURCES ../signoff/$*/
 	cp $*/runs/$*/reports/final_summary_report.csv ../signoff/$*/
 
+.PHONY: openlane
+openlane: check-openlane-env
+	if [ -d "$(OPENLANE_ROOT)" ]; then\
+		echo "Deleting exisiting $(OPENLANE_ROOT)" && \
+		rm -rf $(OPENLANE_ROOT) && sleep 2; \
+	fi
+	git clone https://github.com/The-OpenROAD-Project/OpenLane --branch=$(OPENLANE_TAG) --depth=1 $(OPENLANE_ROOT) && \
+		cd $(OPENLANE_ROOT) && \
+		export OPENLANE_IMAGE_NAME=efabless/openlane:$(OPENLANE_TAG) && \
+		export IMAGE_NAME=efabless/openlane:$(OPENLANE_TAG) && \
+		$(MAKE) pull-openlane
+
+.PHONY: check-openlane-env
+check-openlane-env:
+ifeq ($(OPENLANE_ROOT),)
+	@echo "Please export OPENLANE_ROOT"
+	@exit 1
+endif
+
 FORCE:
 
 clean:
diff --git a/openlane/mbist/base.sdc b/openlane/mbist/base.sdc
deleted file mode 100644
index 26a1fe6..0000000
--- a/openlane/mbist/base.sdc
+++ /dev/null
@@ -1,128 +0,0 @@
-###############################################################################
-# Created by write_sdc
-# Sun Nov 14 09:33:23 2021
-###############################################################################
-current_design mbist_top
-###############################################################################
-# Timing Constraints
-###############################################################################
-create_clock -name wb_clk_i -period 10.0000 [get_ports {wb_clk_i}]
-create_clock -name wb_clk2_i -period 10.0000 [get_ports {wb_clk2_i}]
-create_generated_clock -name bist_mem_clk_a -add -source [get_ports {wb_clk2_i}] -master_clock [get_clocks wb_clk2_i] -divide_by 1 -comment {Mem Clock A} [get_ports mem_clk_a]
-create_generated_clock -name bist_mem_clk_b -add -source [get_ports {wb_clk2_i}] -master_clock [get_clocks wb_clk2_i] -divide_by 1 -comment {Mem Clock B} [get_ports mem_clk_b]
-
-set_clock_groups -name async_clock -asynchronous -comment "Async Clock group" -group [get_clocks {bist_mem_clk_a bist_mem_clk_b}]  -group [get_clocks {wb_clk_i }] -group [get_clocks {wb_clk2_i}]
-
-set_clock_transition 0.1500 [all_clocks]
-set_clock_uncertainty -setup 0.2500 [all_clocks]
-set_clock_uncertainty -hold 0.2500 [all_clocks]
-
-set ::env(SYNTH_TIMING_DERATE) 0.05
-puts "\[INFO\]: Setting timing derate to: [expr {$::env(SYNTH_TIMING_DERATE) * 10}] %"
-set_timing_derate -early [expr {1-$::env(SYNTH_TIMING_DERATE)}]
-set_timing_derate -late [expr {1+$::env(SYNTH_TIMING_DERATE)}]
-
-set_input_delay  -max 5.0000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {rst_n}]
-set_input_delay  -min 2.0000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {rst_n}]
-
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_correct}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_done}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_error}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_error_cnt[0]}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_error_cnt[1]}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_error_cnt[2]}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_error_cnt[3]}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_sdo}]
-
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_correct}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_done}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_error}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_error_cnt[0]}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_error_cnt[1]}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_error_cnt[2]}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_error_cnt[3]}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_sdo}]
-
-set_false_path -from [get_ports {bist_en}]
-set_input_delay -max 4 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_load}]
-set_input_delay -max 4 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_run}]
-set_input_delay -max 4 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_sdi}]
-set_input_delay -max 4 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_shift}]
-
-set_input_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_en}]
-set_input_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_load}]
-set_input_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_run}]
-set_input_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_sdi}]
-set_input_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_shift}]
-
-## Functional Inputs
-set_input_delay -max 4 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wb_adr_i[*]}]  
-set_input_delay -max 4 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wb_stb_i}]      
-set_input_delay -max 4 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wb_cyc_i}]      
-set_input_delay -max 4 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wb_we_i}]      
-set_input_delay -max 4 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wbd_mbist1_dat_o[*]}] 
-set_input_delay -max 4 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wb_sel_i[*]}]
-
-set_input_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wb_adr_i[*]}]  
-set_input_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wb_stb_i}]      
-set_input_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wb_cyc_i}]      
-set_input_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wb_we_i}]      
-set_input_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wbd_mbist1_dat_o[*]}] 
-set_input_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wb_sel_i[*]}]
-
-set_output_delay -max 5 -clock [get_clocks {wb_clk_i}] -add_delay     [get_ports {wb_dat_o[*]}]  
-set_output_delay -max 5 -clock [get_clocks {wb_clk_i}] -add_delay     [get_ports {wb_ack_o}]  
-set_output_delay -max 5 -clock [get_clocks {wb_clk_i}] -add_delay     [get_ports {wb_err_o}]  
-
-set_output_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay     [get_ports {wb_dat_o[*]}]  
-set_output_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay     [get_ports {wb_ack_o}]  
-set_output_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay     [get_ports {wb_err_o}]  
-
-## Towards MEMORY from MBIST CLOCK
-## PORT-A
-set_input_delay -max 4.0000 -clock [get_clocks {bist_mem_clk_a}] -add_delay [get_ports {mem_dout_a[*]}]
-set_input_delay -min 2.0000 -clock [get_clocks {bist_mem_clk_a}] -add_delay [get_ports {mem_dout_a[*]}]
-
-
-set_output_delay -max 4 -clock [get_clocks {bist_mem_clk_a}] -add_delay [get_ports {mem_addr_a[*]}]
-set_output_delay -max 4 -clock [get_clocks {bist_mem_clk_a}] -add_delay [get_ports {mem_cen_a}]
-
-set_output_delay -min -0.5 -clock [get_clocks {bist_mem_clk_a}] -add_delay [get_ports {mem_addr_a[*]}]
-set_output_delay -min -0.5 -clock [get_clocks {bist_mem_clk_a}] -add_delay [get_ports {mem_cen_a}]
-
-
-
-## PORT-B
-set_output_delay -max 4 -clock [get_clocks {bist_mem_clk_b}] -add_delay [get_ports {mem_cen_b}]
-set_output_delay -max 4 -clock [get_clocks {bist_mem_clk_b}] -add_delay [get_ports {mem_din_b[*]}]
-set_output_delay -max 4 -clock [get_clocks {bist_mem_clk_b}] -add_delay [get_ports {mem_mask_b[*]}]
-set_output_delay -max 4 -clock [get_clocks {bist_mem_clk_b}] -add_delay [get_ports {mem_web_b}]
-set_output_delay -max 4 -clock [get_clocks {bist_mem_clk_b}] -add_delay [get_ports {mem_addr_b[*]}]
-
-set_output_delay -min -0.5 -clock [get_clocks {bist_mem_clk_b}] -add_delay [get_ports {mem_cen_b}]
-set_output_delay -min -0.5 -clock [get_clocks {bist_mem_clk_b}] -add_delay [get_ports {mem_din_b[*]}]
-set_output_delay -min -0.5 -clock [get_clocks {bist_mem_clk_b}] -add_delay [get_ports {mem_mask_b[*]}]
-set_output_delay -min -0.5 -clock [get_clocks {bist_mem_clk_b}] -add_delay [get_ports {mem_web_b}]
-set_output_delay -min -0.5 -clock [get_clocks {bist_mem_clk_b}] -add_delay [get_ports {mem_addr_b[*]}]
-
-
-# Set max delay for clock skew
-
-set_max_delay   3.5 -from [get_ports {wbd_clk_int}]
-set_max_delay   2 -to   [get_ports {wbd_clk_mbist}]
-set_max_delay 3.5 -from wbd_clk_int -to wbd_clk_mbist
-
-###############################################################################
-# Environment
-###############################################################################
-set_driving_cell -lib_cell sky130_fd_sc_hd__inv_8 -pin $::env(SYNTH_DRIVING_CELL_PIN) [all_inputs]
-set cap_load [expr $::env(SYNTH_CAP_LOAD) / 1000.0]
-puts "\[INFO\]: Setting load to: $cap_load"
-set_load  $cap_load [all_outputs]
-
-set_timing_derate -early 0.9500
-set_timing_derate -late 1.0500
-###############################################################################
-# Design Rules
-###############################################################################
-set_max_fanout 4.0000 [current_design]
diff --git a/openlane/mbist/config.tcl b/openlane/mbist/config.tcl
deleted file mode 100755
index 78cd955..0000000
--- a/openlane/mbist/config.tcl
+++ /dev/null
@@ -1,123 +0,0 @@
-# SPDX-FileCopyrightText:  2021 , Dinesh Annayya
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# SPDX-License-Identifier: Apache-2.0
-# SPDX-FileContributor: Modified by Dinesh Annayya <dinesha@opencores.org>
-
-# Global
-# ------
-
-set script_dir [file dirname [file normalize [info script]]]
-# Name
-
-set ::env(DESIGN_NAME) mbist_top
-
-set ::env(DESIGN_IS_CORE) "0"
-
-# Timing configuration
-set ::env(CLOCK_PERIOD) "10"
-#set ::env(CLOCK_PORT) "u_cts_wb_clk_b1.u_buf/X  \
-#	               u_cts_wb_clk_b2.u_buf/X  \
-#		       "
-set ::env(CLOCK_PORT) { wb_clk_i mem_no\[3\].u_mem_sel.u_mem_clk_sel.u_mux/X mem_no\[2\].u_mem_sel.u_mem_clk_sel.u_mux/X mem_no\[1\].u_mem_sel.u_mem_clk_sel.u_mux/X mem_no\[0\].u_mem_sel.u_mem_clk_sel.u_mux/X  }
-
-set ::env(SYNTH_MAX_FANOUT) 4
-
-## CTS BUFFER
-set ::env(CTS_CLK_BUFFER_LIST) "sky130_fd_sc_hd__clkbuf_4 sky130_fd_sc_hd__clkbuf_8"
-set ::env(CTS_SINK_CLUSTERING_SIZE) "16"
-set ::env(CLOCK_BUFFER_FANOUT) "8"
-
-
-# Sources
-# -------
-
-# Local sources + no2usb sources
-set ::env(VERILOG_FILES) "\
-     $script_dir/../../verilog/rtl/clk_skew_adjust/src/clk_skew_adjust.gv \
-     $script_dir/../../verilog/rtl/mbist/src/core/mbist_addr_gen.sv \
-     $script_dir/../../verilog/rtl/mbist/src/core/mbist_fsm.sv     \
-     $script_dir/../../verilog/rtl/mbist/src/core/mbist_op_sel.sv  \
-     $script_dir/../../verilog/rtl/mbist/src/core/mbist_repair_addr.sv \
-     $script_dir/../../verilog/rtl/mbist/src/core/mbist_sti_sel.sv \
-     $script_dir/../../verilog/rtl/mbist/src/core/mbist_pat_sel.sv \
-     $script_dir/../../verilog/rtl/mbist/src/core/mbist_mux.sv \
-     $script_dir/../../verilog/rtl/mbist/src/core/mbist_data_cmp.sv \
-     $script_dir/../../verilog/rtl/mbist/src/core/mbist_mem_wrapper.sv \
-     $script_dir/../../verilog/rtl/mbist/src/top/mbist_top.sv  \
-     $script_dir/../../verilog/rtl/lib/ctech_cells.sv     \
-     $script_dir/../../verilog/rtl/lib/reset_sync.sv \
-     $script_dir/../../verilog/rtl/lib/ser_shift.sv \
-	     "
-
-set ::env(VERILOG_INCLUDE_DIRS) [glob $script_dir/../../verilog/rtl/mbist/include ]
-set ::env(SYNTH_DEFINES) [list SYNTHESIS ]
-
-
-set ::env(SYNTH_PARAMS) "BIST_ADDR_WD 9,\
-	                 BIST_DATA_WD 32,\
-		         BIST_ADDR_START 9'h000,\
-			 BIST_ADDR_END 9'h1FB,\
-			 BIST_REPAIR_ADDR_START 9'h1FC,\
-			 BIST_RAD_WD_I 9,\
-			 BIST_RAD_WD_O 9\
-			 "
-
-set ::env(SYNTH_READ_BLACKBOX_LIB) 1
-set ::env(SDC_FILE) "$script_dir/base.sdc"
-set ::env(BASE_SDC_FILE) "$script_dir/base.sdc"
-
-set ::env(LEC_ENABLE) 0
-
-set ::env(VDD_PIN) [list {vccd1}]
-set ::env(GND_PIN) [list {vssd1}]
-
-
-# Floorplanning
-# -------------
-
-set ::env(FP_PIN_ORDER_CFG) $::env(DESIGN_DIR)/pin_order.cfg
-
-set ::env(FP_SIZING) absolute
-set ::env(DIE_AREA) "0 0 1500 200"
-
-
-# If you're going to use multiple power domains, then keep this disabled.
-set ::env(RUN_CVC) 1
-
-#set ::env(PDN_CFG) $script_dir/pdn.tcl
-
-
-set ::env(PL_TIME_DRIVEN) 1
-set ::env(PL_TARGET_DENSITY) "0.30"
-
-
-
-set ::env(FP_IO_VEXTEND) 4
-set ::env(FP_IO_HEXTEND) 4
-
-set ::env(FP_PDN_VPITCH) 140
-set ::env(FP_PDN_HPITCH) 140
-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
-
-
-set ::env(QUIT_ON_TIMING_VIOLATIONS) "0"
-set ::env(QUIT_ON_MAGIC_DRC) "1"
-set ::env(QUIT_ON_LVS_ERROR) "0"
-set ::env(QUIT_ON_SLEW_VIOLATIONS) "0"
diff --git a/openlane/mbist/interactive.tcl b/openlane/mbist/interactive.tcl
deleted file mode 100644
index f59586f..0000000
--- a/openlane/mbist/interactive.tcl
+++ /dev/null
@@ -1,219 +0,0 @@
-#!/usr/bin/tclsh
-# SPDX-FileCopyrightText: 2020 Efabless Corporation
-# Copyright 2020 Efabless Corporation
-# Copyright 2020 Sylvain Munaut
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# SPDX-License-Identifier: Apache-2.0
-
-package require openlane;
-
-
-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 {
-        set ::env(CURRENT_DEF) $::env(PLACEMENT_CURRENT_DEF)
-    }
-
-    run_placement
-}
-
-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 {
-        set ::env(CURRENT_DEF) $::env(CTS_CURRENT_DEF)
-    }
-
-    run_cts
-    run_resizer_timing
-}
-
-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 {
-        set ::env(CURRENT_DEF) $::env(ROUTING_CURRENT_DEF)
-    }
-    run_routing
-}
-
-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 {
-        set ::env(CURRENT_DEF) $::env(DIODE_INSERTION_CURRENT_DEF)
-    }
-	if { ($::env(DIODE_INSERTION_STRATEGY) == 2) || ($::env(DIODE_INSERTION_STRATEGY) == 5) } {
-		run_antenna_check
-		heal_antenna_violators; # modifies the routed DEF
-	}
-
-}
-
-proc run_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 {
-        set ::env(CURRENT_DEF) $::env(LVS_CURRENT_DEF)
-    }
-	if { $lvs_enabled } {
-		run_magic_spice_export
-		run_lvs; # requires run_magic_spice_export
-	}
-
-}
-
-proc run_drc_step {{ drc_enabled 1 }} {
-    if { ! [ info exists ::env(DRC_CURRENT_DEF) ] } {
-        set ::env(DRC_CURRENT_DEF) $::env(CURRENT_DEF)
-    } else {
-        set ::env(CURRENT_DEF) $::env(DRC_CURRENT_DEF)
-    }
-	if { $drc_enabled } {
-		run_magic_drc
-		run_klayout_drc
-	}
-}
-
-proc run_antenna_check_step {{ antenna_check_enabled 1 }} {
-    if { ! [ info exists ::env(ANTENNA_CHECK_CURRENT_DEF) ] } {
-        set ::env(ANTENNA_CHECK_CURRENT_DEF) $::env(CURRENT_DEF)
-    } else {
-        set ::env(CURRENT_DEF) $::env(ANTENNA_CHECK_CURRENT_DEF)
-    }
-	if { $antenna_check_enabled } {
-		run_antenna_check
-	}
-}
-
-proc run_flow {args} {
-       set script_dir [file dirname [file normalize [info script]]]
-
-		set options {
-		{-design required}
-		{-save_path optional}
-		{-no_lvs optional}
-	    {-no_drc optional}
-	    {-no_antennacheck optional}
-	}
-	set flags {-save}
-	parse_key_args "run_flow" args arg_values $options flags_map $flags -no_consume
-
-	prep {*}$args
-
-        set LVS_ENABLED 1
-        set DRC_ENABLED 1
-        set ANTENNACHECK_ENABLED 1
-
-        set steps [dict create "synthesis" {run_synthesis "" } \
-                "floorplan" {run_floorplan ""} \
-                "placement" {run_placement_step ""} \
-                "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 ""} \
-                "lvs" "run_lvs_step $LVS_ENABLED" \
-                "drc" "run_drc_step $DRC_ENABLED" \
-                "antenna_check" "run_antenna_check_step $ANTENNACHECK_ENABLED" \
-                "cvc" {run_lef_cvc}
-        ]
-
-       set_if_unset arg_values(-to) "cvc";
-
-       if {  [info exists ::env(CURRENT_STEP) ] } {
-           puts "\[INFO\]:Picking up where last execution left off"
-           puts [format "\[INFO\]:Current stage is %s " $::env(CURRENT_STEP)]
-       } else {
-           set ::env(CURRENT_STEP) "synthesis";
-       }
-       set_if_unset arg_values(-from) $::env(CURRENT_STEP);
-       set exe 0;
-       dict for {step_name step_exe} $steps {
-           if { [ string equal $arg_values(-from) $step_name ] } {
-               set exe 1;
-           }
-
-           if { $exe } {
-               # For when it fails
-               set ::env(CURRENT_STEP) $step_name
-               [lindex $step_exe 0] [lindex $step_exe 1] ;
-           }
-
-           if { [ string equal $arg_values(-to) $step_name ] } {
-               set exe 0:
-               break;
-           }
-
-       }
-
-       # for when it resumes
-       set steps_as_list [dict keys $steps]
-       set next_idx [expr [lsearch $steps_as_list $::env(CURRENT_STEP)] + 1]
-       set ::env(CURRENT_STEP) [lindex $steps_as_list $next_idx]
-
-	if {  [info exists flags_map(-save) ] } {
-		if { ! [info exists arg_values(-save_path)] } {
-			set arg_values(-save_path) ""
-		}
-		save_views 	-lef_path $::env(magic_result_file_tag).lef \
-			-def_path $::env(CURRENT_DEF) \
-			-gds_path $::env(magic_result_file_tag).gds \
-			-mag_path $::env(magic_result_file_tag).mag \
-			-maglef_path $::env(magic_result_file_tag).lef.mag \
-			-spice_path $::env(magic_result_file_tag).spice \
-			-spef_path $::env(CURRENT_SPEF) \
-			-verilog_path $::env(CURRENT_NETLIST) \
-			-save_path $arg_values(-save_path) \
-			-tag $::env(RUN_TAG)
-	}
-
-
-	calc_total_runtime
-	save_state
-	generate_final_summary_report
-	
-	check_timing_violations
-
-	puts_success "Flow Completed Without Fatal Errors."
-
-}
-
-run_flow {*}$argv
diff --git a/openlane/mbist/pin_order.cfg b/openlane/mbist/pin_order.cfg
deleted file mode 100644
index 0416192..0000000
--- a/openlane/mbist/pin_order.cfg
+++ /dev/null
@@ -1,527 +0,0 @@
-#BUS_SORT
-
-#MANUAL_PLACE
-
-
-#S
-rst_n            0000 0        
-
-
-
-#E
-cfg_cska_mbist\[3\]  0000 0 4
-cfg_cska_mbist\[2\]
-cfg_cska_mbist\[1\]
-cfg_cska_mbist\[0\]
-wb_clk2_i         
-wb_clk_i         
-wbd_clk_mbist
-wbd_clk_int         
-
-wb_cyc_i            0025 0 2
-wb_stb_i
-wb_we_i
-wb_cs_i\[1\]
-wb_cs_i\[0\]
-wb_adr_i\[8\]
-wb_adr_i\[7\]
-wb_adr_i\[6\]
-wb_adr_i\[5\]
-wb_adr_i\[4\]
-wb_adr_i\[3\]
-wb_adr_i\[2\]
-wb_adr_i\[1\]
-wb_adr_i\[0\]
-wb_dat_i\[31\]
-wb_dat_i\[30\]
-wb_dat_i\[29\]
-wb_dat_i\[28\]
-wb_dat_i\[27\]
-wb_dat_i\[26\]
-wb_dat_i\[25\]
-wb_dat_i\[24\]
-wb_dat_i\[23\]
-wb_dat_i\[22\]
-wb_dat_i\[21\]
-wb_dat_i\[20\]
-wb_dat_i\[19\]
-wb_dat_i\[18\]
-wb_dat_i\[17\]
-wb_dat_i\[16\]
-wb_dat_i\[15\]
-wb_dat_i\[14\]
-wb_dat_i\[13\]
-wb_dat_i\[12\]
-wb_dat_i\[11\]
-wb_dat_i\[10\]
-wb_dat_i\[9\]
-wb_dat_i\[8\]
-wb_dat_i\[7\]
-wb_dat_i\[6\]
-wb_dat_i\[5\]
-wb_dat_i\[4\]
-wb_dat_i\[3\]
-wb_dat_i\[2\]
-wb_dat_i\[1\]
-wb_dat_i\[0\]
-wb_sel_i\[3\]
-wb_sel_i\[2\]
-wb_sel_i\[1\]
-wb_sel_i\[0\]
-wb_dat_o\[31\]
-wb_dat_o\[30\]
-wb_dat_o\[29\]
-wb_dat_o\[28\]
-wb_dat_o\[27\]
-wb_dat_o\[26\]
-wb_dat_o\[25\]
-wb_dat_o\[24\]
-wb_dat_o\[23\]
-wb_dat_o\[22\]
-wb_dat_o\[21\]
-wb_dat_o\[20\]
-wb_dat_o\[19\]
-wb_dat_o\[18\]
-wb_dat_o\[17\]
-wb_dat_o\[16\]
-wb_dat_o\[15\]
-wb_dat_o\[14\]
-wb_dat_o\[13\]
-wb_dat_o\[12\]
-wb_dat_o\[11\]
-wb_dat_o\[10\]
-wb_dat_o\[9\]
-wb_dat_o\[8\]
-wb_dat_o\[7\]
-wb_dat_o\[6\]
-wb_dat_o\[5\]
-wb_dat_o\[4\]
-wb_dat_o\[3\]
-wb_dat_o\[2\]
-wb_dat_o\[1\]
-wb_dat_o\[0\]
-wb_ack_o
-wb_err_o
-
-
-bist_error_cnt3\[3\] 0150 0 2
-bist_error_cnt3\[2\]
-bist_error_cnt3\[1\]
-bist_error_cnt3\[0\]
-bist_correct\[3\]
-bist_error\[3\]
-bist_error_cnt2\[3\]
-bist_error_cnt2\[2\]
-bist_error_cnt2\[1\]
-bist_error_cnt2\[0\]
-bist_correct\[2\]
-bist_error\[2\]
-bist_error_cnt1\[3\]
-bist_error_cnt1\[2\]
-bist_error_cnt1\[1\]
-bist_error_cnt1\[0\]
-bist_correct\[1\]
-bist_error\[1\]
-bist_error_cnt0\[3\]
-bist_error_cnt0\[2\]
-bist_error_cnt0\[1\]
-bist_error_cnt0\[0\]
-bist_correct\[0\]
-bist_error\[0\]
-bist_done
-bist_sdo
-bist_shift
-bist_sdi
-bist_load
-bist_run
-bist_en           
-
-#S
-mem_clk_a\[0\]       250 0 2
-mem_cen_a\[0\]
-mem_web_a\[0\]
-mem_addr_a0\[0\]
-mem_addr_a0\[1\]
-mem_addr_a0\[2\]
-mem_addr_a0\[3\]
-mem_addr_a0\[4\]
-mem_addr_a0\[5\]
-mem_addr_a0\[6\]
-mem_addr_a0\[7\]
-mem_addr_a0\[8\]
-mem_mask_a0\[0\]
-mem_mask_a0\[1\]
-mem_mask_a0\[2\]
-mem_mask_a0\[3\]
-mem_din_a0\[0\]
-mem_din_a0\[1\]
-mem_din_a0\[2\]
-mem_din_a0\[3\]
-mem_din_a0\[4\]
-mem_din_a0\[5\]
-mem_din_a0\[6\]
-mem_din_a0\[7\]
-mem_din_a0\[8\]
-mem_din_a0\[9\]
-mem_din_a0\[10\]
-mem_din_a0\[11\]
-mem_din_a0\[12\]
-mem_din_a0\[13\]
-mem_din_a0\[14\]
-mem_din_a0\[15\]
-mem_din_a0\[16\]
-mem_din_a0\[17\]
-mem_din_a0\[18\]
-mem_din_a0\[19\]
-mem_din_a0\[20\]
-mem_din_a0\[21\]
-mem_din_a0\[22\]
-mem_din_a0\[23\]
-mem_din_a0\[24\]
-mem_din_a0\[25\]
-mem_din_a0\[26\]
-mem_din_a0\[27\]
-mem_din_a0\[28\]
-mem_din_a0\[29\]
-mem_din_a0\[30\]
-mem_din_a0\[31\]
-
-
-mem_dout_a0\[0\]  350 0 2
-mem_dout_a0\[1\]
-mem_dout_a0\[2\]
-mem_dout_a0\[3\]
-mem_dout_a0\[4\]
-mem_dout_a0\[5\]
-mem_dout_a0\[6\]
-mem_dout_a0\[7\]
-mem_dout_a0\[8\]
-mem_dout_a0\[9\]
-mem_dout_a0\[10\]
-mem_dout_a0\[11\]
-mem_dout_a0\[12\]
-mem_dout_a0\[13\]
-mem_dout_a0\[14\]
-mem_dout_a0\[15\]
-mem_dout_a0\[16\]
-mem_dout_a0\[17\]
-mem_dout_a0\[18\]
-mem_dout_a0\[19\]
-mem_dout_a0\[20\]
-mem_dout_a0\[21\]
-mem_dout_a0\[22\]
-mem_dout_a0\[23\]
-mem_dout_a0\[24\]
-mem_dout_a0\[25\]
-mem_dout_a0\[26\]
-mem_dout_a0\[27\]
-mem_dout_a0\[28\]
-mem_dout_a0\[29\]
-mem_dout_a0\[30\]
-mem_dout_a0\[31\]
-
-
-mem_clk_b\[0\]    0450 0 2
-mem_cen_b\[0\]
-mem_addr_b0\[8\]
-mem_addr_b0\[7\]
-mem_addr_b0\[6\]
-mem_addr_b0\[5\]
-mem_addr_b0\[4\]
-mem_addr_b0\[3\]
-mem_addr_b0\[2\]
-mem_addr_b0\[1\]
-mem_addr_b0\[0\]
-
-
-mem_clk_a\[1\]       1000 0 2
-mem_cen_a\[1\]
-mem_web_a\[1\]
-mem_addr_a1\[0\]
-mem_addr_a1\[1\]
-mem_addr_a1\[2\]
-mem_addr_a1\[3\]
-mem_addr_a1\[4\]
-mem_addr_a1\[5\]
-mem_addr_a1\[6\]
-mem_addr_a1\[7\]
-mem_addr_a1\[8\]
-mem_mask_a1\[0\]
-mem_mask_a1\[1\]
-mem_mask_a1\[2\]
-mem_mask_a1\[3\]
-mem_din_a1\[0\]
-mem_din_a1\[1\]
-mem_din_a1\[2\]
-mem_din_a1\[3\]
-mem_din_a1\[4\]
-mem_din_a1\[5\]
-mem_din_a1\[6\]
-mem_din_a1\[7\]
-mem_din_a1\[8\]
-mem_din_a1\[9\]
-mem_din_a1\[10\]
-mem_din_a1\[11\]
-mem_din_a1\[12\]
-mem_din_a1\[13\]
-mem_din_a1\[14\]
-mem_din_a1\[15\]
-mem_din_a1\[16\]
-mem_din_a1\[17\]
-mem_din_a1\[18\]
-mem_din_a1\[19\]
-mem_din_a1\[20\]
-mem_din_a1\[21\]
-mem_din_a1\[22\]
-mem_din_a1\[23\]
-mem_din_a1\[24\]
-mem_din_a1\[25\]
-mem_din_a1\[26\]
-mem_din_a1\[27\]
-mem_din_a1\[28\]
-mem_din_a1\[29\]
-mem_din_a1\[30\]
-mem_din_a1\[31\]
-
-
-mem_dout_a1\[0\]  1100 0 2
-mem_dout_a1\[1\]
-mem_dout_a1\[2\]
-mem_dout_a1\[3\]
-mem_dout_a1\[4\]
-mem_dout_a1\[5\]
-mem_dout_a1\[6\]
-mem_dout_a1\[7\]
-mem_dout_a1\[8\]
-mem_dout_a1\[9\]
-mem_dout_a1\[10\]
-mem_dout_a1\[11\]
-mem_dout_a1\[12\]
-mem_dout_a1\[13\]
-mem_dout_a1\[14\]
-mem_dout_a1\[15\]
-mem_dout_a1\[16\]
-mem_dout_a1\[17\]
-mem_dout_a1\[18\]
-mem_dout_a1\[19\]
-mem_dout_a1\[20\]
-mem_dout_a1\[21\]
-mem_dout_a1\[22\]
-mem_dout_a1\[23\]
-mem_dout_a1\[24\]
-mem_dout_a1\[25\]
-mem_dout_a1\[26\]
-mem_dout_a1\[27\]
-mem_dout_a1\[28\]
-mem_dout_a1\[29\]
-mem_dout_a1\[30\]
-mem_dout_a1\[31\]
-
-
-mem_clk_b\[1\]    1200 0 2
-mem_cen_b\[1\]
-mem_addr_b1\[8\]
-mem_addr_b1\[7\]
-mem_addr_b1\[6\]
-mem_addr_b1\[5\]
-mem_addr_b1\[4\]
-mem_addr_b1\[3\]
-mem_addr_b1\[2\]
-mem_addr_b1\[1\]
-mem_addr_b1\[0\]
-
-
-#N
-mem_clk_a\[2\]       250 0 2
-mem_cen_a\[2\]
-mem_web_a\[2\]
-mem_addr_a2\[0\]
-mem_addr_a2\[1\]
-mem_addr_a2\[2\]
-mem_addr_a2\[3\]
-mem_addr_a2\[4\]
-mem_addr_a2\[5\]
-mem_addr_a2\[6\]
-mem_addr_a2\[7\]
-mem_addr_a2\[8\]
-mem_mask_a2\[0\]
-mem_mask_a2\[1\]
-mem_mask_a2\[2\]
-mem_mask_a2\[3\]
-mem_din_a2\[0\]
-mem_din_a2\[1\]
-mem_din_a2\[2\]
-mem_din_a2\[3\]
-mem_din_a2\[4\]
-mem_din_a2\[5\]
-mem_din_a2\[6\]
-mem_din_a2\[7\]
-mem_din_a2\[8\]
-mem_din_a2\[9\]
-mem_din_a2\[10\]
-mem_din_a2\[11\]
-mem_din_a2\[12\]
-mem_din_a2\[13\]
-mem_din_a2\[14\]
-mem_din_a2\[15\]
-mem_din_a2\[16\]
-mem_din_a2\[17\]
-mem_din_a2\[18\]
-mem_din_a2\[19\]
-mem_din_a2\[20\]
-mem_din_a2\[21\]
-mem_din_a2\[22\]
-mem_din_a2\[23\]
-mem_din_a2\[24\]
-mem_din_a2\[25\]
-mem_din_a2\[26\]
-mem_din_a2\[27\]
-mem_din_a2\[28\]
-mem_din_a2\[29\]
-mem_din_a2\[30\]
-mem_din_a2\[31\]
-
-
-mem_dout_a2\[0\]  0350 0 2
-mem_dout_a2\[1\]
-mem_dout_a2\[2\]
-mem_dout_a2\[3\]
-mem_dout_a2\[4\]
-mem_dout_a2\[5\]
-mem_dout_a2\[6\]
-mem_dout_a2\[7\]
-mem_dout_a2\[8\]
-mem_dout_a2\[9\]
-mem_dout_a2\[10\]
-mem_dout_a2\[11\]
-mem_dout_a2\[12\]
-mem_dout_a2\[13\]
-mem_dout_a2\[14\]
-mem_dout_a2\[15\]
-mem_dout_a2\[16\]
-mem_dout_a2\[17\]
-mem_dout_a2\[18\]
-mem_dout_a2\[19\]
-mem_dout_a2\[20\]
-mem_dout_a2\[21\]
-mem_dout_a2\[22\]
-mem_dout_a2\[23\]
-mem_dout_a2\[24\]
-mem_dout_a2\[25\]
-mem_dout_a2\[26\]
-mem_dout_a2\[27\]
-mem_dout_a2\[28\]
-mem_dout_a2\[29\]
-mem_dout_a2\[30\]
-mem_dout_a2\[31\]
-
-
-mem_clk_b\[2\]    0450 0 2
-mem_cen_b\[2\]
-mem_addr_b2\[8\]
-mem_addr_b2\[7\]
-mem_addr_b2\[6\]
-mem_addr_b2\[5\]
-mem_addr_b2\[4\]
-mem_addr_b2\[3\]
-mem_addr_b2\[2\]
-mem_addr_b2\[1\]
-mem_addr_b2\[0\]
-
-
-mem_clk_a\[3\]       1000 0 2
-mem_cen_a\[3\]
-mem_web_a\[3\]
-mem_addr_a3\[0\]
-mem_addr_a3\[1\]
-mem_addr_a3\[2\]
-mem_addr_a3\[3\]
-mem_addr_a3\[4\]
-mem_addr_a3\[5\]
-mem_addr_a3\[6\]
-mem_addr_a3\[7\]
-mem_addr_a3\[8\]
-mem_mask_a3\[0\]
-mem_mask_a3\[1\]
-mem_mask_a3\[2\]
-mem_mask_a3\[3\]
-mem_din_a3\[0\]
-mem_din_a3\[1\]
-mem_din_a3\[2\]
-mem_din_a3\[3\]
-mem_din_a3\[4\]
-mem_din_a3\[5\]
-mem_din_a3\[6\]
-mem_din_a3\[7\]
-mem_din_a3\[8\]
-mem_din_a3\[9\]
-mem_din_a3\[10\]
-mem_din_a3\[11\]
-mem_din_a3\[12\]
-mem_din_a3\[13\]
-mem_din_a3\[14\]
-mem_din_a3\[15\]
-mem_din_a3\[16\]
-mem_din_a3\[17\]
-mem_din_a3\[18\]
-mem_din_a3\[19\]
-mem_din_a3\[20\]
-mem_din_a3\[21\]
-mem_din_a3\[22\]
-mem_din_a3\[23\]
-mem_din_a3\[24\]
-mem_din_a3\[25\]
-mem_din_a3\[26\]
-mem_din_a3\[27\]
-mem_din_a3\[28\]
-mem_din_a3\[29\]
-mem_din_a3\[30\]
-mem_din_a3\[31\]
-
-
-mem_dout_a3\[0\]  1100 0 2
-mem_dout_a3\[1\]
-mem_dout_a3\[2\]
-mem_dout_a3\[3\]
-mem_dout_a3\[4\]
-mem_dout_a3\[5\]
-mem_dout_a3\[6\]
-mem_dout_a3\[7\]
-mem_dout_a3\[8\]
-mem_dout_a3\[9\]
-mem_dout_a3\[10\]
-mem_dout_a3\[11\]
-mem_dout_a3\[12\]
-mem_dout_a3\[13\]
-mem_dout_a3\[14\]
-mem_dout_a3\[15\]
-mem_dout_a3\[16\]
-mem_dout_a3\[17\]
-mem_dout_a3\[18\]
-mem_dout_a3\[19\]
-mem_dout_a3\[20\]
-mem_dout_a3\[21\]
-mem_dout_a3\[22\]
-mem_dout_a3\[23\]
-mem_dout_a3\[24\]
-mem_dout_a3\[25\]
-mem_dout_a3\[26\]
-mem_dout_a3\[27\]
-mem_dout_a3\[28\]
-mem_dout_a3\[29\]
-mem_dout_a3\[30\]
-mem_dout_a3\[31\]
-
-
-mem_clk_b\[3\]    1200 0 2
-mem_cen_b\[3\]
-mem_addr_b3\[8\]
-mem_addr_b3\[7\]
-mem_addr_b3\[6\]
-mem_addr_b3\[5\]
-mem_addr_b3\[4\]
-mem_addr_b3\[3\]
-mem_addr_b3\[2\]
-mem_addr_b3\[1\]
-mem_addr_b3\[0\]
-
diff --git a/openlane/mbist/sta.tcl b/openlane/mbist/sta.tcl
deleted file mode 100644
index 57a6c35..0000000
--- a/openlane/mbist/sta.tcl
+++ /dev/null
@@ -1,88 +0,0 @@
-# SPDX-FileCopyrightText:  2021 , Dinesh Annayya
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# SPDX-License-Identifier: Apache-2.0
-# SPDX-FileContributor: Modified by Dinesh Annayya <dinesha@opencores.org>
-
-
-set ::env(LIB_FASTEST) "$::env(PDK_ROOT)/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__ff_n40C_1v95.lib"
-set ::env(LIB_TYPICAL) "$::env(PDK_ROOT)/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib"
-set ::env(LIB_SLOWEST) "$::env(PDK_ROOT)/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__ss_100C_1v60.lib"
-set ::env(DESIGN_NAME) "mbist_top"
-set ::env(BASE_SDC_FILE) "base.sdc"
-set ::env(SYNTH_DRIVING_CELL) "sky130_fd_sc_hd__inv_8"
-set ::env(SYNTH_DRIVING_CELL_PIN) "Y"
-set ::env(SYNTH_CAP_LOAD) "17.65"
-set ::env(WIRE_RC_LAYER) "met1"
-
-#To disable empty filler cell black box get created
-#set link_make_black_boxes 0
-
-
-set_cmd_units -time ns -capacitance pF -current mA -voltage V -resistance kOhm -distance um
-define_corners wc bc tt
-read_liberty -corner bc $::env(LIB_FASTEST)
-read_liberty -corner wc $::env(LIB_SLOWEST)
-read_liberty -corner tt $::env(LIB_TYPICAL)
-
-
-read_verilog ../user_project_wrapper/netlist/mbist.v
-link_design  $::env(DESIGN_NAME)
-
-
-read_spef ../../spef/mbist_top.spef  
-
-
-read_sdc -echo $::env(BASE_SDC_FILE)
-
-# check for missing constraints
-check_setup  -verbose > unconstraints.rpt
-
-set_operating_conditions -analysis_type single
-# Propgate the clock
-set_propagated_clock [all_clocks]
-
-report_tns
-report_wns
-#report_power 
-echo "################ CORNER : WC (SLOW) TIMING Report ###################" > timing_ss_max.rpt
-report_checks -unique -path_delay max -slack_max -0.0 -group_count 100 -corner wc >> timing_ss_max.rpt
-report_checks -group_count 100 -path_delay max  -path_group bist_clk  -corner wc  >> timing_ss_max.rpt
-report_checks -group_count 100 -path_delay max  -path_group mem_clk_a  -corner wc  >> timing_ss_max.rpt
-report_checks -group_count 100 -path_delay max  -path_group mem_clk_b -corner wc  >> timing_ss_max.rpt
-report_checks -path_delay max   -corner wc >> timing_ss_max.rpt
-
-echo "################ CORNER : BC (SLOW) TIMING Report ###################" > timing_ff_min.rpt
-report_checks -unique -path_delay min -slack_min -0.0 -group_count 100 -corner bc >> timing_ff_min.rpt
-report_checks -group_count 100  -path_delay min -path_group bist_clk  -corner bc  >> timing_ff_min.rpt
-report_checks -group_count 100  -path_delay min -path_group mem_clk_a  -corner bc  >> timing_ff_min.rpt
-report_checks -group_count 100  -path_delay min -path_group mem_clk_b -corner bc  >> timing_ff_min.rpt
-report_checks -path_delay min  -corner bc >> timing_ff_min.rpt
-
-echo "################ CORNER : TT (MAX) TIMING Report ###################" > timing_tt_max.rpt
-report_checks -unique -path_delay min -slack_min -0.0 -group_count 100 -corner tt >> timing_tt_max.rpt
-report_checks -group_count 100  -path_delay max -path_group bist_clk  -corner tt  >> timing_tt_max.rpt
-report_checks -group_count 100  -path_delay max -path_group mem_clk_a  -corner tt  >> timing_tt_max.rpt
-report_checks -group_count 100  -path_delay max -path_group mem_clk_b -corner tt  >> timing_tt_max.rpt
-report_checks -path_delay min  -corner tt >> timing_tt_min.rpt
-
-echo "################ CORNER : TT (MIN) TIMING Report ###################" > timing_tt_min.rpt
-report_checks -unique -path_delay min -slack_min -0.0 -group_count 100 -corner tt >> timing_tt_min.rpt
-report_checks -group_count 100  -path_delay min -path_group bist_clk  -corner tt  >> timing_tt_min.rpt
-report_checks -group_count 100  -path_delay min -path_group mem_clk_a -corner tt  >> timing_tt_min.rpt
-report_checks -group_count 100  -path_delay min -path_group mem_clk_b -corner tt  >> timing_tt_min.rpt
-report_checks -path_delay min  -corner tt >> timing_tt_min.rpt
-
-report_checks -path_delay min
-
-#exit
diff --git a/openlane/mbist1/base.sdc b/openlane/mbist1/base.sdc
deleted file mode 100644
index 8ae25b1..0000000
--- a/openlane/mbist1/base.sdc
+++ /dev/null
@@ -1,163 +0,0 @@
-###############################################################################
-# Created by write_sdc
-# Sun Nov 14 09:33:23 2021
-###############################################################################
-current_design mbist_top
-###############################################################################
-# Timing Constraints
-###############################################################################
-create_clock -name wb_clk_i -period 10.0000 [get_ports {wb_clk_i}]
-create_generated_clock -name bist_mem_clk_a -add -source [get_ports {wb_clk_i}] -master_clock [get_clocks wb_clk_i] -divide_by 1 -comment {Mem Clock A} [get_ports mem_clk_a]
-create_generated_clock -name bist_mem_clk_b -add -source [get_ports {wb_clk_i}] -master_clock [get_clocks wb_clk_i] -divide_by 1 -comment {Mem Clock B} [get_ports mem_clk_b]
-
-set_clock_groups -name async_clock -asynchronous -comment "Async Clock group" -group [get_clocks {wb_clk_i bist_mem_clk_a bist_mem_clk_b}]  
-
-set_clock_transition 0.1500 [get_clocks {wb_clk_i}]
-set_clock_uncertainty -setup 0.2500 wb_clk_i
-set_clock_uncertainty -setup 0.2500 mem_clk_a
-set_clock_uncertainty -setup 0.2500 mem_clk_b
-
-set_clock_uncertainty -hold 0.2500 wb_clk_i
-set_clock_uncertainty -hold 0.2500 mem_clk_a
-set_clock_uncertainty -hold 0.2500 mem_clk_b
-
-set ::env(SYNTH_TIMING_DERATE) 0.05
-puts "\[INFO\]: Setting timing derate to: [expr {$::env(SYNTH_TIMING_DERATE) * 10}] %"
-set_timing_derate -early [expr {1-$::env(SYNTH_TIMING_DERATE)}]
-set_timing_derate -late [expr {1+$::env(SYNTH_TIMING_DERATE)}]
-
-set_input_delay  -max 5.0000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {rst_n}]
-set_input_delay  -min 2.0000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {rst_n}]
-
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_correct}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_done}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_error}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_error_cnt[0]}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_error_cnt[1]}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_error_cnt[2]}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_error_cnt[3]}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_sdo}]
-
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_correct}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_done}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_error}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_error_cnt[0]}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_error_cnt[1]}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_error_cnt[2]}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_error_cnt[3]}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_sdo}]
-
-set_false_path -from [get_ports {bist_en}]
-set_input_delay -max 4 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_load}]
-set_input_delay -max 4 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_run}]
-set_input_delay -max 4 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_sdi}]
-set_input_delay -max 4 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_shift}]
-
-set_input_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_en}]
-set_input_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_load}]
-set_input_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_run}]
-set_input_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_sdi}]
-set_input_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay [get_ports {bist_shift}]
-
-## Functional Inputs
-set_input_delay -max 4 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wb_adr_i[*]}]  
-set_input_delay -max 4 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wb_stb_i}]      
-set_input_delay -max 4 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wb_cyc_i}]      
-set_input_delay -max 4 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wb_we_i}]      
-set_input_delay -max 4 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wbd_mbist1_dat_o[*]}] 
-set_input_delay -max 4 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wb_sel_i[*]}]
-
-set_input_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wb_adr_i[*]}]  
-set_input_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wb_stb_i}]      
-set_input_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wb_cyc_i}]      
-set_input_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wb_we_i}]      
-set_input_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wbd_mbist1_dat_o[*]}] 
-set_input_delay -min 2 -clock [get_clocks {wb_clk_i}] -add_delay   [get_ports {wb_sel_i[*]}]
-
-set_output_delay -max 5 -clock [get_clocks {wb_clk_i}] -add_delay     [get_ports {wb_dat_o[*]}]  
-set_output_delay -max 5 -clock [get_clocks {wb_clk_i}] -add_delay     [get_ports {wb_ack_o}]  
-set_output_delay -max 5 -clock [get_clocks {wb_clk_i}] -add_delay     [get_ports {wb_err_o}]  
-
-set_output_delay -min 1 -clock [get_clocks {wb_clk_i}] -add_delay     [get_ports {wb_dat_o[*]}]  
-set_output_delay -min 1 -clock [get_clocks {wb_clk_i}] -add_delay     [get_ports {wb_ack_o}]  
-set_output_delay -min 1 -clock [get_clocks {wb_clk_i}] -add_delay     [get_ports {wb_err_o}]  
-
-## Towards MEMORY from MBIST CLOCK
-## PORT-A
-set_input_delay -max 4.0000 -clock [get_clocks {bist_mem_clk_a}] -add_delay [get_ports {mem_dout_a[*]}]
-set_input_delay -min 1.0000 -clock [get_clocks {bist_mem_clk_a}] -add_delay [get_ports {mem_dout_a[*]}]
-
-
-set_output_delay -max 4 -clock [get_clocks {bist_mem_clk_a}] -add_delay [get_ports {mem_addr_a[*]}]
-set_output_delay -max 4 -clock [get_clocks {bist_mem_clk_a}] -add_delay [get_ports {mem_cen_a}]
-
-set_output_delay -min -0.5 -clock [get_clocks {bist_mem_clk_a}] -add_delay [get_ports {mem_addr_a[*]}]
-set_output_delay -min -0.5 -clock [get_clocks {bist_mem_clk_a}] -add_delay [get_ports {mem_cen_a}]
-
-
-
-## PORT-B
-set_output_delay -max 4 -clock [get_clocks {bist_mem_clk_b}] -add_delay [get_ports {mem_cen_b}]
-set_output_delay -max 4 -clock [get_clocks {bist_mem_clk_b}] -add_delay [get_ports {mem_din_b[*]}]
-set_output_delay -max 4 -clock [get_clocks {bist_mem_clk_b}] -add_delay [get_ports {mem_mask_b[*]}]
-set_output_delay -max 4 -clock [get_clocks {bist_mem_clk_b}] -add_delay [get_ports {mem_web_b}]
-set_output_delay -max 4 -clock [get_clocks {bist_mem_clk_b}] -add_delay [get_ports {mem_addr_b[*]}]
-
-set_output_delay -min -0.5 -clock [get_clocks {bist_mem_clk_b}] -add_delay [get_ports {mem_cen_b}]
-set_output_delay -min -0.5 -clock [get_clocks {bist_mem_clk_b}] -add_delay [get_ports {mem_din_b[*]}]
-set_output_delay -min -0.5 -clock [get_clocks {bist_mem_clk_b}] -add_delay [get_ports {mem_mask_b[*]}]
-set_output_delay -min -0.5 -clock [get_clocks {bist_mem_clk_b}] -add_delay [get_ports {mem_web_b}]
-set_output_delay -min -0.5 -clock [get_clocks {bist_mem_clk_b}] -add_delay [get_ports {mem_addr_b[*]}]
-
-
-# Set max delay for clock skew
-
-set_max_delay   3.5 -from [get_ports {wbd_clk_int}]
-set_max_delay   2 -to   [get_ports {wbd_clk_mbist}]
-set_max_delay 3.5 -from wbd_clk_int -to wbd_clk_mbist
-
-###############################################################################
-# Environment
-###############################################################################
-set_load -pin_load 0.0334 [get_ports {bist_correct}]
-set_load -pin_load 0.0334 [get_ports {bist_done}]
-set_load -pin_load 0.0334 [get_ports {bist_error}]
-set_load -pin_load 0.0334 [get_ports {bist_sdo}]
-set_load -pin_load 0.0334 [get_ports {mem_cen_a}]
-set_load -pin_load 0.0334 [get_ports {mem_cen_b}]
-set_load -pin_load 0.0334 [get_ports {mem_clk_a}]
-set_load -pin_load 0.0334 [get_ports {mem_clk_b}]
-set_load -pin_load 0.0334 [get_ports {mem_web_b}]
-set_load -pin_load 0.0334 [get_ports {bist_error_cnt[3]}]
-set_load -pin_load 0.0334 [get_ports {bist_error_cnt[2]}]
-set_load -pin_load 0.0334 [get_ports {bist_error_cnt[1]}]
-set_load -pin_load 0.0334 [get_ports {bist_error_cnt[0]}]
-set_load -pin_load 0.0334 [get_ports {wb_cyc_i}]
-set_load -pin_load 0.0334 [get_ports {wb_stb_i}]
-set_load -pin_load 0.0334 [get_ports {wb_adr_i[*]}]
-set_load -pin_load 0.0334 [get_ports {wb_we_i}]
-set_load -pin_load 0.0334 [get_ports {wb_dat_i[*]}]
-set_load -pin_load 0.0334 [get_ports {wb_sel_i[*]}]
-set_load -pin_load 0.0334 [get_ports {mem_addr_a[*]}]
-set_load -pin_load 0.0334 [get_ports {mem_addr_b[*]}]
-set_load -pin_load 0.0334 [get_ports {mem_din_b[*]}]
-set_load -pin_load 0.0334 [get_ports {mem_mask_b[*]}]
-set_driving_cell -lib_cell sky130_fd_sc_hd__inv_8 -pin {Y} -input_transition_rise 0.0000 -input_transition_fall 0.0000 [get_ports {wb_cyc_i}]
-set_driving_cell -lib_cell sky130_fd_sc_hd__inv_8 -pin {Y} -input_transition_rise 0.0000 -input_transition_fall 0.0000 [get_ports {bist_en}]
-set_driving_cell -lib_cell sky130_fd_sc_hd__inv_8 -pin {Y} -input_transition_rise 0.0000 -input_transition_fall 0.0000 [get_ports {bist_load}]
-set_driving_cell -lib_cell sky130_fd_sc_hd__inv_8 -pin {Y} -input_transition_rise 0.0000 -input_transition_fall 0.0000 [get_ports {bist_run}]
-set_driving_cell -lib_cell sky130_fd_sc_hd__inv_8 -pin {Y} -input_transition_rise 0.0000 -input_transition_fall 0.0000 [get_ports {bist_sdi}]
-set_driving_cell -lib_cell sky130_fd_sc_hd__inv_8 -pin {Y} -input_transition_rise 0.0000 -input_transition_fall 0.0000 [get_ports {bist_shift}]
-set_driving_cell -lib_cell sky130_fd_sc_hd__inv_8 -pin {Y} -input_transition_rise 0.0000 -input_transition_fall 0.0000 [get_ports {wb_cyc_i}]
-set_driving_cell -lib_cell sky130_fd_sc_hd__inv_8 -pin {Y} -input_transition_rise 0.0000 -input_transition_fall 0.0000 [get_ports {wb_adr_i[*]}]
-set_driving_cell -lib_cell sky130_fd_sc_hd__inv_8 -pin {Y} -input_transition_rise 0.0000 -input_transition_fall 0.0000 [get_ports {wb_we_i}]
-set_driving_cell -lib_cell sky130_fd_sc_hd__inv_8 -pin {Y} -input_transition_rise 0.0000 -input_transition_fall 0.0000 [get_ports {wb_dat_i[*]}]
-set_driving_cell -lib_cell sky130_fd_sc_hd__inv_8 -pin {Y} -input_transition_rise 0.0000 -input_transition_fall 0.0000 [get_ports {wb_sel_i[*]}]
-set_driving_cell -lib_cell sky130_fd_sc_hd__inv_8 -pin {Y} -input_transition_rise 0.0000 -input_transition_fall 0.0000 [get_ports {rst_n}]
-set_driving_cell -lib_cell sky130_fd_sc_hd__inv_8 -pin {Y} -input_transition_rise 0.0000 -input_transition_fall 0.0000 [get_ports {mem_dout_a[*]}]
-set_timing_derate -early 0.9500
-set_timing_derate -late 1.0500
-###############################################################################
-# Design Rules
-###############################################################################
-set_max_fanout 4.0000 [current_design]
diff --git a/openlane/mbist1/config.tcl b/openlane/mbist1/config.tcl
deleted file mode 100755
index 1876487..0000000
--- a/openlane/mbist1/config.tcl
+++ /dev/null
@@ -1,113 +0,0 @@
-# SPDX-FileCopyrightText:  2021 , Dinesh Annayya
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# SPDX-License-Identifier: Apache-2.0
-# SPDX-FileContributor: Modified by Dinesh Annayya <dinesha@opencores.org>
-
-# Global
-# ------
-
-set script_dir [file dirname [file normalize [info script]]]
-# Name
-
-set ::env(DESIGN_NAME) mbist_top1
-
-set ::env(DESIGN_IS_CORE) "0"
-
-# Timing configuration
-set ::env(CLOCK_PERIOD) "10"
-set ::env(CLOCK_PORT) "u_cts_wb_clk_b1.u_buf/X  u_cts_wb_clk_b2.u_buf/X u_mem_sel.u_cts_mem_clk_a.u_buf/X u_mem_sel.u_cts_mem_clk_b.u_buf/X"
-
-set ::env(SYNTH_MAX_FANOUT) 4
-
-# Sources
-# -------
-
-# Local sources + no2usb sources
-set ::env(VERILOG_FILES) "\
-     $script_dir/../../verilog/rtl/clk_skew_adjust/src/clk_skew_adjust.gv \
-     $script_dir/../../verilog/rtl/mbist/src/core/mbist_addr_gen.sv \
-     $script_dir/../../verilog/rtl/mbist/src/core/mbist_fsm.sv     \
-     $script_dir/../../verilog/rtl/mbist/src/core/mbist_op_sel.sv  \
-     $script_dir/../../verilog/rtl/mbist/src/core/mbist_repair_addr.sv \
-     $script_dir/../../verilog/rtl/mbist/src/core/mbist_sti_sel.sv \
-     $script_dir/../../verilog/rtl/mbist/src/core/mbist_pat_sel.sv \
-     $script_dir/../../verilog/rtl/mbist/src/core/mbist_mux.sv \
-     $script_dir/../../verilog/rtl/mbist/src/core/mbist_data_cmp.sv \
-     $script_dir/../../verilog/rtl/mbist/src/core/mbist_mem_wrapper.sv \
-     $script_dir/../../verilog/rtl/mbist/src/top/mbist_top1.sv  \
-     $script_dir/../../verilog/rtl/lib/ctech_cells.sv     \
-     $script_dir/../../verilog/rtl/lib/reset_sync.sv \
-	     "
-
-set ::env(VERILOG_INCLUDE_DIRS) [glob $script_dir/../../verilog/rtl/mbist/include ]
-set ::env(SYNTH_DEFINES) [list SYNTHESIS ]
-
-
-set ::env(SYNTH_PARAMS) "BIST_ADDR_WD 9,\
-	                 BIST_DATA_WD 32,\
-		         BIST_ADDR_START 9'h000,\
-			 BIST_ADDR_END 9'h1FB,\
-			 BIST_REPAIR_ADDR_START 9'h1FC,\
-			 BIST_RAD_WD_I 9,\
-			 BIST_RAD_WD_O 9\
-			 "
-
-set ::env(SYNTH_READ_BLACKBOX_LIB) 1
-set ::env(SDC_FILE) "$script_dir/base.sdc"
-set ::env(BASE_SDC_FILE) "$script_dir/base.sdc"
-
-set ::env(LEC_ENABLE) 0
-
-set ::env(VDD_PIN) [list {vccd1}]
-set ::env(GND_PIN) [list {vssd1}]
-
-
-# Floorplanning
-# -------------
-
-set ::env(FP_PIN_ORDER_CFG) $::env(DESIGN_DIR)/pin_order.cfg
-
-set ::env(FP_SIZING) absolute
-set ::env(DIE_AREA) "0 0 200 275"
-
-
-# If you're going to use multiple power domains, then keep this disabled.
-set ::env(RUN_CVC) 1
-
-#set ::env(PDN_CFG) $script_dir/pdn.tcl
-
-
-set ::env(PL_TIME_DRIVEN) 1
-set ::env(PL_TARGET_DENSITY) "0.35"
-
-
-
-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
-
-
-set ::env(QUIT_ON_TIMING_VIOLATIONS) "0"
-set ::env(QUIT_ON_MAGIC_DRC) "1"
-set ::env(QUIT_ON_LVS_ERROR) "0"
-set ::env(QUIT_ON_SLEW_VIOLATIONS) "0"
diff --git a/openlane/mbist1/interactive.tcl b/openlane/mbist1/interactive.tcl
deleted file mode 100644
index f59586f..0000000
--- a/openlane/mbist1/interactive.tcl
+++ /dev/null
@@ -1,219 +0,0 @@
-#!/usr/bin/tclsh
-# SPDX-FileCopyrightText: 2020 Efabless Corporation
-# Copyright 2020 Efabless Corporation
-# Copyright 2020 Sylvain Munaut
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# SPDX-License-Identifier: Apache-2.0
-
-package require openlane;
-
-
-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 {
-        set ::env(CURRENT_DEF) $::env(PLACEMENT_CURRENT_DEF)
-    }
-
-    run_placement
-}
-
-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 {
-        set ::env(CURRENT_DEF) $::env(CTS_CURRENT_DEF)
-    }
-
-    run_cts
-    run_resizer_timing
-}
-
-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 {
-        set ::env(CURRENT_DEF) $::env(ROUTING_CURRENT_DEF)
-    }
-    run_routing
-}
-
-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 {
-        set ::env(CURRENT_DEF) $::env(DIODE_INSERTION_CURRENT_DEF)
-    }
-	if { ($::env(DIODE_INSERTION_STRATEGY) == 2) || ($::env(DIODE_INSERTION_STRATEGY) == 5) } {
-		run_antenna_check
-		heal_antenna_violators; # modifies the routed DEF
-	}
-
-}
-
-proc run_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 {
-        set ::env(CURRENT_DEF) $::env(LVS_CURRENT_DEF)
-    }
-	if { $lvs_enabled } {
-		run_magic_spice_export
-		run_lvs; # requires run_magic_spice_export
-	}
-
-}
-
-proc run_drc_step {{ drc_enabled 1 }} {
-    if { ! [ info exists ::env(DRC_CURRENT_DEF) ] } {
-        set ::env(DRC_CURRENT_DEF) $::env(CURRENT_DEF)
-    } else {
-        set ::env(CURRENT_DEF) $::env(DRC_CURRENT_DEF)
-    }
-	if { $drc_enabled } {
-		run_magic_drc
-		run_klayout_drc
-	}
-}
-
-proc run_antenna_check_step {{ antenna_check_enabled 1 }} {
-    if { ! [ info exists ::env(ANTENNA_CHECK_CURRENT_DEF) ] } {
-        set ::env(ANTENNA_CHECK_CURRENT_DEF) $::env(CURRENT_DEF)
-    } else {
-        set ::env(CURRENT_DEF) $::env(ANTENNA_CHECK_CURRENT_DEF)
-    }
-	if { $antenna_check_enabled } {
-		run_antenna_check
-	}
-}
-
-proc run_flow {args} {
-       set script_dir [file dirname [file normalize [info script]]]
-
-		set options {
-		{-design required}
-		{-save_path optional}
-		{-no_lvs optional}
-	    {-no_drc optional}
-	    {-no_antennacheck optional}
-	}
-	set flags {-save}
-	parse_key_args "run_flow" args arg_values $options flags_map $flags -no_consume
-
-	prep {*}$args
-
-        set LVS_ENABLED 1
-        set DRC_ENABLED 1
-        set ANTENNACHECK_ENABLED 1
-
-        set steps [dict create "synthesis" {run_synthesis "" } \
-                "floorplan" {run_floorplan ""} \
-                "placement" {run_placement_step ""} \
-                "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 ""} \
-                "lvs" "run_lvs_step $LVS_ENABLED" \
-                "drc" "run_drc_step $DRC_ENABLED" \
-                "antenna_check" "run_antenna_check_step $ANTENNACHECK_ENABLED" \
-                "cvc" {run_lef_cvc}
-        ]
-
-       set_if_unset arg_values(-to) "cvc";
-
-       if {  [info exists ::env(CURRENT_STEP) ] } {
-           puts "\[INFO\]:Picking up where last execution left off"
-           puts [format "\[INFO\]:Current stage is %s " $::env(CURRENT_STEP)]
-       } else {
-           set ::env(CURRENT_STEP) "synthesis";
-       }
-       set_if_unset arg_values(-from) $::env(CURRENT_STEP);
-       set exe 0;
-       dict for {step_name step_exe} $steps {
-           if { [ string equal $arg_values(-from) $step_name ] } {
-               set exe 1;
-           }
-
-           if { $exe } {
-               # For when it fails
-               set ::env(CURRENT_STEP) $step_name
-               [lindex $step_exe 0] [lindex $step_exe 1] ;
-           }
-
-           if { [ string equal $arg_values(-to) $step_name ] } {
-               set exe 0:
-               break;
-           }
-
-       }
-
-       # for when it resumes
-       set steps_as_list [dict keys $steps]
-       set next_idx [expr [lsearch $steps_as_list $::env(CURRENT_STEP)] + 1]
-       set ::env(CURRENT_STEP) [lindex $steps_as_list $next_idx]
-
-	if {  [info exists flags_map(-save) ] } {
-		if { ! [info exists arg_values(-save_path)] } {
-			set arg_values(-save_path) ""
-		}
-		save_views 	-lef_path $::env(magic_result_file_tag).lef \
-			-def_path $::env(CURRENT_DEF) \
-			-gds_path $::env(magic_result_file_tag).gds \
-			-mag_path $::env(magic_result_file_tag).mag \
-			-maglef_path $::env(magic_result_file_tag).lef.mag \
-			-spice_path $::env(magic_result_file_tag).spice \
-			-spef_path $::env(CURRENT_SPEF) \
-			-verilog_path $::env(CURRENT_NETLIST) \
-			-save_path $arg_values(-save_path) \
-			-tag $::env(RUN_TAG)
-	}
-
-
-	calc_total_runtime
-	save_state
-	generate_final_summary_report
-	
-	check_timing_violations
-
-	puts_success "Flow Completed Without Fatal Errors."
-
-}
-
-run_flow {*}$argv
diff --git a/openlane/mbist1/pin_order.cfg b/openlane/mbist1/pin_order.cfg
deleted file mode 100644
index 82dd636..0000000
--- a/openlane/mbist1/pin_order.cfg
+++ /dev/null
@@ -1,213 +0,0 @@
-#BUS_SORT
-
-#MANUAL_PLACE
-
-
-#S
-rst_n            0000 0        
-
-
-
-#E
-cfg_cska_mbist\[3\]  0000 0 4
-cfg_cska_mbist\[2\]
-cfg_cska_mbist\[1\]
-cfg_cska_mbist\[0\]
-wb_clk_i         
-wbd_clk_mbist
-wbd_clk_int         
-
-wb_cyc_i            0025 0 2
-wb_stb_i
-wb_we_i
-wb_adr_i\[8\]
-wb_adr_i\[7\]
-wb_adr_i\[6\]
-wb_adr_i\[5\]
-wb_adr_i\[4\]
-wb_adr_i\[3\]
-wb_adr_i\[2\]
-wb_adr_i\[1\]
-wb_adr_i\[0\]
-wb_dat_i\[31\]
-wb_dat_i\[30\]
-wb_dat_i\[29\]
-wb_dat_i\[28\]
-wb_dat_i\[27\]
-wb_dat_i\[26\]
-wb_dat_i\[25\]
-wb_dat_i\[24\]
-wb_dat_i\[23\]
-wb_dat_i\[22\]
-wb_dat_i\[21\]
-wb_dat_i\[20\]
-wb_dat_i\[19\]
-wb_dat_i\[18\]
-wb_dat_i\[17\]
-wb_dat_i\[16\]
-wb_dat_i\[15\]
-wb_dat_i\[14\]
-wb_dat_i\[13\]
-wb_dat_i\[12\]
-wb_dat_i\[11\]
-wb_dat_i\[10\]
-wb_dat_i\[9\]
-wb_dat_i\[8\]
-wb_dat_i\[7\]
-wb_dat_i\[6\]
-wb_dat_i\[5\]
-wb_dat_i\[4\]
-wb_dat_i\[3\]
-wb_dat_i\[2\]
-wb_dat_i\[1\]
-wb_dat_i\[0\]
-wb_sel_i\[3\]
-wb_sel_i\[2\]
-wb_sel_i\[1\]
-wb_sel_i\[0\]
-wb_dat_o\[31\]
-wb_dat_o\[30\]
-wb_dat_o\[29\]
-wb_dat_o\[28\]
-wb_dat_o\[27\]
-wb_dat_o\[26\]
-wb_dat_o\[25\]
-wb_dat_o\[24\]
-wb_dat_o\[23\]
-wb_dat_o\[22\]
-wb_dat_o\[21\]
-wb_dat_o\[20\]
-wb_dat_o\[19\]
-wb_dat_o\[18\]
-wb_dat_o\[17\]
-wb_dat_o\[16\]
-wb_dat_o\[15\]
-wb_dat_o\[14\]
-wb_dat_o\[13\]
-wb_dat_o\[12\]
-wb_dat_o\[11\]
-wb_dat_o\[10\]
-wb_dat_o\[9\]
-wb_dat_o\[8\]
-wb_dat_o\[7\]
-wb_dat_o\[6\]
-wb_dat_o\[5\]
-wb_dat_o\[4\]
-wb_dat_o\[3\]
-wb_dat_o\[2\]
-wb_dat_o\[1\]
-wb_dat_o\[0\]
-wb_ack_o
-wb_err_o
-
-
-bist_error_cnt\[3\] 0150 0 2
-bist_error_cnt\[2\]
-bist_error_cnt\[1\]
-bist_error_cnt\[0\]
-bist_correct
-bist_error
-bist_done
-bist_sdo
-bist_shift
-bist_sdi
-bist_load
-bist_run
-bist_en           
-
-#W
-mem_clk_b       0000 0 2
-mem_cen_b
-mem_web_b
-mem_mask_b\[0\]
-mem_mask_b\[1\]
-mem_mask_b\[2\]
-mem_mask_b\[3\]
-mem_addr_b\[0\]
-mem_addr_b\[1\]
-mem_addr_b\[2\]
-mem_addr_b\[3\]
-mem_addr_b\[4\]
-mem_addr_b\[5\]
-mem_addr_b\[6\]
-mem_addr_b\[7\]
-mem_addr_b\[8\]
-mem_din_b\[0\]
-mem_din_b\[1\]
-mem_din_b\[2\]
-mem_din_b\[3\]
-mem_din_b\[4\]
-mem_din_b\[5\]
-mem_din_b\[6\]
-mem_din_b\[7\]
-mem_din_b\[8\]
-mem_din_b\[9\]
-mem_din_b\[10\]
-mem_din_b\[11\]
-mem_din_b\[12\]
-mem_din_b\[13\]
-mem_din_b\[14\]
-mem_din_b\[15\]
-mem_din_b\[16\]
-mem_din_b\[17\]
-mem_din_b\[18\]
-mem_din_b\[19\]
-mem_din_b\[20\]
-mem_din_b\[21\]
-mem_din_b\[22\]
-mem_din_b\[23\]
-mem_din_b\[24\]
-mem_din_b\[25\]
-mem_din_b\[26\]
-mem_din_b\[27\]
-mem_din_b\[28\]
-mem_din_b\[29\]
-mem_din_b\[30\]
-mem_din_b\[31\]
-
-
-mem_dout_a\[0\]  0100 0 2
-mem_dout_a\[1\]
-mem_dout_a\[2\]
-mem_dout_a\[3\]
-mem_dout_a\[4\]
-mem_dout_a\[5\]
-mem_dout_a\[6\]
-mem_dout_a\[7\]
-mem_dout_a\[8\]
-mem_dout_a\[9\]
-mem_dout_a\[10\]
-mem_dout_a\[11\]
-mem_dout_a\[12\]
-mem_dout_a\[13\]
-mem_dout_a\[14\]
-mem_dout_a\[15\]
-mem_dout_a\[16\]
-mem_dout_a\[17\]
-mem_dout_a\[18\]
-mem_dout_a\[19\]
-mem_dout_a\[20\]
-mem_dout_a\[21\]
-mem_dout_a\[22\]
-mem_dout_a\[23\]
-mem_dout_a\[24\]
-mem_dout_a\[25\]
-mem_dout_a\[26\]
-mem_dout_a\[27\]
-mem_dout_a\[28\]
-mem_dout_a\[29\]
-mem_dout_a\[30\]
-mem_dout_a\[31\]
-
-
-mem_clk_a          0200 0 2
-mem_cen_a
-mem_addr_a\[8\]
-mem_addr_a\[7\]
-mem_addr_a\[6\]
-mem_addr_a\[5\]
-mem_addr_a\[4\]
-mem_addr_a\[3\]
-mem_addr_a\[2\]
-mem_addr_a\[1\]
-mem_addr_a\[0\]
diff --git a/openlane/mbist1/sta.tcl b/openlane/mbist1/sta.tcl
deleted file mode 100644
index 57a6c35..0000000
--- a/openlane/mbist1/sta.tcl
+++ /dev/null
@@ -1,88 +0,0 @@
-# SPDX-FileCopyrightText:  2021 , Dinesh Annayya
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# SPDX-License-Identifier: Apache-2.0
-# SPDX-FileContributor: Modified by Dinesh Annayya <dinesha@opencores.org>
-
-
-set ::env(LIB_FASTEST) "$::env(PDK_ROOT)/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__ff_n40C_1v95.lib"
-set ::env(LIB_TYPICAL) "$::env(PDK_ROOT)/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib"
-set ::env(LIB_SLOWEST) "$::env(PDK_ROOT)/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__ss_100C_1v60.lib"
-set ::env(DESIGN_NAME) "mbist_top"
-set ::env(BASE_SDC_FILE) "base.sdc"
-set ::env(SYNTH_DRIVING_CELL) "sky130_fd_sc_hd__inv_8"
-set ::env(SYNTH_DRIVING_CELL_PIN) "Y"
-set ::env(SYNTH_CAP_LOAD) "17.65"
-set ::env(WIRE_RC_LAYER) "met1"
-
-#To disable empty filler cell black box get created
-#set link_make_black_boxes 0
-
-
-set_cmd_units -time ns -capacitance pF -current mA -voltage V -resistance kOhm -distance um
-define_corners wc bc tt
-read_liberty -corner bc $::env(LIB_FASTEST)
-read_liberty -corner wc $::env(LIB_SLOWEST)
-read_liberty -corner tt $::env(LIB_TYPICAL)
-
-
-read_verilog ../user_project_wrapper/netlist/mbist.v
-link_design  $::env(DESIGN_NAME)
-
-
-read_spef ../../spef/mbist_top.spef  
-
-
-read_sdc -echo $::env(BASE_SDC_FILE)
-
-# check for missing constraints
-check_setup  -verbose > unconstraints.rpt
-
-set_operating_conditions -analysis_type single
-# Propgate the clock
-set_propagated_clock [all_clocks]
-
-report_tns
-report_wns
-#report_power 
-echo "################ CORNER : WC (SLOW) TIMING Report ###################" > timing_ss_max.rpt
-report_checks -unique -path_delay max -slack_max -0.0 -group_count 100 -corner wc >> timing_ss_max.rpt
-report_checks -group_count 100 -path_delay max  -path_group bist_clk  -corner wc  >> timing_ss_max.rpt
-report_checks -group_count 100 -path_delay max  -path_group mem_clk_a  -corner wc  >> timing_ss_max.rpt
-report_checks -group_count 100 -path_delay max  -path_group mem_clk_b -corner wc  >> timing_ss_max.rpt
-report_checks -path_delay max   -corner wc >> timing_ss_max.rpt
-
-echo "################ CORNER : BC (SLOW) TIMING Report ###################" > timing_ff_min.rpt
-report_checks -unique -path_delay min -slack_min -0.0 -group_count 100 -corner bc >> timing_ff_min.rpt
-report_checks -group_count 100  -path_delay min -path_group bist_clk  -corner bc  >> timing_ff_min.rpt
-report_checks -group_count 100  -path_delay min -path_group mem_clk_a  -corner bc  >> timing_ff_min.rpt
-report_checks -group_count 100  -path_delay min -path_group mem_clk_b -corner bc  >> timing_ff_min.rpt
-report_checks -path_delay min  -corner bc >> timing_ff_min.rpt
-
-echo "################ CORNER : TT (MAX) TIMING Report ###################" > timing_tt_max.rpt
-report_checks -unique -path_delay min -slack_min -0.0 -group_count 100 -corner tt >> timing_tt_max.rpt
-report_checks -group_count 100  -path_delay max -path_group bist_clk  -corner tt  >> timing_tt_max.rpt
-report_checks -group_count 100  -path_delay max -path_group mem_clk_a  -corner tt  >> timing_tt_max.rpt
-report_checks -group_count 100  -path_delay max -path_group mem_clk_b -corner tt  >> timing_tt_max.rpt
-report_checks -path_delay min  -corner tt >> timing_tt_min.rpt
-
-echo "################ CORNER : TT (MIN) TIMING Report ###################" > timing_tt_min.rpt
-report_checks -unique -path_delay min -slack_min -0.0 -group_count 100 -corner tt >> timing_tt_min.rpt
-report_checks -group_count 100  -path_delay min -path_group bist_clk  -corner tt  >> timing_tt_min.rpt
-report_checks -group_count 100  -path_delay min -path_group mem_clk_a -corner tt  >> timing_tt_min.rpt
-report_checks -group_count 100  -path_delay min -path_group mem_clk_b -corner tt  >> timing_tt_min.rpt
-report_checks -path_delay min  -corner tt >> timing_tt_min.rpt
-
-report_checks -path_delay min
-
-#exit
diff --git a/openlane/pinmux/config.tcl b/openlane/pinmux/config.tcl
index 68f6db6..7650732 100755
--- a/openlane/pinmux/config.tcl
+++ b/openlane/pinmux/config.tcl
@@ -97,7 +97,7 @@
 set ::env(FP_PDN_VWIDTH) 5
 set ::env(FP_PDN_HWIDTH) 5
 
-set ::env(GLB_RT_MAXLAYER) 5
+#set ::env(GLB_RT_MAXLAYER) 5
 set ::env(RT_MAX_LAYER) {met4}
 set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10
 
diff --git a/openlane/pinmux/pin_order.cfg b/openlane/pinmux/pin_order.cfg
index 2ff62e6..b3273bf 100644
--- a/openlane/pinmux/pin_order.cfg
+++ b/openlane/pinmux/pin_order.cfg
@@ -91,6 +91,7 @@
 pinmux_debug\[29\]
 pinmux_debug\[30\]
 pinmux_debug\[31\]
+dbg_clk_mon
 
 #W
 
diff --git a/openlane/qspim_top/config.tcl b/openlane/qspim_top/config.tcl
index e2a3b24..f17f63d 100755
--- a/openlane/qspim_top/config.tcl
+++ b/openlane/qspim_top/config.tcl
@@ -93,7 +93,7 @@
 set ::env(FP_PDN_VWIDTH) 5
 set ::env(FP_PDN_HWIDTH) 5
 
-set ::env(GLB_RT_MAXLAYER) 5
+#set ::env(GLB_RT_MAXLAYER) 5
 set ::env(RT_MAX_LAYER) {met4}
 set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10
 set ::env(DIODE_INSERTION_STRATEGY) 4
diff --git a/openlane/uart_i2cm_usb_spi_top/base.sdc b/openlane/uart_i2cm_usb_spi_top/base.sdc
index 735b5fb..4a33fc5 100644
--- a/openlane/uart_i2cm_usb_spi_top/base.sdc
+++ b/openlane/uart_i2cm_usb_spi_top/base.sdc
@@ -7,8 +7,8 @@
 # Timing Constraints
 ###############################################################################
 create_clock -name app_clk -period 10.0000 [get_ports {app_clk}]
-create_clock -name uart0_baud_clk -period 100.0000 [get_pins {u_uart0_core.u_lineclk_buf.u_mux/X}]
-create_clock -name uart1_baud_clk -period 100.0000 [get_pins {u_uart1_core.u_lineclk_buf.u_mux/X}]
+create_clock -name uart0_baud_clk -period 100.0000 [get_pins {u_uart0_core.u_lineclk_buf.genblk1.u_mux/X}]
+create_clock -name uart1_baud_clk -period 100.0000 [get_pins {u_uart1_core.u_lineclk_buf.genblk1.u_mux/X}]
 create_clock -name usb_clk -period 100.0000 [get_ports {usb_clk}]
 
 set_clock_transition 0.1500 [all_clocks]
@@ -35,10 +35,13 @@
 set_max_delay 5 -from wbd_clk_int -to wbd_clk_uart
 
 
+set_input_delay -max 6.0000 -clock [get_clocks {app_clk}] -add_delay [get_ports {i2c_rstn}]
+set_input_delay -max 6.0000 -clock [get_clocks {app_clk}] -add_delay [get_ports {uart_rstn}]
+set_input_delay -max 6.0000 -clock [get_clocks {app_clk}] -add_delay [get_ports {usb_rstn}]
 
-set_input_delay 3.0000 -clock [get_clocks {app_clk}] -add_delay [get_ports {i2c_rstn}]
-set_input_delay 3.0000 -clock [get_clocks {app_clk}] -add_delay [get_ports {uart_rstn}]
-set_input_delay 3.0000 -clock [get_clocks {app_clk}] -add_delay [get_ports {usb_rstn}]
+set_input_delay -min 1.5000 -clock [get_clocks {app_clk}] -add_delay [get_ports {i2c_rstn}]
+set_input_delay -min 1.5000 -clock [get_clocks {app_clk}] -add_delay [get_ports {uart_rstn}]
+set_input_delay -min 1.5000 -clock [get_clocks {app_clk}] -add_delay [get_ports {usb_rstn}]
 
 
 set_input_delay  -max 6.0000 -clock [get_clocks {app_clk}] -add_delay [get_ports {reg_addr[*]}]
diff --git a/openlane/uart_i2cm_usb_spi_top/config.tcl b/openlane/uart_i2cm_usb_spi_top/config.tcl
index 2627452..a97080d 100644
--- a/openlane/uart_i2cm_usb_spi_top/config.tcl
+++ b/openlane/uart_i2cm_usb_spi_top/config.tcl
@@ -27,7 +27,7 @@
 
 # Timing configuration
 set ::env(CLOCK_PERIOD) "10"
-set ::env(CLOCK_PORT) "app_clk usb_clk u_uart_core.u_lineclk_buf.u_mux/X"
+set ::env(CLOCK_PORT) "app_clk usb_clk u_uart0_core.u_lineclk_buf.genblk1.u_mux/X u_uart1_core.u_lineclk_buf.genblk1.u_mux/X"
 
 set ::env(SYNTH_MAX_FANOUT) 4
 
@@ -72,6 +72,7 @@
     $script_dir/../../verilog/rtl/lib/ctech_cells.sv     \
     "
 
+set ::env(SYNTH_NO_FLAT) {1}
 set ::env(SYNTH_READ_BLACKBOX_LIB) 1
 set ::env(VERILOG_INCLUDE_DIRS) [glob $script_dir/../../verilog/rtl/i2cm/src/includes $script_dir/../../verilog/rtl/usb1_host/src/includes ]
 set ::env(SYNTH_DEFINES) [list SYNTHESIS ]
@@ -101,7 +102,7 @@
 
 
 set ::env(PL_TIME_DRIVEN) 1
-set ::env(PL_TARGET_DENSITY) "0.45"
+set ::env(PL_TARGET_DENSITY) "0.46"
 
 # helps in anteena fix
 set ::env(USE_ARC_ANTENNA_CHECK) "0"
@@ -114,7 +115,7 @@
 set ::env(FP_PDN_VWIDTH) 5
 set ::env(FP_PDN_HWIDTH) 5
 
-set ::env(GLB_RT_MAXLAYER) 5
+#set ::env(GLB_RT_MAXLAYER) 5
 set ::env(RT_MAX_LAYER) {met4}
 set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10
 set ::env(DIODE_INSERTION_STRATEGY) 4
@@ -122,6 +123,9 @@
 set ::env(GLB_RESIZER_TIMING_OPTIMIZATIONS) {1}
 set ::env(PL_RESIZER_TIMING_OPTIMIZATIONS) {1}
 
+set ::env(GLB_RT_ADJUSTMENT) {0.25}
+set ::env(CELL_PAD) {2}
+
 set ::env(QUIT_ON_TIMING_VIOLATIONS) "0"
 set ::env(QUIT_ON_MAGIC_DRC) "1"
 set ::env(QUIT_ON_LVS_ERROR) "0"
diff --git a/openlane/user_project_wrapper/config.tcl b/openlane/user_project_wrapper/config.tcl
index c1e47ab..19757e8 100644
--- a/openlane/user_project_wrapper/config.tcl
+++ b/openlane/user_project_wrapper/config.tcl
@@ -16,6 +16,7 @@
 # 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 
@@ -43,8 +44,10 @@
 
 ## Source Verilog Files
 set ::env(VERILOG_FILES) "\
+	$proj_dir/../../verilog/rtl//yifive/ycr1c/src/top/ycr_top_wb.sv \
 	$proj_dir/../../verilog/rtl/user_project_wrapper.v"
 
+
 ## Clock configurations
 set ::env(CLOCK_PORT) "user_clock2 wb_clk_i"
 #set ::env(CLOCK_NET) "mprj.clk"
@@ -70,8 +73,11 @@
         $proj_dir/../../verilog/gl/pinmux.v     \
         $proj_dir/../../verilog/gl/uart_i2c_usb_spi_top.v     \
 	$proj_dir/../../verilog/gl/wb_host.v \
-	$proj_dir/../../verilog/gl/yifive.v \
-	$proj_dir/../../verilog/gl/DFFRAM.v \
+	$proj_dir/../../verilog/gl/ycr_intf.v \
+	$proj_dir/../../verilog/gl/ycr_core_top.v \
+	$proj_dir/../../verilog/gl/ycr_iconnect.v \
+	$proj_dir/../../verilog/gl/digital_pll.v \
+	$::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/verilog/sky130_sram_2kbyte_1rw1r_32x512_8.v \
 	"
 
 set ::env(EXTRA_LEFS) "\
@@ -80,8 +86,11 @@
 	$lef_root/wb_interconnect.lef \
 	$lef_root/uart_i2c_usb_spi_top.lef \
 	$lef_root/wb_host.lef \
-	$lef_root/yifive.lef \
-	$lef_root/DFFRAM.lef \
+	$lef_root/ycr_intf.lef \
+	$lef_root/ycr_core_top.lef \
+	$lef_root/ycr_iconnect.lef \
+	$lef_root/digital_pll.lef \
+	$::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/lef/sky130_sram_2kbyte_1rw1r_32x512_8.lef \
 	"
 
 set ::env(EXTRA_GDS_FILES) "\
@@ -90,15 +99,18 @@
 	$gds_root/wb_interconnect.gds \
 	$gds_root/uart_i2c_usb_spi_top.gds \
 	$gds_root/wb_host.gds \
-	$gds_root/yifive.gds \
-	$gds_root/DFFRAM.gds \
+	$gds_root/ycr_intf.gds \
+	$gds_root/ycr_core_top.gds \
+	$gds_root/ycr_iconnect.gds \
+	$gds_root/digital_pll.gds \
+	$::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/gds/sky130_sram_2kbyte_1rw1r_32x512_8.gds \
 	"
 
 set ::env(SYNTH_DEFINES) [list SYNTHESIS ]
 
-#set ::env(VERILOG_INCLUDE_DIRS) [glob $proj_dir/../../verilog/rtl/yifive/ycr1c/src/includes ]
+set ::env(VERILOG_INCLUDE_DIRS) [glob $proj_dir/../../verilog/rtl/yifive/ycr1c/src/includes ]
 
-set ::env(GLB_RT_MAXLAYER) 6
+#set ::env(GLB_RT_MAXLAYER) 6
 set ::env(RT_MAX_LAYER) {met5}
 
 set ::env(FP_PDN_CHECK_NODES) 0
@@ -109,42 +121,52 @@
 set ::env(FP_PDN_ENABLE_MACROS_GRID) "1"
 set ::env(FP_PDN_ENABLE_GLOBAL_CONNECTIONS) "1"
 
-set ::env(VDD_NETS) "vccd1 vccd2 vdda1 vdda2"
-set ::env(GND_NETS) "vssd1 vssd2 vssa1 vssa2"
+set ::env(VDD_NETS) {vccd1 vccd2 vdda1 vdda2}
+set ::env(GND_NETS) {vssd1 vssd2 vssa1 vssa2}
 #
-set ::env(VDD_PIN) "vccd1"
-set ::env(GND_PIN) "vssd1"
+set ::env(VDD_PIN) {vccd1}
+set ::env(GND_PIN) {vssd1}
+
+set ::env(GLB_RT_OBS) "                              \
+	                li1   150 130  833.1  546.54,\
+	                met1  150 130  833.1  546.54,\
+	                met2  150 130  833.1  546.54,\
+                        met3  150 130  833.1  546.54,\
+
+	                li1   950 130  1633.1 546.54,\
+	                met1  950 130  1633.1 546.54,\
+	                met2  950 130  1633.1 546.54,\
+                        met3  950 130  1633.1 546.54,\
+
+                        li1   150  750 833.1  1166.54,\
+                        met1  150  750 833.1  1166.54,\
+                        met2  150  750 833.1  1166.54,\
+                        met3  150  750 833.1  1166.54,\
+	                met5  0 0 2920 3520"
+
 set ::env(FP_PDN_POWER_STRAPS) "vccd1 vssd1 1, vccd2 vssd2 0, vdda1 vssa1 0, vdda2 vssa2 0"
 
-set ::env(GLB_RT_OBS) " met5  0    0    2920   3520, \
-	                met4  125  1750  675   2490, \
-	                met4  125  2645  675   3385, \
-	                met4  125  900   675   1640, \
-	                met4  800  110  1350    850, \
-	                met4  850  2645 1400   3385, \
-	                met4  1575 2645 2125   3385 \
-	              "
-                      
-
-#set ::env(FP_PDN_MACRO_HOOKS) " \
-#	u_intercon vccd1 vssd1 \
-#	u_pinmux vccd1 vssd1 \
-#	u_qspi_master vccd1 vssd1 \
-#	u_riscv_top vccd1 vssd1 \
-#	u_tsram0_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 \
-#	u_sram2_2kb vccd1 vssd1 \
-#	u_sram3_2kb vccd1 vssd1 \
-#	u_uart_i2c_usb_spi vccd1 vssd1 \
-#	u_wb_host vccd1 vssd1 "
+set ::env(FP_PDN_MACRO_HOOKS) " \
+	u_intercon vccd1 vssd1,\
+	u_pinmux vccd1 vssd1,\
+	u_qspi_master vccd1 vssd1,\
+	u_riscv_top vccd1 vssd1,\
+	u_tsram0_2kb vccd1 vssd1,\
+	u_icache_2kb vccd1 vssd1,\
+	u_dcache_2kb vccd1 vssd1,\
+	u_sram0_2kb vccd1 vssd1,\
+	u_sram1_2kb vccd1 vssd1,\
+	u_sram2_2kb vccd1 vssd1,\
+	u_sram3_2kb vccd1 vssd1,\
+	u_uart_i2c_usb_spi vccd1 vssd1,\
+	u_wb_host vccd1 vssd1,\
+	u_riscv_top.i_core_top_0 vccd1 vssd1, \
+	u_riscv_top.u_intf vccd1 vssd1 \
+       	"
 
 
 # The following is because there are no std cells in the example wrapper project.
-set ::env(SYNTH_TOP_LEVEL) 1
+set ::env(SYNTH_TOP_LEVEL) 0
 set ::env(PL_RANDOM_GLB_PLACEMENT) 1
 
 set ::env(PL_RESIZER_DESIGN_OPTIMIZATIONS) 0
@@ -160,8 +182,7 @@
 set ::env(CLOCK_TREE_SYNTH) 0
 
 set ::env(QUIT_ON_LVS_ERROR) "0"
-set ::env(QUIT_ON_TR_DRC) "1"
-set ::env(QUIT_ON_MAGIC_DRC) "1"
+set ::env(QUIT_ON_MAGIC_DRC) "0"
 set ::env(QUIT_ON_NEGATIVE_WNS) "0"
 set ::env(QUIT_ON_SLEW_VIOLATIONS) "0"
 set ::env(QUIT_ON_TIMING_VIOLATIONS) "0"
@@ -170,13 +191,26 @@
 set ::env(FP_PDN_HORIZONTAL_HALO) "10"
 set ::env(FP_PDN_VERTICAL_HALO) "10"
 
+#
+
+set ::env(FP_PDN_CORE_RING_HOFFSET) {12.45}
+set ::env(FP_PDN_CORE_RING_HSPACING) {1.7}
+set ::env(FP_PDN_CORE_RING_HWIDTH) {3.1}
+
+set ::env(FP_PDN_CORE_RING_VOFFSET) {12.45}
+set ::env(FP_PDN_CORE_RING_VSPACING) {1.7}
+set ::env(FP_PDN_CORE_RING_VWIDTH) {3.1}
+
+
 set ::env(FP_PDN_VOFFSET) "5"
 set ::env(FP_PDN_VPITCH) "80"
 set ::env(FP_PDN_VSPACING) "15.5"
 set ::env(FP_PDN_VWIDTH) "3.1"
 
-set ::env(FP_PDN_HOFFSET) "16.65"
-set ::env(FP_PDN_HPITCH) "130"
+set ::env(FP_PDN_HOFFSET) "10"
+set ::env(FP_PDN_HPITCH) "90"
+set ::env(FP_PDN_HSPACING) "10"
+set ::env(FP_PDN_HWIDTH) "3.1"
 
 
 
diff --git a/openlane/user_project_wrapper/interactive.tcl b/openlane/user_project_wrapper/interactive.tcl
index 2842c9f..07190b7 100644
--- a/openlane/user_project_wrapper/interactive.tcl
+++ b/openlane/user_project_wrapper/interactive.tcl
@@ -19,41 +19,53 @@
 package require openlane;
 
 proc run_placement_step {args} {
-    if { ! [ info exists ::env(PLACEMENT_CURRENT_DEF) ] } {
-        set ::env(PLACEMENT_CURRENT_DEF) $::env(CURRENT_DEF)
-    } else {
-        set ::env(CURRENT_DEF) $::env(PLACEMENT_CURRENT_DEF)
-    }
+	if { ! [ info exists ::env(PLACEMENT_CURRENT_DEF) ] } {
+		set ::env(PLACEMENT_CURRENT_DEF) $::env(CURRENT_DEF)
+	} else {
+		set ::env(CURRENT_DEF) $::env(PLACEMENT_CURRENT_DEF)
+	}
 
-    run_placement
+	run_placement
 }
 
 proc run_cts_step {args} {
-    if { ! [ info exists ::env(CTS_CURRENT_DEF) ] } {
-        set ::env(CTS_CURRENT_DEF) $::env(CURRENT_DEF)
-    } else {
-        set ::env(CURRENT_DEF) $::env(CTS_CURRENT_DEF)
-    }
+	if { ! [ info exists ::env(CTS_CURRENT_DEF) ] } {
+		set ::env(CTS_CURRENT_DEF) $::env(CURRENT_DEF)
+	} else {
+		set ::env(CURRENT_DEF) $::env(CTS_CURRENT_DEF)
+	}
 
-    run_cts
-    run_resizer_timing
+	run_cts
+	run_resizer_timing
 }
 
 proc run_routing_step {args} {
-    if { ! [ info exists ::env(ROUTING_CURRENT_DEF) ] } {
-        set ::env(ROUTING_CURRENT_DEF) $::env(CURRENT_DEF)
-    } else {
-        set ::env(CURRENT_DEF) $::env(ROUTING_CURRENT_DEF)
-    }
-    run_routing
+	if { ! [ info exists ::env(ROUTING_CURRENT_DEF) ] } {
+		set ::env(ROUTING_CURRENT_DEF) $::env(CURRENT_DEF)
+	} else {
+		set ::env(CURRENT_DEF) $::env(ROUTING_CURRENT_DEF)
+	}
+	run_routing
+}
+
+proc run_parasitics_sta_step {args} {
+	if { ! [ info exists ::env(PARSITICS_CURRENT_DEF) ] } {
+		set ::env(PARSITICS_CURRENT_DEF) $::env(CURRENT_DEF)
+	} else {
+		set ::env(CURRENT_DEF) $::env(PARSITICS_CURRENT_DEF)
+	}
+
+	if { $::env(RUN_SPEF_EXTRACTION) } {
+		run_parasitics_sta
+	}
 }
 
 proc run_diode_insertion_2_5_step {args} {
-    if { ! [ info exists ::env(DIODE_INSERTION_CURRENT_DEF) ] } {
-        set ::env(DIODE_INSERTION_CURRENT_DEF) $::env(CURRENT_DEF)
-    } else {
-        set ::env(CURRENT_DEF) $::env(DIODE_INSERTION_CURRENT_DEF)
-    }
+	if { ! [ info exists ::env(DIODE_INSERTION_CURRENT_DEF) ] } {
+		set ::env(DIODE_INSERTION_CURRENT_DEF) $::env(CURRENT_DEF)
+	} else {
+		set ::env(CURRENT_DEF) $::env(DIODE_INSERTION_CURRENT_DEF)
+	}
 	if { ($::env(DIODE_INSERTION_STRATEGY) == 2) || ($::env(DIODE_INSERTION_STRATEGY) == 5) } {
 		run_antenna_check
 		heal_antenna_violators; # modifies the routed DEF
@@ -62,36 +74,41 @@
 }
 
 proc run_lvs_step {{ lvs_enabled 1 }} {
-    if { ! [ info exists ::env(LVS_CURRENT_DEF) ] } {
-        set ::env(LVS_CURRENT_DEF) $::env(CURRENT_DEF)
-    } else {
-        set ::env(CURRENT_DEF) $::env(LVS_CURRENT_DEF)
-    }
-	if { $lvs_enabled } {
-		run_magic_spice_export
+	if { ! [ info exists ::env(LVS_CURRENT_DEF) ] } {
+		set ::env(LVS_CURRENT_DEF) $::env(CURRENT_DEF)
+	} else {
+		set ::env(CURRENT_DEF) $::env(LVS_CURRENT_DEF)
+	}
+
+	if { $lvs_enabled && $::env(RUN_LVS) } {
+		run_magic_spice_export;
 		run_lvs; # requires run_magic_spice_export
 	}
 
 }
 
 proc run_drc_step {{ drc_enabled 1 }} {
-    if { ! [ info exists ::env(DRC_CURRENT_DEF) ] } {
-        set ::env(DRC_CURRENT_DEF) $::env(CURRENT_DEF)
-    } else {
-        set ::env(CURRENT_DEF) $::env(DRC_CURRENT_DEF)
-    }
+	if { ! [ info exists ::env(DRC_CURRENT_DEF) ] } {
+		set ::env(DRC_CURRENT_DEF) $::env(CURRENT_DEF)
+	} else {
+		set ::env(CURRENT_DEF) $::env(DRC_CURRENT_DEF)
+	}
 	if { $drc_enabled } {
-		run_magic_drc
-		run_klayout_drc
+		if { $::env(RUN_MAGIC_DRC) } {
+			run_magic_drc
+		}
+		if {$::env(RUN_KLAYOUT_DRC)} {
+			run_klayout_drc
+		}
 	}
 }
 
 proc run_antenna_check_step {{ antenna_check_enabled 1 }} {
-    if { ! [ info exists ::env(ANTENNA_CHECK_CURRENT_DEF) ] } {
-        set ::env(ANTENNA_CHECK_CURRENT_DEF) $::env(CURRENT_DEF)
-    } else {
-        set ::env(CURRENT_DEF) $::env(ANTENNA_CHECK_CURRENT_DEF)
-    }
+	if { ! [ info exists ::env(ANTENNA_CHECK_CURRENT_DEF) ] } {
+		set ::env(ANTENNA_CHECK_CURRENT_DEF) $::env(CURRENT_DEF)
+	} else {
+		set ::env(CURRENT_DEF) $::env(ANTENNA_CHECK_CURRENT_DEF)
+	}
 	if { $antenna_check_enabled } {
 		run_antenna_check
 	}
@@ -99,8 +116,23 @@
 
 proc run_eco_step {args} {
 	if {  $::env(ECO_ENABLE) == 1 } {
-        run_eco
-    }
+		run_eco_flow
+	}
+}
+
+proc run_magic_step {args} {
+	if {$::env(RUN_MAGIC)} {
+		run_magic
+	}
+}
+
+proc run_klayout_step {args} {
+	if {$::env(RUN_KLAYOUT)} {
+		run_klayout
+	}
+	if {$::env(RUN_KLAYOUT_XOR)} {
+		run_klayout_gds_xor
+	}
 }
 
 proc save_final_views {args} {
@@ -113,19 +145,19 @@
 	set arg_list [list]
 
 	# If they don't exist, save_views will simply not copy them
-	lappend arg_list -lef_path $::env(finishing_results)/$::env(DESIGN_NAME).lef
-	lappend arg_list -gds_path $::env(finishing_results)/$::env(DESIGN_NAME).gds
-	lappend arg_list -mag_path $::env(finishing_results)/$::env(DESIGN_NAME).mag
-	lappend arg_list -maglef_path $::env(finishing_results)/$::env(DESIGN_NAME).lef.mag
-	lappend arg_list -spice_path $::env(finishing_results)/$::env(DESIGN_NAME).spice
-	
+	lappend arg_list -lef_path $::env(signoff_results)/$::env(DESIGN_NAME).lef
+	lappend arg_list -gds_path $::env(signoff_results)/$::env(DESIGN_NAME).gds
+	lappend arg_list -mag_path $::env(signoff_results)/$::env(DESIGN_NAME).mag
+	lappend arg_list -maglef_path $::env(signoff_results)/$::env(DESIGN_NAME).lef.mag
+	lappend arg_list -spice_path $::env(signoff_results)/$::env(DESIGN_NAME).spice
+
 	# Guaranteed to have default values
 	lappend arg_list -def_path $::env(CURRENT_DEF)
 	lappend arg_list -verilog_path $::env(CURRENT_NETLIST)
 
 	# Not guaranteed to have default values
-	if { [info exists ::env(SPEF_TYPICAL)] } {
-		lappend arg_list -spef_path $::env(SPEF_TYPICAL)
+	if { [info exists ::env(CURRENT_SPEF)] } {
+		lappend arg_list -spef_path $::env(CURRENT_SPEF)
 	}
 	if { [info exists ::env(CURRENT_SDF)] } {
 		lappend arg_list -sdf_path $::env(CURRENT_SDF)
@@ -154,15 +186,13 @@
 	}
 }
 
-
-
-
 proc gen_pdn {args} {
-    puts_info "Generating PDN..."
+    increment_index
     TIMER::timer_start
-	
-    set ::env(SAVE_DEF) [index_file $::env(floorplan_tmpfiles).def]
-    set ::env(PGA_RPT_FILE) [index_file $::env(floorplan_tmpfiles).pga.rpt]
+    puts_info "Generating PDN..."
+
+    set ::env(SAVE_DEF) [index_file $::env(floorplan_tmpfiles)/pdn.def]
+    set ::env(PGA_RPT_FILE) [index_file $::env(floorplan_tmpfiles)/pdn.pga.rpt]
 
     run_openroad_script $::env(SCRIPTS_DIR)/openroad/pdn.tcl \
         |& -indexed_log [index_file $::env(floorplan_logs)/pdn.log]
@@ -177,12 +207,50 @@
 }
 
 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 $synthesis_tmpfiles.pg_define.v
+		# that are not in $synthesis_results.v
+		#
+		set full_pins {*}[extract_pins_from_yosys_netlist $::env(synthesis_tmpfiles)/pg_define.v]
+		puts_info $full_pins
 
-	if {[info exists ::env(FP_PDN_POWER_STRAPS)]} {
-	     set power_domains [split $::env(FP_PDN_POWER_STRAPS) ","]
+		set non_pg_pins {*}[extract_pins_from_yosys_netlist $::env(synthesis_results)/$::env(DESIGN_NAME).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)
 	}
 
-	# internal macros power connections 
+	puts_info "Power planning with power {$::env(VDD_NETS)} and 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
+	}
+
+	# check internal macros' power connection definitions
 	if {[info exists ::env(FP_PDN_MACRO_HOOKS)]} {
 		set macro_hooks [dict create]
 		set pdn_hooks [split $::env(FP_PDN_MACRO_HOOKS) ","]
@@ -192,73 +260,19 @@
 			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 domain $power_domains {
-		set ::env(VDD_NET)       [lindex $domain 0]
-	        set ::env(GND_NET)       [lindex $domain 1]
-	        set ::env(_WITH_STRAPS)  [lindex $domain 2]
-
-	        puts_info "Connecting Power: $::env(VDD_NET) & $::env(GND_NET) 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
-                                                set ::env(FP_PDN_IRDROP) "0"
-						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 $::env(VDD_NET) & $::env(GND_NET)."
+				Make sure that both exist in $::env(VDD_NETS) and $::env(GND_NETS)."
 		}
-		
-		gen_pdn
-
-		set ::env(FP_PDN_ENABLE_RAILS) 0
-		set ::env(FP_PDN_ENABLE_MACROS_GRID) 0
-                set ::env(FP_PDN_IRDROP) "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_HOFFSET)"
-		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
-}
 
+	gen_pdn
+}
 
 proc run_floorplan {args} {
 	puts_info "Running Floorplanning..."
@@ -333,6 +347,10 @@
 	prep {*}$args
     # signal trap SIGINT save_state;
 
+	if { [info exists flags_map(-gui)] } {
+		or_gui
+		return
+	}
 	if { [info exists arg_values(-override_env)] } {
 		set env_overrides [split $arg_values(-override_env) ','] 
 		foreach override $env_overrides {
@@ -344,25 +362,25 @@
 	}
 
     set LVS_ENABLED 1
-    set DRC_ENABLED 1
+    set DRC_ENABLED 0
     set ANTENNACHECK_ENABLED 1
 
-    set steps [dict create \
-		"synthesis" {run_synthesis "" } \
-		"floorplan" {run_floorplan ""} \
-		"placement" {run_placement_step ""} \
-		"cts" {run_cts_step ""} \
-		"routing" {run_routing_step ""}\
-                "eco" {run_eco_step ""} \
-		"diode_insertion" {run_diode_insertion_2_5_step ""} \
-		"gds_magic" {run_magic ""} \
-		"gds_drc_klayout" {run_klayout ""} \
-		"gds_xor_klayout" {run_klayout_gds_xor ""} \
-		"lvs" "run_lvs_step $LVS_ENABLED" \
-		"drc" "run_drc_step $DRC_ENABLED" \
-		"antenna_check" "run_antenna_check_step $ANTENNACHECK_ENABLED" \
-		"cvc" {run_lef_cvc}
-    ]
+	set steps [dict create \
+		"synthesis" "run_synthesis" \
+		"floorplan" "run_floorplan" \
+		"placement" "run_placement_step" \
+		"cts" "run_cts_step" \
+		"routing" "run_routing_step" \
+		"parasitics_sta" "run_parasitics_sta_step" \
+		"eco" "run_eco_step" \
+		"diode_insertion" "run_diode_insertion_2_5_step" \
+		"gds_magic" "run_magic_step" \
+		"gds_klayout" "run_klayout_step" \
+		"lvs" "run_lvs_step $LVS_ENABLED " \
+		"drc" "run_drc_step $DRC_ENABLED " \
+		"antenna_check" "run_antenna_check_step $ANTENNACHECK_ENABLED " \
+		"cvc" "run_lef_cvc"
+	]
 
     set_if_unset arg_values(-to) "cvc";
 
diff --git a/openlane/user_project_wrapper/macro.cfg b/openlane/user_project_wrapper/macro.cfg
index 9b2fa9f..752b00b 100644
--- a/openlane/user_project_wrapper/macro.cfg
+++ b/openlane/user_project_wrapper/macro.cfg
@@ -1,15 +1,15 @@
-u_qspi_master           2275             710           N
-u_uart_i2c_usb_spi      2275            1410           N
-u_pinmux                2275            2250           N
+u_qspi_master                2250             650           N
+u_uart_i2c_usb_spi           2250            1350           N
+u_pinmux                     2250            2150           N
 
-u_tcm_1KB_mem0          125             1750           N 
-u_tcm_1KB_mem1          125             2645           N 
-u_riscv_top	        850	        955	       N
-u_icache_1KB_mem0       125             900            N
-u_icache_1KB_mem1       800             110            N
+u_riscv_top.i_core_top_0    50	            1400 	   N
+u_riscv_top.u_connect       725	            1400	   N
+u_riscv_top.u_intf          950 	    650	           N
+u_dcache_2kb                150             130            N
+u_icache_2kb                950             130            N
+u_tsram0_2kb                150             750            N
 
-u_dcache_1KB_mem0       850             2645           N
-u_dcache_1KB_mem1       1575            2645           N
 
-u_intercon              1850            710            N
-u_wb_host               1750            175            N
+u_intercon                  1850            650            N
+u_wb_host                   1750            100            N
+u_pll                       2200            100            N
diff --git a/openlane/user_project_wrapper/pdn_cfg.tcl b/openlane/user_project_wrapper/pdn_cfg.tcl
index 7813f95..1bd5f1e 100644
--- a/openlane/user_project_wrapper/pdn_cfg.tcl
+++ b/openlane/user_project_wrapper/pdn_cfg.tcl
@@ -8,89 +8,158 @@
 	set ::env(GND_NET) $::env(GND_PIN)
 }
 
-set ::power_nets $::env(VDD_NET)
-set ::ground_nets $::env(GND_NET)
-
 if { [info exists ::env(FP_PDN_ENABLE_GLOBAL_CONNECTIONS)] } {
     if { $::env(FP_PDN_ENABLE_GLOBAL_CONNECTIONS) == 1 } {
         foreach power_pin $::env(STD_CELL_POWER_PINS) {
-            add_global_connection -net $::env(VDD_NET) -inst_pattern .* -pin_pattern $power_pin -power
+            add_global_connection \
+                -net $::env(VDD_NET) \
+                -inst_pattern .* \
+                -pin_pattern $power_pin \
+                -power
         }
         foreach ground_pin $::env(STD_CELL_GROUND_PINS) {
-            add_global_connection -net $::env(GND_NET) -inst_pattern .* -pin_pattern $ground_pin -ground
+            add_global_connection \
+                -net $::env(GND_NET) \
+                -inst_pattern .* \
+                -pin_pattern $ground_pin \
+                -ground
         }
     }
 }
 
-set_voltage_domain -name CORE -power $::env(VDD_NET) -ground $::env(GND_NET)
+if { $::env(FP_PDN_ENABLE_MACROS_GRID) == 1 &&
+     [info exists ::env(FP_PDN_MACRO_HOOKS)]} {
+    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]
+        # This assumes the power pin and the power net have the same name.
+        # The macro hooks only give an instance name and not power pin names.
 
-# Assesses whether the deisgn is the core of the chip or not based on the 
+        add_global_connection \
+            -net $power_net \
+            -inst_pattern $instance_name \
+            -pin_pattern $power_net \
+            -power
+
+        add_global_connection \
+            -net $ground_net \
+            -inst_pattern $instance_name \
+            -pin_pattern $ground_net \
+            -ground
+    }
+}
+
+set secondary []
+
+foreach vdd $::env(VDD_NETS) gnd $::env(GND_NETS) {
+    if { $vdd != $::env(VDD_NET)} {
+        lappend secondary $vdd
+
+        set db_net [[ord::get_db_block] findNet $vdd]
+        if {$db_net == "NULL"} {
+            set net [odb::dbNet_create [ord::get_db_block] $vdd]
+            $net setSpecial
+            $net setSigType "POWER"
+        }
+    }
+
+    if { $gnd != $::env(GND_NET)} {
+        lappend secondary $gnd
+
+        set db_net [[ord::get_db_block] findNet $gnd]
+        if {$db_net == "NULL"} {
+            set net [odb::dbNet_create [ord::get_db_block] $gnd]
+            $net setSpecial
+            $net setSigType "GROUND"
+        }
+    }
+}
+
+set_voltage_domain -name CORE -power $::env(VDD_NET) -ground $::env(GND_NET) \
+    -secondary_power $secondary
+
+# Assesses whether the design is the core of the chip or not based on the
 # value of $::env(DESIGN_IS_CORE) and uses the appropriate stdcell section
 if { $::env(DESIGN_IS_CORE) == 1 } {
     # Used if the design is the core of the chip
-    define_pdn_grid -name stdcell_grid -starts_with POWER -voltage_domain CORE -pins [subst {$::env(FP_PDN_LOWER_LAYER) $::env(FP_PDN_UPPER_LAYER)}]
-    if { $::env(_WITH_STRAPS) } {
-        add_pdn_stripe -grid stdcell_grid -layer $::env(FP_PDN_LOWER_LAYER) -width $::env(FP_PDN_VWIDTH) -pitch $::env(FP_PDN_VPITCH) -offset $::env(FP_PDN_VOFFSET) -starts_with POWER
-        add_pdn_stripe -grid stdcell_grid -layer $::env(FP_PDN_UPPER_LAYER) -width $::env(FP_PDN_HWIDTH) -pitch $::env(FP_PDN_HPITCH) -offset $::env(FP_PDN_HOFFSET) -starts_with POWER
-    } 
-    add_pdn_connect -grid stdcell_grid -layers [subst {$::env(FP_PDN_LOWER_LAYER) $::env(FP_PDN_UPPER_LAYER)}]
+    define_pdn_grid \
+        -name stdcell_grid \
+        -starts_with POWER \
+        -voltage_domain CORE \
+        -pins "$::env(FP_PDN_LOWER_LAYER) $::env(FP_PDN_UPPER_LAYER)"
+
+    add_pdn_stripe \
+        -grid stdcell_grid \
+        -layer $::env(FP_PDN_LOWER_LAYER) \
+        -width $::env(FP_PDN_VWIDTH) \
+        -pitch $::env(FP_PDN_VPITCH) \
+        -offset $::env(FP_PDN_VOFFSET) \
+	-nets "$::env(VDD_NET) $::env(GND_NET)" \
+        -starts_with POWER -extend_to_core_ring
+
+    add_pdn_stripe \
+        -grid stdcell_grid \
+        -layer $::env(FP_PDN_UPPER_LAYER) \
+        -width $::env(FP_PDN_HWIDTH) \
+        -pitch $::env(FP_PDN_HPITCH) \
+        -offset $::env(FP_PDN_HOFFSET) \
+	-nets "$::env(VDD_NET) $::env(GND_NET)" \
+        -starts_with POWER -extend_to_core_ring
+
+    add_pdn_connect \
+        -grid stdcell_grid \
+        -layers "$::env(FP_PDN_LOWER_LAYER) $::env(FP_PDN_UPPER_LAYER)"
 } else {
     # Used if the design is a macro in the core
-    define_pdn_grid -name stdcell_grid -starts_with POWER -voltage_domain CORE -pins $::env(FP_PDN_LOWER_LAYER)
-    add_pdn_stripe -grid stdcell_grid -layer $::env(FP_PDN_LOWER_LAYER) -width $::env(FP_PDN_VWIDTH) -pitch $::env(FP_PDN_VPITCH) -offset $::env(FP_PDN_VOFFSET) -starts_with POWER
+    define_pdn_grid \
+        -name stdcell_grid \
+        -starts_with POWER \
+        -voltage_domain CORE \
+        -pins $::env(FP_PDN_LOWER_LAYER)
+
+    add_pdn_stripe \
+        -grid stdcell_grid \
+        -layer $::env(FP_PDN_LOWER_LAYER) \
+        -width $::env(FP_PDN_VWIDTH) \
+        -pitch $::env(FP_PDN_VPITCH) \
+        -offset $::env(FP_PDN_VOFFSET) \
+        -starts_with POWER
 }
 
 # Adds the standard cell rails if enabled.
 if { $::env(FP_PDN_ENABLE_RAILS) == 1 } {
-    add_pdn_stripe -grid stdcell_grid -layer $::env(FP_PDN_RAILS_LAYER) -width $::env(FP_PDN_RAIL_WIDTH) -followpins -starts_with POWER
-    add_pdn_connect -grid stdcell_grid -layers [subst {$::env(FP_PDN_RAILS_LAYER) $::env(FP_PDN_LOWER_LAYER)}]
+    add_pdn_stripe \
+        -grid stdcell_grid \
+        -layer $::env(FP_PDN_RAILS_LAYER) \
+        -width $::env(FP_PDN_RAIL_WIDTH) \
+        -followpins \
+        -starts_with POWER
+
+    add_pdn_connect \
+        -grid stdcell_grid \
+        -layers "$::env(FP_PDN_RAILS_LAYER) $::env(FP_PDN_LOWER_LAYER)"
 } 
 
 
 # Adds the core ring if enabled.
 if { $::env(FP_PDN_CORE_RING) == 1 } {
-    add_pdn_ring -grid stdcell_grid -layer [subst {$::env(FP_PDN_LOWER_LAYER) $::env(FP_PDN_UPPER_LAYER)}]  \
-                     -widths [subst {$::env(FP_PDN_CORE_RING_VWIDTH) $::env(FP_PDN_CORE_RING_HWIDTH)}] \
-                     -spacings [subst {$::env(FP_PDN_CORE_RING_VSPACING) $::env(FP_PDN_CORE_RING_HSPACING)}] \
-                     -core_offset [subst {$::env(FP_PDN_CORE_RING_VOFFSET) $::env(FP_PDN_CORE_RING_HOFFSET)}]
+    add_pdn_ring \
+        -grid stdcell_grid \
+        -layers "$::env(FP_PDN_LOWER_LAYER) $::env(FP_PDN_UPPER_LAYER)" \
+        -widths "$::env(FP_PDN_CORE_RING_VWIDTH) $::env(FP_PDN_CORE_RING_HWIDTH)" \
+        -spacings "$::env(FP_PDN_CORE_RING_VSPACING) $::env(FP_PDN_CORE_RING_HSPACING)" \
+        -core_offset "$::env(FP_PDN_CORE_RING_VOFFSET) $::env(FP_PDN_CORE_RING_HOFFSET)"
 }
 
-# A general macro that follows the premise of the set heirarchy. You may want to modify this or add other macro configs
-# The macro power pin names are assumed to match the VDD and GND net names 
-# TODO: parameterize the power pin names 
-set macro {
-    orient {R0 R180 MX MY R90 R270 MXR90 MYR90}
-    power_pins $::env(VDD_NET)
-    ground_pins $::env(GND_NET)
-    blockages $::env(MACRO_BLOCKAGES_LAYER)
-    straps {
-    }
-    connect {{$::env(FP_PDN_LOWER_LAYER)_PIN_ver $::env(FP_PDN_UPPER_LAYER)}}
-}
+define_pdn_grid \
+    -macro \
+    -default \
+    -name macro \
+    -starts_with POWER \
+    -halo "$::env(FP_PDN_HORIZONTAL_HALO) $::env(FP_PDN_VERTICAL_HALO)"
 
-if { $::env(FP_PDN_ENABLE_MACROS_GRID) == 1} {
-    if { [llength $::env(FP_PDN_MACROS)] > 0 } {
-        # generate automatically per instance:
-        foreach macro_instance $::env(FP_PDN_MACROS) {
-            set macro_instance_grid [subst $macro] 
-            dict append $macro_instance_grid instance $macro_instance
-            set ::halo [list $::env(FP_PDN_HORIZONTAL_HALO) $::env(FP_PDN_VERTICAL_HALO)]
-            pdngen::specify_grid macro [subst $macro_instance_grid]
-        }
-    } else {
-        set ::halo [list $::env(FP_PDN_HORIZONTAL_HALO) $::env(FP_PDN_VERTICAL_HALO)]
-        pdngen::specify_grid macro [subst $macro]
-    }
-    # CAN NOT ENABLE THE TCL COMMAND BECAUSE THERE IS NO ARGUMENT FOR SPECIFYING THE POWER AND GROUND PIN NAMES ON THE MACRO
-    # define_pdn_grid -macro -orient {R0 R180 MX MY R90 R270 MXR90 MYR90} -grid_over_pg_pins -starts_with POWER -pin_direction vertical -halo [subst {$::env(FP_PDN_HORIZONTAL_HALO) $::env(FP_PDN_VERTICAL_HALO)}]
-    # add_pdn_connect -layers [subst {$::env(FP_PDN_LOWER_LAYER) $::env(FP_PDN_UPPER_LAYER)}]
-} else {
-    define_pdn_grid -macro -orient {R0 R180 MX MY R90 R270 MXR90 MYR90} -grid_over_pg_pins -starts_with POWER -halo [subst {$::env(FP_PDN_HORIZONTAL_HALO) $::env(FP_PDN_VERTICAL_HALO)}]
-}
-
-# POWER or GROUND #Std. cell rails starting with power or ground rails at the bottom of the core area
-set ::rails_start_with "POWER" ;
-
-# POWER or GROUND #Upper metal stripes starting with power or ground rails at the left/bottom of the core area
-set ::stripes_start_with "POWER" ;
-
+add_pdn_connect \
+    -grid macro \
+    -layers "$::env(FP_PDN_LOWER_LAYER) $::env(FP_PDN_UPPER_LAYER)"
diff --git a/openlane/wb_host/base.sdc b/openlane/wb_host/base.sdc
index 9d9cc79..a5b2325 100644
--- a/openlane/wb_host/base.sdc
+++ b/openlane/wb_host/base.sdc
@@ -8,7 +8,12 @@
 ###############################################################################
 create_clock -name wbm_clk_i -period 10.0000 [get_ports {wbm_clk_i}]
 create_clock -name wbs_clk_i -period 10.0000 [get_ports {wbs_clk_i}]
-create_clock -name uart_clk -period 100.0000 [get_pins {u_uart2wb.u_core.u_uart_clk.u_mux/X}]
+create_clock -name uart_clk -period 100.0000 [get_pins {u_uart2wb.u_core.u_uart_clk.genblk1.u_mux/X}]
+
+create_clock -name int_pll_clock -period 10.0000  [get_pins {u_clkbuf_pll.u_buf/X}]
+create_clock -name wbs_ref_clk   -period 10.0000  [get_pins {u_wbs_ref_clkbuf.u_buf/X}]
+create_clock -name cpu_ref_clk   -period 10.0000  [get_pins {u_cpu_ref_clkbuf.u_buf/X}]
+create_clock -name usb_ref_clk   -period 10.0000  [get_pins {u_usb_ref_clkbuf.u_buf/X}]
 
 set_clock_transition 0.1500 [all_clocks]
 set_clock_uncertainty -setup 0.2500 [all_clocks]
@@ -20,9 +25,14 @@
 set_timing_derate -late [expr {1+$::env(SYNTH_TIMING_DERATE)}]
 
 set_clock_groups -name async_clock -asynchronous \
- -group [get_clocks {uart_clk}]  \
- -group [get_clocks {wbs_clk_i}] \
- -group [get_clocks {wbm_clk_i}] -comment {Async Clock group}
+ -group [get_clocks {uart_clk}]      \
+ -group [get_clocks {wbs_clk_i}]     \
+ -group [get_clocks {wbm_clk_i}]     \
+ -group [get_clocks {int_pll_clock}] \
+ -group [get_clocks {wbs_ref_clk}]   \
+ -group [get_clocks {cpu_ref_clk}]   \
+ -group [get_clocks {usb_ref_clk}]   \
+ -comment {Async Clock group}
 
 ### ClkSkew Adjust
 set_case_analysis 0 [get_ports {cfg_cska_wh[0]}]
diff --git a/openlane/wb_host/config.tcl b/openlane/wb_host/config.tcl
index 1dabc40..0d8ff81 100755
--- a/openlane/wb_host/config.tcl
+++ b/openlane/wb_host/config.tcl
@@ -26,7 +26,7 @@
 
 # Timing configuration
 set ::env(CLOCK_PERIOD) "10"
-set ::env(CLOCK_PORT) "wbm_clk_i wbs_clk_i u_uart2wb.u_core.u_uart_clk.u_mux/X"
+set ::env(CLOCK_PORT) "wbm_clk_i wbs_clk_i u_uart2wb.u_core.u_uart_clk.genblk1.u_mux/X"
 
 set ::env(SYNTH_MAX_FANOUT) 4
 
@@ -85,7 +85,7 @@
 
 
 set ::env(PL_TIME_DRIVEN) 1
-set ::env(PL_TARGET_DENSITY) "0.38"
+set ::env(PL_TARGET_DENSITY) "0.40"
 
 
 
@@ -97,7 +97,7 @@
 set ::env(FP_PDN_VWIDTH) 5
 set ::env(FP_PDN_HWIDTH) 5
 
-set ::env(GLB_RT_MAXLAYER) 5
+#set ::env(GLB_RT_MAXLAYER) 5
 set ::env(RT_MAX_LAYER) {met4}
 set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10
 
diff --git a/openlane/wb_host/pin_order.cfg b/openlane/wb_host/pin_order.cfg
index 3448c6c..17b3e01 100644
--- a/openlane/wb_host/pin_order.cfg
+++ b/openlane/wb_host/pin_order.cfg
@@ -5,22 +5,6 @@
 
 #W
 usb_clk          0000 0 4
-cfg_clk_ctrl1\[31\]
-cfg_clk_ctrl1\[30\]
-cfg_clk_ctrl1\[29\]
-cfg_clk_ctrl1\[28\]
-cfg_clk_ctrl2\[27\]
-cfg_clk_ctrl2\[26\]
-cfg_clk_ctrl2\[25\]
-cfg_clk_ctrl2\[24\]
-cfg_clk_ctrl2\[23\]
-cfg_clk_ctrl2\[22\]
-cfg_clk_ctrl2\[21\]
-cfg_clk_ctrl2\[20\]
-cfg_clk_ctrl2\[19\]
-cfg_clk_ctrl2\[18\]
-cfg_clk_ctrl2\[17\]
-cfg_clk_ctrl2\[16\]
 
 cpu_clk               0100 0 2
 rtc_clk
@@ -159,33 +143,61 @@
 la_data_in\[17\]    
 
 #E
+cfg_dc_trim\[7\]   000 0 2
+cfg_dc_trim\[8\]
+cfg_dc_trim\[9\]
+cfg_dc_trim\[10\]
+cfg_dc_trim\[11\]
+cfg_dc_trim\[12\]
+cfg_dc_trim\[13\]
+cfg_dc_trim\[14\]
+cfg_dc_trim\[15\]
+cfg_dc_trim\[16\]
+cfg_dc_trim\[17\]
+cfg_dc_trim\[18\]
+cfg_dc_trim\[19\]
 
-uartm_rxd           100 0 2
+cfg_dc_trim\[25\]
+cfg_dc_trim\[24\]
+cfg_dc_trim\[23\]
+cfg_dc_trim\[22\]
+cfg_dc_trim\[21\]
+cfg_dc_trim\[20\]
+
+pll_clk_out\[0\]
+pll_clk_out\[1\]
+cfg_pll_fed_div\[0\]
+cfg_pll_fed_div\[1\]
+cfg_pll_fed_div\[2\]
+cfg_pll_fed_div\[3\]
+cfg_pll_fed_div\[4\]
+cfg_pll_enb
+cfg_dco_mode
+cfg_dc_trim\[0\]
+cfg_dc_trim\[1\]
+cfg_dc_trim\[2\]
+cfg_dc_trim\[3\]
+cfg_dc_trim\[4\]
+cfg_dc_trim\[5\]
+cfg_dc_trim\[6\]
+
+wbd_pll_rst_n 
+pll_ref_clk  
+
+
+
+uartm_rxd           300 0 2
 uartm_txd
 
+dbg_clk_mon
+
 
 #N
 wbd_int_rst_n         0100 0 2
-cfg_clk_ctrl2\[31\]
-cfg_clk_ctrl2\[30\]
-cfg_clk_ctrl2\[29\]
-cfg_clk_ctrl2\[28\]
-cfg_clk_ctrl2\[15\]
-cfg_clk_ctrl2\[14\]
-cfg_clk_ctrl2\[13\]
-cfg_clk_ctrl2\[12\]
-cfg_clk_ctrl2\[11\]
-cfg_clk_ctrl2\[10\]
-cfg_clk_ctrl2\[9\]
-cfg_clk_ctrl2\[8\]
-cfg_clk_ctrl2\[7\]
-cfg_clk_ctrl2\[6\]
-cfg_clk_ctrl2\[5\]
-cfg_clk_ctrl2\[4\]
-cfg_clk_ctrl2\[3\]
-cfg_clk_ctrl2\[2\]
-cfg_clk_ctrl2\[1\]
-cfg_clk_ctrl2\[0\]
+cfg_clk_ctrl1\[31\]
+cfg_clk_ctrl1\[30\]
+cfg_clk_ctrl1\[29\]
+cfg_clk_ctrl1\[28\]
 cfg_clk_ctrl1\[27\]
 cfg_clk_ctrl1\[26\]
 cfg_clk_ctrl1\[25\]
diff --git a/openlane/wb_interconnect/config.tcl b/openlane/wb_interconnect/config.tcl
index 2b03cd9..33ac3c6 100755
--- a/openlane/wb_interconnect/config.tcl
+++ b/openlane/wb_interconnect/config.tcl
@@ -113,7 +113,7 @@
 set ::env(GLB_RT_ALLOW_CONGESTION) 0
 set ::env(GLB_RT_OVERFLOW_ITERS) 200
 
-set ::env(GLB_RT_MAXLAYER) 5
+#set ::env(GLB_RT_MAXLAYER) 5
 set ::env(RT_MAX_LAYER) {met4}
 
 
diff --git a/openlane/wb_interconnect/pin_order.cfg b/openlane/wb_interconnect/pin_order.cfg
index cca8e25..1534993 100644
--- a/openlane/wb_interconnect/pin_order.cfg
+++ b/openlane/wb_interconnect/pin_order.cfg
@@ -147,7 +147,7 @@
 
 
 #W
-ch_data_out\[36\]   0750 0 2
+ch_data_out\[36\]   000 0 2
 ch_data_out\[35\] 
 ch_data_out\[34\] 
 ch_data_out\[33\] 
@@ -172,7 +172,7 @@
 
 ch_clk_out\[0\]
 
-m1_wbd_stb_i         0950 0 2 
+m1_wbd_stb_i         100 0 2 
 m1_wbd_we_i         
 m1_wbd_adr_i\[31\]  
 m1_wbd_adr_i\[30\]  
@@ -279,7 +279,7 @@
 m1_wbd_err_o        
 m1_wbd_cyc_i        
 
-m2_wbd_stb_i        1150 0 2
+m2_wbd_stb_i        300 0 2
 m2_wbd_we_i         
 m2_wbd_adr_i\[31\]  
 m2_wbd_adr_i\[30\]  
@@ -397,7 +397,7 @@
 m2_wbd_err_o        
 m2_wbd_cyc_i       
 
-m3_wbd_stb_i        1350 0 2
+m3_wbd_stb_i        500 0 2
 m3_wbd_we_i         
 m3_wbd_adr_i\[31\]  
 m3_wbd_adr_i\[30\]  
@@ -701,7 +701,7 @@
 s1_wbd_ack_i        
 s1_wbd_cyc_o  
 
-ch_data_in\[36\]  1400 0 2  
+ch_data_in\[36\]  1500 0 2  
 ch_data_in\[35\]
 ch_data_in\[34\]
 ch_data_in\[33\]
@@ -725,7 +725,7 @@
 ch_data_out\[12\]
 ch_clk_out\[3\]
 
-s2_wbd_stb_o         1500 0 2
+s2_wbd_stb_o         1600 0 2
 s2_wbd_we_o         
 s2_wbd_adr_o\[7\]   
 s2_wbd_adr_o\[6\]   
diff --git a/openlane/ycr_core_top/base.sdc b/openlane/ycr_core_top/base.sdc
new file mode 100644
index 0000000..0a05d50
--- /dev/null
+++ b/openlane/ycr_core_top/base.sdc
@@ -0,0 +1,65 @@
+###############################################################################
+# Timing Constraints
+###############################################################################
+create_clock -name core_clk -period 10.0000 [get_ports {clk}]
+
+set_clock_transition 0.1500 [all_clocks]
+set_clock_uncertainty -setup 0.2500 [all_clocks]
+set_clock_uncertainty -hold 0.2500 [all_clocks]
+
+set ::env(SYNTH_TIMING_DERATE) 0.05
+puts "\[INFO\]: Setting timing derate to: [expr {$::env(SYNTH_TIMING_DERATE) * 10}] %"
+set_timing_derate -early [expr {1-$::env(SYNTH_TIMING_DERATE)}]
+set_timing_derate -late [expr {1+$::env(SYNTH_TIMING_DERATE)}]
+
+#IMEM Constraints
+set_output_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2imem_cmd_o}]
+set_output_delay -max 4.5000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2imem_req_o}]
+set_output_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2imem_addr_o[*]}]
+set_output_delay -max 4.5000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2imem_bl_o[*]}]
+
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2imem_cmd_o}]
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2imem_req_o}]
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2imem_addr_o[*]}]
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2imem_bl_o[*]}]
+
+set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {imem2core_req_ack_i}]
+set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {imem2core_rdata_i[*]}]
+set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {imem2core_resp_i[*]}]
+
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {imem2core_req_ack_i}]
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {imem2core_rdata_i[*]}]
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {imem2core_resp_i[*]}]
+
+#DMEM Constraints
+set_output_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_cmd_o}]
+set_output_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_req_o}]
+set_output_delay -max 2.5000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_addr_o[*]}]
+set_output_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_wdata_o[*]}]
+set_output_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_width_o[*]}]
+
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_cmd_o}]
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_req_o}]
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_addr_o[*]}]
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_wdata_o[*]}]
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_width_o[*]}]
+
+set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {dmem2core_req_ack_i}]
+set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {dmem2core_rdata_i[*]}]
+set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {dmem2core_resp_i[*]}]
+
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {dmem2core_req_ack_i}]
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {dmem2core_rdata_i[*]}]
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {dmem2core_resp_i[*]}]
+
+###############################################################################
+# Environment
+###############################################################################
+set_driving_cell -lib_cell sky130_fd_sc_hd__inv_8 -pin {Y} [all_inputs]
+set cap_load 0.0334
+puts "\[INFO\]: Setting load to: $cap_load"
+set_load  $cap_load [all_outputs]
+
+###############################################################################
+# Design Rules
+###############################################################################
diff --git a/openlane/ycr_core_top/config.tcl b/openlane/ycr_core_top/config.tcl
new file mode 100644
index 0000000..8d0c0bd
--- /dev/null
+++ b/openlane/ycr_core_top/config.tcl
@@ -0,0 +1,96 @@
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+
+set script_dir [file dirname [file normalize [info script]]]
+
+set ::env(ROUTING_CORES) "6"
+
+set ::env(DESIGN_NAME) ycr_core_top
+set ::env(DESIGN_IS_CORE) "0"
+set ::env(FP_PDN_CORE_RING) "0"
+
+set ::env(CLOCK_PERIOD) "10"
+set ::env(CLOCK_PORT) "clk"
+
+set ::env(SYNTH_MAX_FANOUT) 4
+
+## CTS BUFFER
+set ::env(CTS_CLK_BUFFER_LIST) "sky130_fd_sc_hd__clkbuf_4 sky130_fd_sc_hd__clkbuf_8"
+set ::env(CTS_SINK_CLUSTERING_SIZE) "16"
+set ::env(CLOCK_BUFFER_FANOUT) "8"
+set ::env(LEC_ENABLE) 0
+
+set ::env(VERILOG_FILES) "\
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr_pipe_top.sv           \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/ycr_core_top.sv                    \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/ycr_dm.sv                          \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/ycr_tapc_synchronizer.sv           \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/ycr_clk_ctrl.sv                    \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/ycr_scu.sv                         \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/ycr_tapc.sv                        \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/ycr_tapc_shift_reg.sv              \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/ycr_dmi.sv                         \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/primitives/ycr_reset_cells.sv      \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr_pipe_ifu.sv           \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr_pipe_idu.sv           \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr_pipe_exu.sv           \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr_pipe_mprf.sv          \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr_pipe_csr.sv           \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr_pipe_ialu.sv          \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr_pipe_mul.sv           \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr_pipe_div.sv           \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr_pipe_lsu.sv           \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr_pipe_hdu.sv           \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr_pipe_tdu.sv           \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/pipeline/ycr_ipic.sv               \
+        $script_dir/../../verilog/rtl/yifive/ycr1c/src/top/ycr_req_retiming.sv               \
+        $script_dir/../../verilog/rtl/yifive/ycr1c/src/lib/sync_fifo2.sv                     \
+	"
+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 ]
+
+
+set ::env(SDC_FILE) "$script_dir/base.sdc"
+set ::env(BASE_SDC_FILE) "$script_dir/base.sdc"
+
+set ::env(LEC_ENABLE) 0
+
+set ::env(VDD_PIN) [list {vccd1}]
+set ::env(GND_PIN) [list {vssd1}]
+
+## Floorplan
+set ::env(FP_PIN_ORDER_CFG) $script_dir/pin_order.cfg
+set ::env(FP_SIZING) absolute
+set ::env(DIE_AREA) "0 0 540 950 "
+
+set ::env(MACRO_PLACEMENT_CFG) $script_dir/macro_placement.cfg
+set ::env(PL_TARGET_DENSITY) 0.43
+set ::env(CELL_PAD) "4"
+
+#set ::env(GLB_RT_MAXLAYER) 5
+set ::env(RT_MAX_LAYER) {met4}
+set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10
+set ::env(DIODE_INSERTION_STRATEGY) 3
+
+
+set ::env(QUIT_ON_TIMING_VIOLATIONS) "0"
+set ::env(QUIT_ON_MAGIC_DRC) "1"
+set ::env(QUIT_ON_LVS_ERROR) "0"
+set ::env(QUIT_ON_SLEW_VIOLATIONS) "0"
+
+#Need to cross-check why global timing opimization creating setup vio with hugh hold fix
+set ::env(GLB_RESIZER_TIMING_OPTIMIZATIONS) "0"
+
diff --git a/openlane/ycr_core_top/macro_placement.cfg b/openlane/ycr_core_top/macro_placement.cfg
new file mode 100644
index 0000000..8ec6301
--- /dev/null
+++ b/openlane/ycr_core_top/macro_placement.cfg
@@ -0,0 +1,2 @@
+u_icache.u_cmem_2kb  285.000 291.000 FS
+u_dcache.u_cmem_2kb 1185.000 291.000 N
diff --git a/openlane/ycr_core_top/pin_order.cfg b/openlane/ycr_core_top/pin_order.cfg
new file mode 100644
index 0000000..79b2c6f
--- /dev/null
+++ b/openlane/ycr_core_top/pin_order.cfg
@@ -0,0 +1,327 @@
+#BUS_SORT
+#MANUAL_PLACE
+#E
+core_uid\[1\]              0200 00 2
+core_uid\[0\]   
+imem2core_req_ack_i
+core2imem_req_o
+core2imem_cmd_o
+core2imem_addr_o\[31\]
+core2imem_addr_o\[30\]
+core2imem_addr_o\[29\]
+core2imem_addr_o\[28\]
+core2imem_addr_o\[27\]
+core2imem_addr_o\[26\]
+core2imem_addr_o\[25\]
+core2imem_addr_o\[24\]
+core2imem_addr_o\[23\]
+core2imem_addr_o\[22\]
+core2imem_addr_o\[21\]
+core2imem_addr_o\[20\]
+core2imem_addr_o\[19\]
+core2imem_addr_o\[18\]
+core2imem_addr_o\[17\]
+core2imem_addr_o\[16\]
+core2imem_addr_o\[15\]
+core2imem_addr_o\[14\]
+core2imem_addr_o\[13\]
+core2imem_addr_o\[12\]
+core2imem_addr_o\[11\]
+core2imem_addr_o\[10\]
+core2imem_addr_o\[9\]
+core2imem_addr_o\[8\]
+core2imem_addr_o\[7\]
+core2imem_addr_o\[6\]
+core2imem_addr_o\[5\]
+core2imem_addr_o\[4\]
+core2imem_addr_o\[3\]
+core2imem_addr_o\[2\]
+core2imem_addr_o\[1\]
+core2imem_addr_o\[0\]
+core2imem_bl_o\[2\]
+core2imem_bl_o\[1\]
+core2imem_bl_o\[0\]
+imem2core_rdata_i\[31\]
+imem2core_rdata_i\[30\]
+imem2core_rdata_i\[29\]
+imem2core_rdata_i\[28\]
+imem2core_rdata_i\[27\]
+imem2core_rdata_i\[26\]
+imem2core_rdata_i\[25\]
+imem2core_rdata_i\[24\]
+imem2core_rdata_i\[23\]
+imem2core_rdata_i\[22\]
+imem2core_rdata_i\[21\]
+imem2core_rdata_i\[20\]
+imem2core_rdata_i\[19\]
+imem2core_rdata_i\[18\]
+imem2core_rdata_i\[17\]
+imem2core_rdata_i\[16\]
+imem2core_rdata_i\[15\]
+imem2core_rdata_i\[14\]
+imem2core_rdata_i\[13\]
+imem2core_rdata_i\[12\]
+imem2core_rdata_i\[11\]
+imem2core_rdata_i\[10\]
+imem2core_rdata_i\[9\]
+imem2core_rdata_i\[8\]
+imem2core_rdata_i\[7\]
+imem2core_rdata_i\[6\]
+imem2core_rdata_i\[5\]
+imem2core_rdata_i\[4\]
+imem2core_rdata_i\[3\]
+imem2core_rdata_i\[2\]
+imem2core_rdata_i\[1\]
+imem2core_rdata_i\[0\]
+imem2core_resp_i\[1\]
+imem2core_resp_i\[0\]
+
+dmem2core_req_ack_i           0350 0 2
+core2dmem_req_o
+core2dmem_cmd_o
+core2dmem_width_o\[1\]
+core2dmem_width_o\[0\]
+core2dmem_addr_o\[31\]
+core2dmem_addr_o\[30\]
+core2dmem_addr_o\[29\]
+core2dmem_addr_o\[28\]
+core2dmem_addr_o\[27\]
+core2dmem_addr_o\[26\]
+core2dmem_addr_o\[25\]
+core2dmem_addr_o\[24\]
+core2dmem_addr_o\[23\]
+core2dmem_addr_o\[22\]
+core2dmem_addr_o\[21\]
+core2dmem_addr_o\[20\]
+core2dmem_addr_o\[19\]
+core2dmem_addr_o\[18\]
+core2dmem_addr_o\[17\]
+core2dmem_addr_o\[16\]
+core2dmem_addr_o\[15\]
+core2dmem_addr_o\[14\]
+core2dmem_addr_o\[13\]
+core2dmem_addr_o\[12\]
+core2dmem_addr_o\[11\]
+core2dmem_addr_o\[10\]
+core2dmem_addr_o\[9\]
+core2dmem_addr_o\[8\]
+core2dmem_addr_o\[7\]
+core2dmem_addr_o\[6\]
+core2dmem_addr_o\[5\]
+core2dmem_addr_o\[4\]
+core2dmem_addr_o\[3\]
+core2dmem_addr_o\[2\]
+core2dmem_addr_o\[1\]
+core2dmem_addr_o\[0\]
+core2dmem_wdata_o\[31\]
+core2dmem_wdata_o\[30\]
+core2dmem_wdata_o\[29\]
+core2dmem_wdata_o\[28\]
+core2dmem_wdata_o\[27\]
+core2dmem_wdata_o\[26\]
+core2dmem_wdata_o\[25\]
+core2dmem_wdata_o\[24\]
+core2dmem_wdata_o\[23\]
+core2dmem_wdata_o\[22\]
+core2dmem_wdata_o\[21\]
+core2dmem_wdata_o\[20\]
+core2dmem_wdata_o\[19\]
+core2dmem_wdata_o\[18\]
+core2dmem_wdata_o\[17\]
+core2dmem_wdata_o\[16\]
+core2dmem_wdata_o\[15\]
+core2dmem_wdata_o\[14\]
+core2dmem_wdata_o\[13\]
+core2dmem_wdata_o\[12\]
+core2dmem_wdata_o\[11\]
+core2dmem_wdata_o\[10\]
+core2dmem_wdata_o\[9\]
+core2dmem_wdata_o\[8\]
+core2dmem_wdata_o\[7\]
+core2dmem_wdata_o\[6\]
+core2dmem_wdata_o\[5\]
+core2dmem_wdata_o\[4\]
+core2dmem_wdata_o\[3\]
+core2dmem_wdata_o\[2\]
+core2dmem_wdata_o\[1\]
+core2dmem_wdata_o\[0\]
+dmem2core_rdata_i\[31\]
+dmem2core_rdata_i\[30\]
+dmem2core_rdata_i\[29\]
+dmem2core_rdata_i\[28\]
+dmem2core_rdata_i\[27\]
+dmem2core_rdata_i\[26\]
+dmem2core_rdata_i\[25\]
+dmem2core_rdata_i\[24\]
+dmem2core_rdata_i\[23\]
+dmem2core_rdata_i\[22\]
+dmem2core_rdata_i\[21\]
+dmem2core_rdata_i\[20\]
+dmem2core_rdata_i\[19\]
+dmem2core_rdata_i\[18\]
+dmem2core_rdata_i\[17\]
+dmem2core_rdata_i\[16\]
+dmem2core_rdata_i\[15\]
+dmem2core_rdata_i\[14\]
+dmem2core_rdata_i\[13\]
+dmem2core_rdata_i\[12\]
+dmem2core_rdata_i\[11\]
+dmem2core_rdata_i\[10\]
+dmem2core_rdata_i\[9\]
+dmem2core_rdata_i\[8\]
+dmem2core_rdata_i\[7\]
+dmem2core_rdata_i\[6\]
+dmem2core_rdata_i\[5\]
+dmem2core_rdata_i\[4\]
+dmem2core_rdata_i\[3\]
+dmem2core_rdata_i\[2\]
+dmem2core_rdata_i\[1\]
+dmem2core_rdata_i\[0\]
+dmem2core_resp_i\[1\]
+dmem2core_resp_i\[0\]
+
+core_debug\[48\]         0500 0 2
+core_debug\[47\]
+core_debug\[46\]
+core_debug\[45\]
+core_debug\[44\]
+core_debug\[43\]
+core_debug\[42\]
+core_debug\[41\]
+core_debug\[40\]
+core_debug\[39\]
+core_debug\[38\]
+core_debug\[37\]
+core_debug\[36\]
+core_debug\[35\]
+core_debug\[34\]
+core_debug\[33\]
+core_debug\[32\]
+core_debug\[31\]
+core_debug\[30\]
+core_debug\[29\]
+core_debug\[28\]
+core_debug\[27\]
+core_debug\[26\]
+core_debug\[25\]
+core_debug\[24\]
+core_debug\[23\]
+core_debug\[22\]
+core_debug\[21\]
+core_debug\[20\]
+core_debug\[19\]
+core_debug\[18\]
+core_debug\[17\]
+core_debug\[16\]
+core_debug\[15\]
+core_debug\[14\]
+core_debug\[13\]
+core_debug\[12\]
+core_debug\[11\]
+core_debug\[10\]
+core_debug\[9\]
+core_debug\[8\]
+core_debug\[7\]
+core_debug\[6\]
+core_debug\[5\]
+core_debug\[4\]
+core_debug\[3\]
+core_debug\[2\]
+core_debug\[1\]
+core_debug\[0\]
+
+core_irq_mtimer_i            0600 0 2
+core_mtimer_val_i\[63\]
+core_mtimer_val_i\[62\]
+core_mtimer_val_i\[61\]
+core_mtimer_val_i\[60\]
+core_mtimer_val_i\[59\]
+core_mtimer_val_i\[58\]
+core_mtimer_val_i\[57\]
+core_mtimer_val_i\[56\]
+core_mtimer_val_i\[55\]
+core_mtimer_val_i\[54\]
+core_mtimer_val_i\[53\]
+core_mtimer_val_i\[52\]
+core_mtimer_val_i\[51\]
+core_mtimer_val_i\[50\]
+core_mtimer_val_i\[49\]
+core_mtimer_val_i\[48\]
+core_mtimer_val_i\[47\]
+core_mtimer_val_i\[46\]
+core_mtimer_val_i\[45\]
+core_mtimer_val_i\[44\]
+core_mtimer_val_i\[43\]
+core_mtimer_val_i\[42\]
+core_mtimer_val_i\[41\]
+core_mtimer_val_i\[40\]
+core_mtimer_val_i\[39\]
+core_mtimer_val_i\[38\]
+core_mtimer_val_i\[37\]
+core_mtimer_val_i\[36\]
+core_mtimer_val_i\[35\]
+core_mtimer_val_i\[34\]
+core_mtimer_val_i\[33\]
+core_mtimer_val_i\[32\]
+core_mtimer_val_i\[31\]
+core_mtimer_val_i\[30\]
+core_mtimer_val_i\[29\]
+core_mtimer_val_i\[28\]
+core_mtimer_val_i\[27\]
+core_mtimer_val_i\[26\]
+core_mtimer_val_i\[25\]
+core_mtimer_val_i\[24\]
+core_mtimer_val_i\[23\]
+core_mtimer_val_i\[22\]
+core_mtimer_val_i\[21\]
+core_mtimer_val_i\[20\]
+core_mtimer_val_i\[19\]
+core_mtimer_val_i\[18\]
+core_mtimer_val_i\[17\]
+core_mtimer_val_i\[16\]
+core_mtimer_val_i\[15\]
+core_mtimer_val_i\[14\]
+core_mtimer_val_i\[13\]
+core_mtimer_val_i\[12\]
+core_mtimer_val_i\[11\]
+core_mtimer_val_i\[10\]
+core_mtimer_val_i\[9\]
+core_mtimer_val_i\[8\]
+core_mtimer_val_i\[7\]
+core_mtimer_val_i\[6\]
+core_mtimer_val_i\[5\]
+core_mtimer_val_i\[4\]
+core_mtimer_val_i\[3\]
+core_mtimer_val_i\[2\]
+core_mtimer_val_i\[1\]
+core_mtimer_val_i\[0\]
+
+core_irq_lines_i\[15\]
+core_irq_lines_i\[14\]
+core_irq_lines_i\[13\]
+core_irq_lines_i\[12\]
+core_irq_lines_i\[11\]
+core_irq_lines_i\[10\]
+core_irq_lines_i\[9\]
+core_irq_lines_i\[8\]
+core_irq_lines_i\[7\]
+core_irq_lines_i\[6\]
+core_irq_lines_i\[5\]
+core_irq_lines_i\[4\]
+core_irq_lines_i\[3\]
+core_irq_lines_i\[2\]
+core_irq_lines_i\[1\]
+core_irq_lines_i\[0\]
+core_irq_soft_i
+cpu_rst_n
+
+#S
+pwrup_rst_n       
+rst_n
+
+
+
+clk
+clk_o
+core_rst_n_o
+core_rdc_qlfy_o
diff --git a/openlane/ycr_iconnect/base.sdc b/openlane/ycr_iconnect/base.sdc
new file mode 100644
index 0000000..a8461ed
--- /dev/null
+++ b/openlane/ycr_iconnect/base.sdc
@@ -0,0 +1,97 @@
+###############################################################################
+# Timing Constraints
+###############################################################################
+create_clock -name core_clk -period 8.0000 [get_ports {core_clk}]
+
+set_clock_transition 0.1500 [all_clocks]
+set_clock_uncertainty -setup 0.2500 [all_clocks]
+set_clock_uncertainty -hold 0.2500 [all_clocks]
+
+set ::env(SYNTH_TIMING_DERATE) 0.05
+puts "\[INFO\]: Setting timing derate to: [expr {$::env(SYNTH_TIMING_DERATE) * 10}] %"
+set_timing_derate -early [expr {1-$::env(SYNTH_TIMING_DERATE)}]
+set_timing_derate -late [expr {1+$::env(SYNTH_TIMING_DERATE)}]
+
+#CORE-0 IMEM Constraints
+set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_cmd}]
+set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_req}]
+set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_addr[*]}]
+set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_bl[*]}]
+
+set_input_delay -min 2.0000  -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_cmd}]
+set_input_delay -min 2.0000  -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_req}]
+set_input_delay -min 2.0000  -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_addr[*]}]
+set_input_delay -min 2.0000  -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_bl[*]}]
+
+set_output_delay -max 4.5000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_req_ack}]
+set_output_delay -max 4.5000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_rdata[*]}]
+
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_req_ack}]
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_rdata[*]}]
+
+#CORE-0 DMEM Constraints
+set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_cmd}]
+set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_req}]
+set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_addr[*]}]
+set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_wdata[*]}]
+set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_width[*]}]
+
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_cmd}]
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_req}]
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_addr[*]}]
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_wdata[*]}]
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_width[*]}]
+
+set_output_delay -max 4.5000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_req_ack}]
+set_output_delay -max 4.5000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_rdata[*]}]
+
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_req_ack}]
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_rdata[*]}]
+
+#CORE-1 IMEM Constraints
+set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_cmd}]
+set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_req}]
+set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_addr[*]}]
+set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_bl[*]}]
+
+set_input_delay -min 2.0000  -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_cmd}]
+set_input_delay -min 2.0000  -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_req}]
+set_input_delay -min 2.0000  -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_addr[*]}]
+set_input_delay -min 2.0000  -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_bl[*]}]
+
+set_output_delay -max 4.5000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_req_ack}]
+set_output_delay -max 4.5000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_rdata[*]}]
+
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_req_ack}]
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_rdata[*]}]
+
+#CORE-1 DMEM Constraints
+set_input_delay  -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_cmd}]
+set_input_delay  -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_req}]
+set_input_delay  -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_addr[*]}]
+set_input_delay  -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_wdata[*]}]
+set_input_delay  -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_width[*]}]
+
+set_input_delay  -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_cmd}]
+set_input_delay  -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_req}]
+set_input_delay  -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_addr[*]}]
+set_input_delay  -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_wdata[*]}]
+set_input_delay  -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_width[*]}]
+
+set_output_delay -max 4.5000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_req_ack}]
+set_output_delay -max 4.5000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_rdata[*]}]
+
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_req_ack}]
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_rdata[*]}]
+
+###############################################################################
+# Environment
+###############################################################################
+set_driving_cell -lib_cell sky130_fd_sc_hd__inv_8 -pin {Y} [all_inputs]
+set cap_load 0.0334
+puts "\[INFO\]: Setting load to: $cap_load"
+set_load  $cap_load [all_outputs]
+
+###############################################################################
+# Design Rules
+###############################################################################
diff --git a/openlane/ycr_iconnect/config.tcl b/openlane/ycr_iconnect/config.tcl
new file mode 100644
index 0000000..45f429b
--- /dev/null
+++ b/openlane/ycr_iconnect/config.tcl
@@ -0,0 +1,100 @@
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+
+set script_dir [file dirname [file normalize [info script]]]
+
+set ::env(ROUTING_CORES) "6"
+
+set ::env(DESIGN_NAME) ycr_iconnect
+set ::env(DESIGN_IS_CORE) "0"
+set ::env(FP_PDN_CORE_RING) "0"
+
+# Timing configuration
+set ::env(CLOCK_PERIOD) "10"
+set ::env(CLOCK_PORT) "core_clk rtc_clk"
+
+set ::env(SYNTH_MAX_FANOUT) 4
+
+## CTS BUFFER
+set ::env(CTS_CLK_BUFFER_LIST) "sky130_fd_sc_hd__clkbuf_4 sky130_fd_sc_hd__clkbuf_8"
+set ::env(CTS_SINK_CLUSTERING_SIZE) "16"
+set ::env(CLOCK_BUFFER_FANOUT) "8"
+set ::env(LEC_ENABLE) 0
+
+set ::env(VERILOG_FILES) "\
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/top/ycr_iconnect.sv                  \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/top/ycr_cross_bar.sv                 \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/top/ycr_router.sv                    \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/top/ycr_dmem_router.sv                \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/top/ycr_sram_mux.sv                   \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/top/ycr_tcm.sv                        \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/top/ycr_timer.sv                      \
+        $script_dir/../../verilog/rtl/yifive/ycr1c/src/top/ycr_req_retiming.sv               \
+        $script_dir/../../verilog/rtl/yifive/ycr1c/src/lib/ycr_arb.sv                        \
+        $script_dir/../../verilog/rtl/yifive/ycr1c/src/lib/ctech_cells.sv                    \
+        $script_dir/../../verilog/rtl/yifive/ycr1c/src/lib/sync_fifo2.sv                     \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/primitives/ycr_reset_cells.sv    \
+	"
+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 ]
+
+
+set ::env(SDC_FILE) "$script_dir/base.sdc"
+set ::env(BASE_SDC_FILE) "$script_dir/base.sdc"
+
+set ::env(LEC_ENABLE) 0
+
+## Floorplan
+set ::env(FP_PIN_ORDER_CFG) $script_dir/pin_order.cfg
+set ::env(FP_SIZING) absolute
+set ::env(DIE_AREA) "0 0 380 1100"
+
+#set ::env(PDN_CFG) $script_dir/pdn_cfg.tcl
+#set ::env(MACRO_PLACEMENT_CFG) $script_dir/macro_placement.cfg
+set ::env(PL_TARGET_DENSITY) 0.20
+set ::env(CELL_PAD) "14"
+
+#set ::env(PL_ROUTABILITY_DRIVEN) "1"
+set ::env(PL_TIME_DRIVEN) "1"
+
+### PDN
+#set ::env(FP_PDN_CHECK_NODES) "0"
+#set ::env(FP_PDN_HORIZONTAL_HALO) "10"
+#set ::env(FP_PDN_VERTICAL_HALO) "10"
+#
+#set ::env(FP_PDN_VOFFSET) "5"
+#set ::env(FP_PDN_VPITCH) "80"
+#set ::env(FP_PDN_VSPACING) "15.5"
+#set ::env(FP_PDN_VWIDTH) "3.1"
+#
+#set ::env(FP_PDN_HOFFSET) "10"
+#set ::env(FP_PDN_HPITCH) "100"
+#set ::env(FP_PDN_HSPACING) "10"
+#set ::env(FP_PDN_HWIDTH) "3.1"
+
+
+#set ::env(GLB_RT_MAXLAYER) 5
+set ::env(RT_MAX_LAYER) {met4}
+set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 20
+set ::env(DIODE_INSERTION_STRATEGY) 3
+
+
+set ::env(QUIT_ON_TIMING_VIOLATIONS) "0"
+set ::env(QUIT_ON_MAGIC_DRC) "1"
+set ::env(QUIT_ON_LVS_ERROR) "0"
+set ::env(QUIT_ON_SLEW_VIOLATIONS) "0"
+
+
diff --git a/openlane/ycr_iconnect/drc_exclude.cells b/openlane/ycr_iconnect/drc_exclude.cells
new file mode 100644
index 0000000..0ecc9c0
--- /dev/null
+++ b/openlane/ycr_iconnect/drc_exclude.cells
@@ -0,0 +1,55 @@
+sky130_fd_sc_hd__a2111oi_0
+sky130_fd_sc_hd__a21boi_0
+sky130_fd_sc_hd__and2_0
+sky130_fd_sc_hd__buf_16
+sky130_fd_sc_hd__clkdlybuf4s15_1
+sky130_fd_sc_hd__clkdlybuf4s18_1
+sky130_fd_sc_hd__clkdlybuf4s25_1
+sky130_fd_sc_hd__clkdlybuf4s50_1
+sky130_fd_sc_hd__fa_4
+sky130_fd_sc_hd__lpflow_bleeder_1
+sky130_fd_sc_hd__lpflow_clkbufkapwr_1
+sky130_fd_sc_hd__lpflow_clkbufkapwr_16
+sky130_fd_sc_hd__lpflow_clkbufkapwr_2
+sky130_fd_sc_hd__lpflow_clkbufkapwr_4
+sky130_fd_sc_hd__lpflow_clkbufkapwr_8
+sky130_fd_sc_hd__lpflow_clkinvkapwr_1
+sky130_fd_sc_hd__lpflow_clkinvkapwr_16
+sky130_fd_sc_hd__lpflow_clkinvkapwr_2
+sky130_fd_sc_hd__lpflow_clkinvkapwr_4
+sky130_fd_sc_hd__lpflow_clkinvkapwr_8
+sky130_fd_sc_hd__lpflow_decapkapwr_12
+sky130_fd_sc_hd__lpflow_decapkapwr_3
+sky130_fd_sc_hd__lpflow_decapkapwr_4
+sky130_fd_sc_hd__lpflow_decapkapwr_6
+sky130_fd_sc_hd__lpflow_decapkapwr_8
+sky130_fd_sc_hd__lpflow_inputiso0n_1
+sky130_fd_sc_hd__lpflow_inputiso0p_1
+sky130_fd_sc_hd__lpflow_inputiso1n_1
+sky130_fd_sc_hd__lpflow_inputiso1p_1
+sky130_fd_sc_hd__lpflow_inputisolatch_1
+sky130_fd_sc_hd__lpflow_isobufsrc_1
+sky130_fd_sc_hd__lpflow_isobufsrc_16
+sky130_fd_sc_hd__lpflow_isobufsrc_2
+sky130_fd_sc_hd__lpflow_isobufsrc_4
+sky130_fd_sc_hd__lpflow_isobufsrc_8
+sky130_fd_sc_hd__lpflow_isobufsrckapwr_16
+sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1
+sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2
+sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4
+sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4
+sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1
+sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2
+sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4
+sky130_fd_sc_hd__mux4_4
+sky130_fd_sc_hd__o21ai_0
+sky130_fd_sc_hd__o311ai_0
+sky130_fd_sc_hd__or2_0
+sky130_fd_sc_hd__probe_p_8
+sky130_fd_sc_hd__probec_p_8
+sky130_fd_sc_hd__xor3_1
+sky130_fd_sc_hd__xor3_2
+sky130_fd_sc_hd__xor3_4
+sky130_fd_sc_hd__xnor3_1
+sky130_fd_sc_hd__xnor3_2
+sky130_fd_sc_hd__xnor3_4
\ No newline at end of file
diff --git a/openlane/ycr_iconnect/pin_order.cfg b/openlane/ycr_iconnect/pin_order.cfg
new file mode 100644
index 0000000..1c9fbd6
--- /dev/null
+++ b/openlane/ycr_iconnect/pin_order.cfg
@@ -0,0 +1,821 @@
+#BUS_SORT
+#MANUAL_PLACE
+
+#W
+sram0_clk0                  000  0   2
+sram0_csb0
+sram0_web0
+sram0_addr0\[8\]
+sram0_addr0\[7\]
+sram0_addr0\[6\]
+sram0_addr0\[5\]
+sram0_addr0\[4\]
+sram0_addr0\[3\]
+sram0_addr0\[2\]
+sram0_addr0\[1\]
+sram0_addr0\[0\]
+sram0_wmask0\[3\]
+sram0_wmask0\[2\]
+sram0_wmask0\[1\]
+sram0_wmask0\[0\]
+sram0_din0\[31\]
+sram0_din0\[30\]
+sram0_din0\[29\]
+sram0_din0\[28\]
+sram0_din0\[27\]
+sram0_din0\[26\]
+sram0_din0\[25\]
+sram0_din0\[24\]
+sram0_din0\[23\]
+sram0_din0\[22\]
+sram0_din0\[21\]
+sram0_din0\[20\]
+sram0_din0\[19\]
+sram0_din0\[18\]
+sram0_din0\[17\]
+sram0_din0\[16\]
+sram0_din0\[15\]
+sram0_din0\[14\]
+sram0_din0\[13\]
+sram0_din0\[12\]
+sram0_din0\[11\]
+sram0_din0\[10\]
+sram0_din0\[9\]
+sram0_din0\[8\]
+sram0_din0\[7\]
+sram0_din0\[6\]
+sram0_din0\[5\]
+sram0_din0\[4\]
+sram0_din0\[3\]
+sram0_din0\[2\]
+sram0_din0\[1\]
+sram0_din0\[0\]
+sram0_dout0\[31\]
+sram0_dout0\[30\]
+sram0_dout0\[29\]
+sram0_dout0\[28\]
+sram0_dout0\[27\]
+sram0_dout0\[26\]
+sram0_dout0\[25\]
+sram0_dout0\[24\]
+sram0_dout0\[23\]
+sram0_dout0\[22\]
+sram0_dout0\[21\]
+sram0_dout0\[20\]
+sram0_dout0\[19\]
+sram0_dout0\[18\]
+sram0_dout0\[17\]
+sram0_dout0\[16\]
+sram0_dout0\[15\]
+sram0_dout0\[14\]
+sram0_dout0\[13\]
+sram0_dout0\[12\]
+sram0_dout0\[11\]
+sram0_dout0\[10\]
+sram0_dout0\[9\]
+sram0_dout0\[8\]
+sram0_dout0\[7\]
+sram0_dout0\[6\]
+sram0_dout0\[5\]
+sram0_dout0\[4\]
+sram0_dout0\[3\]
+sram0_dout0\[2\]
+sram0_dout0\[1\]
+sram0_dout0\[0\]
+
+
+sram0_clk1               110  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\[31\]
+sram0_dout1\[30\]
+sram0_dout1\[29\]
+sram0_dout1\[28\]
+sram0_dout1\[27\]
+sram0_dout1\[26\]
+sram0_dout1\[25\]
+sram0_dout1\[24\]
+sram0_dout1\[23\]
+sram0_dout1\[22\]
+sram0_dout1\[21\]
+sram0_dout1\[20\]
+sram0_dout1\[19\]
+sram0_dout1\[18\]
+sram0_dout1\[17\]
+sram0_dout1\[16\]
+sram0_dout1\[15\]
+sram0_dout1\[14\]
+sram0_dout1\[13\]
+sram0_dout1\[12\]
+sram0_dout1\[11\]
+sram0_dout1\[10\]
+sram0_dout1\[9\]
+sram0_dout1\[8\]
+sram0_dout1\[7\]
+sram0_dout1\[6\]
+sram0_dout1\[5\]
+sram0_dout1\[4\]
+sram0_dout1\[3\]
+sram0_dout1\[2\]
+sram0_dout1\[1\]
+sram0_dout1\[0\]
+
+core0_uid\[1\]   0200 00 2
+core0_uid\[0\]   
+core0_imem_req_ack
+core0_imem_req
+core0_imem_cmd
+core0_imem_addr\[31\]
+core0_imem_addr\[30\]
+core0_imem_addr\[29\]
+core0_imem_addr\[28\]
+core0_imem_addr\[27\]
+core0_imem_addr\[26\]
+core0_imem_addr\[25\]
+core0_imem_addr\[24\]
+core0_imem_addr\[23\]
+core0_imem_addr\[22\]
+core0_imem_addr\[21\]
+core0_imem_addr\[20\]
+core0_imem_addr\[19\]
+core0_imem_addr\[18\]
+core0_imem_addr\[17\]
+core0_imem_addr\[16\]
+core0_imem_addr\[15\]
+core0_imem_addr\[14\]
+core0_imem_addr\[13\]
+core0_imem_addr\[12\]
+core0_imem_addr\[11\]
+core0_imem_addr\[10\]
+core0_imem_addr\[9\]
+core0_imem_addr\[8\]
+core0_imem_addr\[7\]
+core0_imem_addr\[6\]
+core0_imem_addr\[5\]
+core0_imem_addr\[4\]
+core0_imem_addr\[3\]
+core0_imem_addr\[2\]
+core0_imem_addr\[1\]
+core0_imem_addr\[0\]
+core0_imem_bl\[2\]
+core0_imem_bl\[1\]
+core0_imem_bl\[0\]
+core0_imem_rdata\[31\]
+core0_imem_rdata\[30\]
+core0_imem_rdata\[29\]
+core0_imem_rdata\[28\]
+core0_imem_rdata\[27\]
+core0_imem_rdata\[26\]
+core0_imem_rdata\[25\]
+core0_imem_rdata\[24\]
+core0_imem_rdata\[23\]
+core0_imem_rdata\[22\]
+core0_imem_rdata\[21\]
+core0_imem_rdata\[20\]
+core0_imem_rdata\[19\]
+core0_imem_rdata\[18\]
+core0_imem_rdata\[17\]
+core0_imem_rdata\[16\]
+core0_imem_rdata\[15\]
+core0_imem_rdata\[14\]
+core0_imem_rdata\[13\]
+core0_imem_rdata\[12\]
+core0_imem_rdata\[11\]
+core0_imem_rdata\[10\]
+core0_imem_rdata\[9\]
+core0_imem_rdata\[8\]
+core0_imem_rdata\[7\]
+core0_imem_rdata\[6\]
+core0_imem_rdata\[5\]
+core0_imem_rdata\[4\]
+core0_imem_rdata\[3\]
+core0_imem_rdata\[2\]
+core0_imem_rdata\[1\]
+core0_imem_rdata\[0\]
+core0_imem_resp\[1\]
+core0_imem_resp\[0\]
+
+core0_dmem_req_ack   0350 0 2
+core0_dmem_req
+core0_dmem_cmd
+core0_dmem_width\[1\]
+core0_dmem_width\[0\]
+core0_dmem_addr\[31\]
+core0_dmem_addr\[30\]
+core0_dmem_addr\[29\]
+core0_dmem_addr\[28\]
+core0_dmem_addr\[27\]
+core0_dmem_addr\[26\]
+core0_dmem_addr\[25\]
+core0_dmem_addr\[24\]
+core0_dmem_addr\[23\]
+core0_dmem_addr\[22\]
+core0_dmem_addr\[21\]
+core0_dmem_addr\[20\]
+core0_dmem_addr\[19\]
+core0_dmem_addr\[18\]
+core0_dmem_addr\[17\]
+core0_dmem_addr\[16\]
+core0_dmem_addr\[15\]
+core0_dmem_addr\[14\]
+core0_dmem_addr\[13\]
+core0_dmem_addr\[12\]
+core0_dmem_addr\[11\]
+core0_dmem_addr\[10\]
+core0_dmem_addr\[9\]
+core0_dmem_addr\[8\]
+core0_dmem_addr\[7\]
+core0_dmem_addr\[6\]
+core0_dmem_addr\[5\]
+core0_dmem_addr\[4\]
+core0_dmem_addr\[3\]
+core0_dmem_addr\[2\]
+core0_dmem_addr\[1\]
+core0_dmem_addr\[0\]
+core0_dmem_wdata\[31\]
+core0_dmem_wdata\[30\]
+core0_dmem_wdata\[29\]
+core0_dmem_wdata\[28\]
+core0_dmem_wdata\[27\]
+core0_dmem_wdata\[26\]
+core0_dmem_wdata\[25\]
+core0_dmem_wdata\[24\]
+core0_dmem_wdata\[23\]
+core0_dmem_wdata\[22\]
+core0_dmem_wdata\[21\]
+core0_dmem_wdata\[20\]
+core0_dmem_wdata\[19\]
+core0_dmem_wdata\[18\]
+core0_dmem_wdata\[17\]
+core0_dmem_wdata\[16\]
+core0_dmem_wdata\[15\]
+core0_dmem_wdata\[14\]
+core0_dmem_wdata\[13\]
+core0_dmem_wdata\[12\]
+core0_dmem_wdata\[11\]
+core0_dmem_wdata\[10\]
+core0_dmem_wdata\[9\]
+core0_dmem_wdata\[8\]
+core0_dmem_wdata\[7\]
+core0_dmem_wdata\[6\]
+core0_dmem_wdata\[5\]
+core0_dmem_wdata\[4\]
+core0_dmem_wdata\[3\]
+core0_dmem_wdata\[2\]
+core0_dmem_wdata\[1\]
+core0_dmem_wdata\[0\]
+core0_dmem_rdata\[31\]
+core0_dmem_rdata\[30\]
+core0_dmem_rdata\[29\]
+core0_dmem_rdata\[28\]
+core0_dmem_rdata\[27\]
+core0_dmem_rdata\[26\]
+core0_dmem_rdata\[25\]
+core0_dmem_rdata\[24\]
+core0_dmem_rdata\[23\]
+core0_dmem_rdata\[22\]
+core0_dmem_rdata\[21\]
+core0_dmem_rdata\[20\]
+core0_dmem_rdata\[19\]
+core0_dmem_rdata\[18\]
+core0_dmem_rdata\[17\]
+core0_dmem_rdata\[16\]
+core0_dmem_rdata\[15\]
+core0_dmem_rdata\[14\]
+core0_dmem_rdata\[13\]
+core0_dmem_rdata\[12\]
+core0_dmem_rdata\[11\]
+core0_dmem_rdata\[10\]
+core0_dmem_rdata\[9\]
+core0_dmem_rdata\[8\]
+core0_dmem_rdata\[7\]
+core0_dmem_rdata\[6\]
+core0_dmem_rdata\[5\]
+core0_dmem_rdata\[4\]
+core0_dmem_rdata\[3\]
+core0_dmem_rdata\[2\]
+core0_dmem_rdata\[1\]
+core0_dmem_rdata\[0\]
+core0_dmem_resp\[1\]
+core0_dmem_resp\[0\]
+
+core0_debug\[48\]    0500 0 2
+core0_debug\[47\]
+core0_debug\[46\]
+core0_debug\[45\]
+core0_debug\[44\]
+core0_debug\[43\]
+core0_debug\[42\]
+core0_debug\[41\]
+core0_debug\[40\]
+core0_debug\[39\]
+core0_debug\[38\]
+core0_debug\[37\]
+core0_debug\[36\]
+core0_debug\[35\]
+core0_debug\[34\]
+core0_debug\[33\]
+core0_debug\[32\]
+core0_debug\[31\]
+core0_debug\[30\]
+core0_debug\[29\]
+core0_debug\[28\]
+core0_debug\[27\]
+core0_debug\[26\]
+core0_debug\[25\]
+core0_debug\[24\]
+core0_debug\[23\]
+core0_debug\[22\]
+core0_debug\[21\]
+core0_debug\[20\]
+core0_debug\[19\]
+core0_debug\[18\]
+core0_debug\[17\]
+core0_debug\[16\]
+core0_debug\[15\]
+core0_debug\[14\]
+core0_debug\[13\]
+core0_debug\[12\]
+core0_debug\[11\]
+core0_debug\[10\]
+core0_debug\[9\]
+core0_debug\[8\]
+core0_debug\[7\]
+core0_debug\[6\]
+core0_debug\[5\]
+core0_debug\[4\]
+core0_debug\[3\]
+core0_debug\[2\]
+core0_debug\[1\]
+core0_debug\[0\]
+
+core0_timer_irq        0600 0 2
+core0_timer_val\[63\]
+core0_timer_val\[62\]
+core0_timer_val\[61\]
+core0_timer_val\[60\]
+core0_timer_val\[59\]
+core0_timer_val\[58\]
+core0_timer_val\[57\]
+core0_timer_val\[56\]
+core0_timer_val\[55\]
+core0_timer_val\[54\]
+core0_timer_val\[53\]
+core0_timer_val\[52\]
+core0_timer_val\[51\]
+core0_timer_val\[50\]
+core0_timer_val\[49\]
+core0_timer_val\[48\]
+core0_timer_val\[47\]
+core0_timer_val\[46\]
+core0_timer_val\[45\]
+core0_timer_val\[44\]
+core0_timer_val\[43\]
+core0_timer_val\[42\]
+core0_timer_val\[41\]
+core0_timer_val\[40\]
+core0_timer_val\[39\]
+core0_timer_val\[38\]
+core0_timer_val\[37\]
+core0_timer_val\[36\]
+core0_timer_val\[35\]
+core0_timer_val\[34\]
+core0_timer_val\[33\]
+core0_timer_val\[32\]
+core0_timer_val\[31\]
+core0_timer_val\[30\]
+core0_timer_val\[29\]
+core0_timer_val\[28\]
+core0_timer_val\[27\]
+core0_timer_val\[26\]
+core0_timer_val\[25\]
+core0_timer_val\[24\]
+core0_timer_val\[23\]
+core0_timer_val\[22\]
+core0_timer_val\[21\]
+core0_timer_val\[20\]
+core0_timer_val\[19\]
+core0_timer_val\[18\]
+core0_timer_val\[17\]
+core0_timer_val\[16\]
+core0_timer_val\[15\]
+core0_timer_val\[14\]
+core0_timer_val\[13\]
+core0_timer_val\[12\]
+core0_timer_val\[11\]
+core0_timer_val\[10\]
+core0_timer_val\[9\]
+core0_timer_val\[8\]
+core0_timer_val\[7\]
+core0_timer_val\[6\]
+core0_timer_val\[5\]
+core0_timer_val\[4\]
+core0_timer_val\[3\]
+core0_timer_val\[2\]
+core0_timer_val\[1\]
+core0_timer_val\[0\]
+
+core0_irq_lines\[15\]
+core0_irq_lines\[14\]
+core0_irq_lines\[13\]
+core0_irq_lines\[12\]
+core0_irq_lines\[11\]
+core0_irq_lines\[10\]
+core0_irq_lines\[9\]
+core0_irq_lines\[8\]
+core0_irq_lines\[7\]
+core0_irq_lines\[6\]
+core0_irq_lines\[5\]
+core0_irq_lines\[4\]
+core0_irq_lines\[3\]
+core0_irq_lines\[2\]
+core0_irq_lines\[1\]
+core0_irq_lines\[0\]
+core0_irq_soft
+
+
+#S
+core_icache_req_ack           000 0 2
+core_icache_req
+core_icache_cmd      
+core_icache_addr\[31\]     
+core_icache_addr\[30\]     
+core_icache_addr\[29\]     
+core_icache_addr\[28\]     
+core_icache_addr\[27\]     
+core_icache_addr\[26\]     
+core_icache_addr\[25\]     
+core_icache_addr\[24\]     
+core_icache_addr\[23\]     
+core_icache_addr\[22\]     
+core_icache_addr\[21\]     
+core_icache_addr\[20\]     
+core_icache_addr\[19\]     
+core_icache_addr\[18\]     
+core_icache_addr\[17\]     
+core_icache_addr\[16\]     
+core_icache_addr\[15\]     
+core_icache_addr\[14\]     
+core_icache_addr\[13\]     
+core_icache_addr\[12\]     
+core_icache_addr\[11\]     
+core_icache_addr\[10\]     
+core_icache_addr\[9\]     
+core_icache_addr\[8\]     
+core_icache_addr\[7\]     
+core_icache_addr\[6\]     
+core_icache_addr\[5\]     
+core_icache_addr\[4\]     
+core_icache_addr\[3\]     
+core_icache_addr\[2\]     
+core_icache_addr\[1\]     
+core_icache_addr\[0\]     
+core_icache_bl\[2\]      
+core_icache_bl\[1\]      
+core_icache_bl\[0\]      
+core_icache_width\[1\]    
+core_icache_width\[0\]    
+core_icache_rdata\[31\]    
+core_icache_rdata\[30\]    
+core_icache_rdata\[29\]    
+core_icache_rdata\[28\]    
+core_icache_rdata\[27\]    
+core_icache_rdata\[26\]    
+core_icache_rdata\[25\]    
+core_icache_rdata\[24\]    
+core_icache_rdata\[23\]    
+core_icache_rdata\[22\]    
+core_icache_rdata\[21\]    
+core_icache_rdata\[20\]    
+core_icache_rdata\[19\]    
+core_icache_rdata\[18\]    
+core_icache_rdata\[17\]    
+core_icache_rdata\[16\]    
+core_icache_rdata\[15\]    
+core_icache_rdata\[14\]    
+core_icache_rdata\[13\]    
+core_icache_rdata\[12\]    
+core_icache_rdata\[11\]    
+core_icache_rdata\[10\]    
+core_icache_rdata\[9\]    
+core_icache_rdata\[8\]    
+core_icache_rdata\[7\]    
+core_icache_rdata\[6\]    
+core_icache_rdata\[5\]    
+core_icache_rdata\[4\]    
+core_icache_rdata\[3\]    
+core_icache_rdata\[2\]    
+core_icache_rdata\[1\]    
+core_icache_rdata\[0\]    
+core_icache_resp\[1\]     
+core_icache_resp\[0\]     
+
+
+core_dcache_req_ack        100 0 2
+core_dcache_req      
+core_dcache_cmd      
+core_dcache_width\[1\]    
+core_dcache_width\[0\]    
+core_dcache_addr\[31\]     
+core_dcache_addr\[30\]     
+core_dcache_addr\[29\]     
+core_dcache_addr\[28\]     
+core_dcache_addr\[27\]     
+core_dcache_addr\[26\]     
+core_dcache_addr\[25\]     
+core_dcache_addr\[24\]     
+core_dcache_addr\[23\]     
+core_dcache_addr\[22\]     
+core_dcache_addr\[21\]     
+core_dcache_addr\[20\]     
+core_dcache_addr\[19\]     
+core_dcache_addr\[18\]     
+core_dcache_addr\[17\]     
+core_dcache_addr\[16\]     
+core_dcache_addr\[15\]     
+core_dcache_addr\[14\]     
+core_dcache_addr\[13\]     
+core_dcache_addr\[12\]     
+core_dcache_addr\[11\]     
+core_dcache_addr\[10\]     
+core_dcache_addr\[9\]     
+core_dcache_addr\[8\]     
+core_dcache_addr\[7\]     
+core_dcache_addr\[6\]     
+core_dcache_addr\[5\]     
+core_dcache_addr\[4\]     
+core_dcache_addr\[3\]     
+core_dcache_addr\[2\]     
+core_dcache_addr\[1\]     
+core_dcache_addr\[0\]     
+core_dcache_wdata\[31\]    
+core_dcache_wdata\[30\]    
+core_dcache_wdata\[29\]    
+core_dcache_wdata\[28\]    
+core_dcache_wdata\[27\]    
+core_dcache_wdata\[26\]    
+core_dcache_wdata\[25\]    
+core_dcache_wdata\[24\]    
+core_dcache_wdata\[23\]    
+core_dcache_wdata\[22\]    
+core_dcache_wdata\[21\]    
+core_dcache_wdata\[20\]    
+core_dcache_wdata\[19\]    
+core_dcache_wdata\[18\]    
+core_dcache_wdata\[17\]    
+core_dcache_wdata\[16\]    
+core_dcache_wdata\[15\]    
+core_dcache_wdata\[14\]    
+core_dcache_wdata\[13\]    
+core_dcache_wdata\[12\]    
+core_dcache_wdata\[11\]    
+core_dcache_wdata\[10\]    
+core_dcache_wdata\[9\]    
+core_dcache_wdata\[8\]    
+core_dcache_wdata\[7\]    
+core_dcache_wdata\[6\]    
+core_dcache_wdata\[5\]    
+core_dcache_wdata\[4\]    
+core_dcache_wdata\[3\]    
+core_dcache_wdata\[2\]    
+core_dcache_wdata\[1\]    
+core_dcache_wdata\[0\]    
+core_dcache_rdata\[31\]    
+core_dcache_rdata\[30\]    
+core_dcache_rdata\[29\]    
+core_dcache_rdata\[28\]    
+core_dcache_rdata\[27\]    
+core_dcache_rdata\[26\]    
+core_dcache_rdata\[25\]    
+core_dcache_rdata\[24\]    
+core_dcache_rdata\[23\]    
+core_dcache_rdata\[22\]    
+core_dcache_rdata\[21\]    
+core_dcache_rdata\[20\]    
+core_dcache_rdata\[19\]    
+core_dcache_rdata\[18\]    
+core_dcache_rdata\[17\]    
+core_dcache_rdata\[16\]    
+core_dcache_rdata\[15\]    
+core_dcache_rdata\[14\]    
+core_dcache_rdata\[13\]    
+core_dcache_rdata\[12\]    
+core_dcache_rdata\[11\]    
+core_dcache_rdata\[10\]    
+core_dcache_rdata\[9\]    
+core_dcache_rdata\[8\]    
+core_dcache_rdata\[7\]    
+core_dcache_rdata\[6\]    
+core_dcache_rdata\[5\]    
+core_dcache_rdata\[4\]    
+core_dcache_rdata\[3\]    
+core_dcache_rdata\[2\]    
+core_dcache_rdata\[1\]    
+core_dcache_rdata\[0\]    
+core_dcache_resp\[1\]     
+core_dcache_resp\[0\]     
+
+core_dmem_req_ack          0200 0 2
+core_dmem_req        
+core_dmem_cmd        
+core_dmem_width\[1\]      
+core_dmem_width\[0\]      
+core_dmem_addr\[31\]       
+core_dmem_addr\[30\]       
+core_dmem_addr\[29\]       
+core_dmem_addr\[28\]       
+core_dmem_addr\[27\]       
+core_dmem_addr\[26\]       
+core_dmem_addr\[25\]       
+core_dmem_addr\[24\]       
+core_dmem_addr\[23\]       
+core_dmem_addr\[22\]       
+core_dmem_addr\[21\]       
+core_dmem_addr\[20\]       
+core_dmem_addr\[19\]       
+core_dmem_addr\[18\]       
+core_dmem_addr\[17\]       
+core_dmem_addr\[16\]       
+core_dmem_addr\[15\]       
+core_dmem_addr\[14\]       
+core_dmem_addr\[13\]       
+core_dmem_addr\[12\]       
+core_dmem_addr\[11\]       
+core_dmem_addr\[10\]       
+core_dmem_addr\[9\]       
+core_dmem_addr\[8\]       
+core_dmem_addr\[7\]       
+core_dmem_addr\[6\]       
+core_dmem_addr\[5\]       
+core_dmem_addr\[4\]       
+core_dmem_addr\[3\]       
+core_dmem_addr\[2\]       
+core_dmem_addr\[1\]       
+core_dmem_addr\[0\]       
+core_dmem_wdata\[31\]      
+core_dmem_wdata\[30\]      
+core_dmem_wdata\[29\]      
+core_dmem_wdata\[28\]      
+core_dmem_wdata\[27\]      
+core_dmem_wdata\[26\]      
+core_dmem_wdata\[25\]      
+core_dmem_wdata\[24\]      
+core_dmem_wdata\[23\]      
+core_dmem_wdata\[22\]      
+core_dmem_wdata\[21\]      
+core_dmem_wdata\[20\]      
+core_dmem_wdata\[19\]      
+core_dmem_wdata\[18\]      
+core_dmem_wdata\[17\]      
+core_dmem_wdata\[16\]      
+core_dmem_wdata\[15\]      
+core_dmem_wdata\[14\]      
+core_dmem_wdata\[13\]      
+core_dmem_wdata\[12\]      
+core_dmem_wdata\[11\]      
+core_dmem_wdata\[10\]      
+core_dmem_wdata\[9\]      
+core_dmem_wdata\[8\]      
+core_dmem_wdata\[7\]      
+core_dmem_wdata\[6\]      
+core_dmem_wdata\[5\]      
+core_dmem_wdata\[4\]      
+core_dmem_wdata\[3\]      
+core_dmem_wdata\[2\]      
+core_dmem_wdata\[1\]      
+core_dmem_wdata\[0\]      
+core_dmem_rdata\[31\]      
+core_dmem_rdata\[30\]      
+core_dmem_rdata\[29\]      
+core_dmem_rdata\[28\]      
+core_dmem_rdata\[27\]      
+core_dmem_rdata\[26\]      
+core_dmem_rdata\[25\]      
+core_dmem_rdata\[24\]      
+core_dmem_rdata\[23\]      
+core_dmem_rdata\[22\]      
+core_dmem_rdata\[21\]      
+core_dmem_rdata\[20\]      
+core_dmem_rdata\[19\]      
+core_dmem_rdata\[18\]      
+core_dmem_rdata\[17\]      
+core_dmem_rdata\[16\]      
+core_dmem_rdata\[15\]      
+core_dmem_rdata\[14\]      
+core_dmem_rdata\[13\]      
+core_dmem_rdata\[12\]      
+core_dmem_rdata\[11\]      
+core_dmem_rdata\[10\]      
+core_dmem_rdata\[9\]      
+core_dmem_rdata\[8\]      
+core_dmem_rdata\[7\]      
+core_dmem_rdata\[6\]      
+core_dmem_rdata\[5\]      
+core_dmem_rdata\[4\]      
+core_dmem_rdata\[3\]      
+core_dmem_rdata\[2\]      
+core_dmem_rdata\[1\]      
+core_dmem_rdata\[0\]      
+core_dmem_resp\[1\]       
+core_dmem_resp\[0\]       
+
+cfg_dcache_force_flush
+cfg_sram_lphase\[1\]
+cfg_sram_lphase\[0\]
+
+
+riscv_debug\[63\]   300 0 2
+riscv_debug\[62\]
+riscv_debug\[61\]
+riscv_debug\[60\]
+riscv_debug\[59\]
+riscv_debug\[58\]
+riscv_debug\[57\]
+riscv_debug\[56\]
+riscv_debug\[55\]
+riscv_debug\[54\]
+riscv_debug\[53\]
+riscv_debug\[52\]
+riscv_debug\[51\]
+riscv_debug\[50\]
+riscv_debug\[49\]
+riscv_debug\[48\]
+riscv_debug\[47\]
+riscv_debug\[46\]
+riscv_debug\[45\]
+riscv_debug\[44\]
+riscv_debug\[43\]
+riscv_debug\[42\]
+riscv_debug\[41\]
+riscv_debug\[40\]
+riscv_debug\[39\]
+riscv_debug\[38\]
+riscv_debug\[37\]
+riscv_debug\[36\]
+riscv_debug\[35\]
+riscv_debug\[34\]
+riscv_debug\[33\]
+riscv_debug\[32\]
+riscv_debug\[31\]
+riscv_debug\[30\]
+riscv_debug\[29\]
+riscv_debug\[28\]
+riscv_debug\[27\]
+riscv_debug\[26\]
+riscv_debug\[25\]
+riscv_debug\[24\]
+riscv_debug\[23\]
+riscv_debug\[22\]
+riscv_debug\[21\]
+riscv_debug\[20\]
+riscv_debug\[19\]
+riscv_debug\[18\]
+riscv_debug\[17\]
+riscv_debug\[16\]
+riscv_debug\[15\]
+riscv_debug\[14\]
+riscv_debug\[13\]
+riscv_debug\[12\]
+riscv_debug\[11\]
+riscv_debug\[10\]
+riscv_debug\[9\]
+riscv_debug\[8\]
+riscv_debug\[7\]
+riscv_debug\[6\]
+riscv_debug\[5\]
+riscv_debug\[4\]
+riscv_debug\[3\]
+riscv_debug\[2\]
+riscv_debug\[1\]
+riscv_debug\[0\]
+
+core_irq_lines_i\[15\]
+core_irq_lines_i\[14\]
+core_irq_lines_i\[13\]
+core_irq_lines_i\[12\]
+core_irq_lines_i\[11\]
+core_irq_lines_i\[10\]
+core_irq_lines_i\[9\]
+core_irq_lines_i\[8\]
+core_irq_lines_i\[7\]
+core_irq_lines_i\[6\]
+core_irq_lines_i\[5\]
+core_irq_lines_i\[4\]
+core_irq_lines_i\[3\]
+core_irq_lines_i\[2\]
+core_irq_lines_i\[1\]
+core_irq_lines_i\[0\]
+core_irq_soft_i
+
+core_clk          
+rtc_clk
+pwrup_rst_n
+cpu_intf_rst_n
diff --git a/openlane/ycr_intf/base.sdc b/openlane/ycr_intf/base.sdc
new file mode 100644
index 0000000..2774794
--- /dev/null
+++ b/openlane/ycr_intf/base.sdc
@@ -0,0 +1,250 @@
+###############################################################################
+# Timing Constraints
+###############################################################################
+create_clock -name core_clk -period 10.0000 [get_ports {core_clk}]
+create_clock -name rtc_clk -period 40.0000 [get_ports {rtc_clk}]
+create_clock -name wb_clk -period 10.0000 [get_ports {wb_clk}]
+
+create_generated_clock -name dcache_mem_clk0 -add -source [get_ports {core_clk}] -master_clock [get_clocks core_clk] -divide_by 1 -comment {dcache mem clock0} [get_ports dcache_mem_clk0]
+create_generated_clock -name dcache_mem_clk1 -add -source [get_ports {core_clk}] -master_clock [get_clocks core_clk] -divide_by 1 -comment {dcache mem clock1} [get_ports dcache_mem_clk1]
+create_generated_clock -name icache_mem_clk0 -add -source [get_ports {core_clk}] -master_clock [get_clocks core_clk] -divide_by 1 -comment {icache mem clock0} [get_ports icache_mem_clk0]
+create_generated_clock -name icache_mem_clk1 -add -source [get_ports {core_clk}] -master_clock [get_clocks core_clk] -divide_by 1 -comment {icache mem clock1} [get_ports icache_mem_clk1]
+
+set_clock_transition 0.1500 [all_clocks]
+set_clock_uncertainty -setup 0.2500 [all_clocks]
+set_clock_uncertainty -hold 0.2500 [all_clocks]
+
+set ::env(SYNTH_TIMING_DERATE) 0.05
+puts "\[INFO\]: Setting timing derate to: [expr {$::env(SYNTH_TIMING_DERATE) * 10}] %"
+set_timing_derate -early [expr {1-$::env(SYNTH_TIMING_DERATE)}]
+set_timing_derate -late [expr {1+$::env(SYNTH_TIMING_DERATE)}]
+
+set_clock_groups -name async_clock -asynchronous \
+ -group [get_clocks {core_clk dcache_mem_clk0 dcache_mem_clk1 icache_mem_clk0 icache_mem_clk1}]\
+ -group [get_clocks {rtc_clk}]\
+ -group [get_clocks {wb_clk}] -comment {Async Clock group}
+
+#Assumed config are static
+set_false_path -from  [get_ports {cfg_dcache_force_flush}]
+set_false_path -from  [get_ports {cfg_dcache_pfet_dis}]
+set_false_path -from  [get_ports {cfg_icache_ntag_pfet_dis}]
+set_false_path -from  [get_ports {cfg_icache_pfet_dis}]
+set_false_path -from  [get_ports {cfg_cska_riscv[3]}]
+set_false_path -from  [get_ports {cfg_cska_riscv[2]}]
+set_false_path -from  [get_ports {cfg_cska_riscv[1]}]
+set_false_path -from  [get_ports {cfg_cska_riscv[0]}]
+set_false_path -from  [get_ports {cfg_sram_lphase[1]}]
+set_false_path -from  [get_ports {cfg_sram_lphase[0]}]
+
+#All reset has reset synchronization logic inside block ??
+set_false_path -from  [get_ports {cpu_intf_rst_n}]
+set_false_path -from  [get_ports {pwrup_rst_n}]
+set_false_path -from  [get_ports {wb_rst_n}]
+
+#CORE Instruction Memory Interface
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_icache_req_ack}]
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_icache_rdata[*]}]
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_icache_resp[*]}]
+
+set_output_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_icache_req_ack}]
+set_output_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_icache_rdata[*]}]
+set_output_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_icache_resp[*]}]
+
+
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_icache_req}]
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_icache_cmd}]
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_icache_req}]
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_icache_addr[*]}]
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_icache_bl[*]}]
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_icache_width[*]}]
+
+set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_icache_req}]
+set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_icache_cmd}]
+set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_icache_req}]
+set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_icache_addr[*]}]
+set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_icache_bl[*]}]
+set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_icache_width[*]}]
+
+#Wishbone ICACHE I/F
+set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_icache_stb_o}]
+set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_icache_adr_o[*]}]
+set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_icache_we_o}]
+set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_icache_sel_o[*]}]
+set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_icache_bl_o[*]}]
+set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_icache_bry_o}]
+
+set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_icache_stb_o}]
+set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_icache_adr_o[*]}]
+set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_icache_we_o}]
+set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_icache_sel_o[*]}]
+set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_icache_bl_o[*]}]
+set_output_delay -max 2.5000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_icache_bry_o}]
+
+set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_icache_dat_i[*]}]
+set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_icache_ack_i}]
+set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_icache_lack_i}]
+set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_icache_err_i}]
+
+set_input_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_icache_dat_i[*]}]
+set_input_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_icache_ack_i}]
+set_input_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_icache_lack_i}]
+set_input_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_icache_err_i}]
+
+
+
+# CORE Data Memory Interface
+
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dcache_req_ack}]
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dcache_rdata[*]}]
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dcache_resp[*]}]
+
+set_output_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dcache_req_ack}]
+set_output_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dcache_rdata[*]}]
+set_output_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dcache_resp[*]}]
+
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dcache_req}]
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dcache_cmd}]
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dcache_width[*]}]
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dcache_addr[*]}]
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dcache_wdata[*]}]
+
+set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dcache_req}]
+set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dcache_cmd}]
+set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dcache_width[*]}]
+set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dcache_addr[*]}]
+set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dcache_wdata[*]}]
+
+
+# Data memory interface from router to WB bridge
+
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dmem_req_ack}]
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dmem_rdata[*]}]
+set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dmem_resp[*]}]
+
+set_output_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dmem_req_ack}]
+set_output_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dmem_rdata[*]}]
+set_output_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dmem_resp[*]}]
+
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dmem_req}]
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dmem_cmd}]
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dmem_width[*]}]
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dmem_addr[*]}]
+set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dmem_wdata[*]}]
+
+set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dmem_req}]
+set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dmem_cmd}]
+set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dmem_width[*]}]
+set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dmem_addr[*]}]
+set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay  [get_ports {core_dmem_wdata[*]}]
+
+#WB Data Memory Interface
+set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wbd_dmem_stb_o}]
+set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wbd_dmem_adr_o[*]}]
+set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wbd_dmem_we_o}]
+set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wbd_dmem_dat_o[*]}]
+set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wbd_dmem_sel_o[*]}]
+
+set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wbd_dmem_stb_o}]
+set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wbd_dmem_adr_o[*]}]
+set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wbd_dmem_we_o}]
+set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wbd_dmem_dat_o[*]}]
+set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wbd_dmem_sel_o[*]}]
+
+set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wbd_dmem_dat_i[*]}]
+set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wbd_dmem_ack_i}]
+set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wbd_dmem_err_i}]
+
+set_input_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wbd_dmem_dat_i[*]}]
+set_input_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wbd_dmem_ack_i}]
+set_input_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wbd_dmem_err_i}]
+
+
+## ICACHE PORT-0 SRAM Memory I/F
+set_output_delay -min 2.0000 -clock [get_clocks {icache_mem_clk0}] -add_delay  [get_ports {icache_mem_csb0}]
+set_output_delay -min 2.0000 -clock [get_clocks {icache_mem_clk0}] -add_delay  [get_ports {icache_mem_web0}]
+set_output_delay -min 2.0000 -clock [get_clocks {icache_mem_clk0}] -add_delay  [get_ports {icache_mem_addr0[*]}]
+set_output_delay -min 2.0000 -clock [get_clocks {icache_mem_clk0}] -add_delay  [get_ports {icache_mem_wmask0[*]}]
+set_output_delay -min 2.0000 -clock [get_clocks {icache_mem_clk0}] -add_delay  [get_ports {icache_mem_din0[*]}]
+
+set_output_delay -max 3.5000 -clock [get_clocks {icache_mem_clk0}] -add_delay  [get_ports {icache_mem_csb0}]
+set_output_delay -max 3.5000 -clock [get_clocks {icache_mem_clk0}] -add_delay  [get_ports {icache_mem_web0}]
+set_output_delay -max 3.5000 -clock [get_clocks {icache_mem_clk0}] -add_delay  [get_ports {icache_mem_addr0[*]}]
+set_output_delay -max 3.5000 -clock [get_clocks {icache_mem_clk0}] -add_delay  [get_ports {icache_mem_wmask0[*]}]
+set_output_delay -max 3.5000 -clock [get_clocks {icache_mem_clk0}] -add_delay  [get_ports {icache_mem_din0[*]}]
+
+## ICACHE PORT-1 SRAM Memory I/F
+set_output_delay -min 2.0000 -clock [get_clocks {icache_mem_clk1}] -add_delay  [get_ports {icache_mem_csb1}]
+set_output_delay -min 2.0000 -clock [get_clocks {icache_mem_clk1}] -add_delay  [get_ports {icache_mem_addr1[*]}]
+set_output_delay -max 3.5000 -clock [get_clocks {icache_mem_clk1}] -add_delay  [get_ports {icache_mem_csb1}]
+set_output_delay -max 3.5000 -clock [get_clocks {icache_mem_clk1}] -add_delay  [get_ports {icache_mem_addr1[*]}]
+
+set_input_delay -min 2.0000 -clock [get_clocks {icache_mem_clk1}] -add_delay  [get_ports {icache_mem_dout1[*]}]
+set_input_delay -max 6.0000 -clock [get_clocks {icache_mem_clk1}] -add_delay  [get_ports {icache_mem_dout1[*]}]
+
+
+# Wishbone DCACHE I/F
+set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_dcache_cyc_o}]
+set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_dcache_stb_o}]
+set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_dcache_adr_o[*]}]
+set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_dcache_we_o}]
+set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_dcache_dat_o[*]}]
+set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_dcache_bl_o[*]}]
+set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_dcache_bry_o}]
+
+set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_dcache_cyc_o}]
+set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_dcache_stb_o}]
+set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_dcache_adr_o[*]}]
+set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_dcache_we_o}]
+set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_dcache_dat_o[*]}]
+set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_dcache_bl_o[*]}]
+set_output_delay -max 5.5000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_dcache_bry_o}]
+
+set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_dcache_dat_i[*]}]
+set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_dcache_ack_i}]
+set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_dcache_lack_i}]
+set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_dcache_err_i}]
+
+set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_dcache_dat_i[*]}]
+set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_dcache_ack_i}]
+set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_dcache_lack_i}]
+set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay  [get_ports {wb_dcache_err_i}]
+
+## DCACHE PORT-0 SRAM I/F
+set_output_delay -min 2.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay  [get_ports {dcache_mem_csb0}]
+set_output_delay -min 2.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay  [get_ports {dcache_mem_web0}]
+set_output_delay -min 2.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay  [get_ports {dcache_mem_addr0[*]}]
+set_output_delay -min 2.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay  [get_ports {dcache_mem_wmask0[*]}]
+set_output_delay -min 2.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay  [get_ports {dcache_mem_din0[*]}]
+
+set_output_delay -max 3.5000 -clock [get_clocks {dcache_mem_clk0}] -add_delay  [get_ports {dcache_mem_csb0}]
+set_output_delay -max 3.5000 -clock [get_clocks {dcache_mem_clk0}] -add_delay  [get_ports {dcache_mem_web0}]
+set_output_delay -max 3.5000 -clock [get_clocks {dcache_mem_clk0}] -add_delay  [get_ports {dcache_mem_addr0[*]}]
+set_output_delay -max 3.5000 -clock [get_clocks {dcache_mem_clk0}] -add_delay  [get_ports {dcache_mem_wmask0[*]}]
+set_output_delay -max 3.5000 -clock [get_clocks {dcache_mem_clk0}] -add_delay  [get_ports {dcache_mem_din0[*]}]
+
+set_input_delay  -min 2.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay  [get_ports {dcache_mem_dout0[*]}]
+set_input_delay  -max 6.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay  [get_ports {dcache_mem_dout0[*]}]
+
+
+## DCACHE PORT-1 SRAM I/F
+set_output_delay -min 2.0000 -clock [get_clocks {dcache_mem_clk1}] -add_delay  [get_ports {dcache_mem_csb1}]
+set_output_delay -min 2.0000 -clock [get_clocks {dcache_mem_clk1}] -add_delay  [get_ports {dcache_mem_addr1[*]}]
+
+set_output_delay -max 3.5000 -clock [get_clocks {dcache_mem_clk1}] -add_delay  [get_ports {dcache_mem_csb1}]
+set_output_delay -max 3.5000 -clock [get_clocks {dcache_mem_clk1}] -add_delay  [get_ports {dcache_mem_addr1[*]}]
+
+set_input_delay  -min 2.0000 -clock [get_clocks {dcache_mem_clk1}] -add_delay  [get_ports {dcache_mem_dout1[*]}]
+set_input_delay  -max 6.0000 -clock [get_clocks {dcache_mem_clk1}] -add_delay  [get_ports {dcache_mem_dout1[*]}]
+
+
+###############################################################################
+# Environment
+###############################################################################
+set_driving_cell -lib_cell sky130_fd_sc_hd__inv_8 -pin $::env(SYNTH_DRIVING_CELL_PIN) [all_inputs]
+set cap_load [expr $::env(SYNTH_CAP_LOAD) / 1000.0]
+puts "\[INFO\]: Setting load to: $cap_load"
+set_load  $cap_load [all_outputs]
+
+###############################################################################
+# Design Rules
+###############################################################################
diff --git a/openlane/ycr_intf/config.tcl b/openlane/ycr_intf/config.tcl
new file mode 100644
index 0000000..831ef54
--- /dev/null
+++ b/openlane/ycr_intf/config.tcl
@@ -0,0 +1,87 @@
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
+
+set script_dir [file dirname [file normalize [info script]]]
+
+set ::env(ROUTING_CORES) "6"
+
+set ::env(DESIGN_NAME) ycr_intf
+set ::env(DESIGN_IS_CORE) "0"
+set ::env(FP_PDN_CORE_RING) "0"
+
+# Timing configuration
+set ::env(CLOCK_PERIOD) "10"
+set ::env(CLOCK_PORT) "wb_clk core_clk"
+
+set ::env(SYNTH_MAX_FANOUT) 4
+
+## CTS BUFFER
+set ::env(CTS_CLK_BUFFER_LIST) "sky130_fd_sc_hd__clkbuf_4 sky130_fd_sc_hd__clkbuf_8"
+set ::env(CTS_SINK_CLUSTERING_SIZE) "16"
+set ::env(CLOCK_BUFFER_FANOUT) "8"
+set ::env(LEC_ENABLE) 0
+
+set ::env(VERILOG_FILES) "\
+        $script_dir/../../verilog/rtl/yifive/ycr1c/src/lib/clk_skew_adjust.gv                  \
+        $script_dir/../../verilog/rtl/yifive/ycr1c/src/lib/ctech_cells.sv                      \
+        $script_dir/../../verilog/rtl/yifive/ycr1c/src/cache/src/core/dcache_top.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/icache_tag_fifo.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/lib/ycr_async_wbb.sv                    \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/top/ycr_dmem_wb.sv                      \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/top/ycr_intf.sv                        \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/top/ycr_sram_mux.sv                   \
+        $script_dir/../../verilog/rtl/yifive/ycr1c/src/lib/async_fifo.sv                       \
+	$script_dir/../../verilog/rtl/yifive/ycr1c/src/core/primitives/ycr_reset_cells.sv     \
+	"
+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 ]
+
+
+set ::env(SDC_FILE) "$script_dir/base.sdc"
+set ::env(BASE_SDC_FILE) "$script_dir/base.sdc"
+
+set ::env(LEC_ENABLE) 0
+
+set ::env(VDD_PIN) [list {vccd1}]
+set ::env(GND_PIN) [list {vssd1}]
+
+## Floorplan
+set ::env(FP_PIN_ORDER_CFG) $script_dir/pin_order.cfg
+set ::env(FP_SIZING) absolute
+set ::env(DIE_AREA) "0 0 810 640 "
+set ::env(CELL_PAD) "6"
+
+set ::env(MACRO_PLACEMENT_CFG) $script_dir/macro_placement.cfg
+set ::env(PL_TARGET_DENSITY) 0.37
+
+
+set ::env(RT_MAX_LAYER) {met4}
+#set ::env(GLB_RT_MAXLAYER) "5"
+set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10
+set ::env(DIODE_INSERTION_STRATEGY) 3
+
+
+set ::env(QUIT_ON_TIMING_VIOLATIONS) "0"
+set ::env(QUIT_ON_MAGIC_DRC) "1"
+set ::env(QUIT_ON_LVS_ERROR) "0"
+set ::env(QUIT_ON_SLEW_VIOLATIONS) "0"
+
+#Need to cross-check why global timing opimization creating setup vio with hugh hold fix
+set ::env(GLB_RESIZER_TIMING_OPTIMIZATIONS) "0"
+
diff --git a/openlane/ycr_intf/pin_order.cfg b/openlane/ycr_intf/pin_order.cfg
new file mode 100644
index 0000000..6b93ea3
--- /dev/null
+++ b/openlane/ycr_intf/pin_order.cfg
@@ -0,0 +1,847 @@
+#BUS_SORT
+#MANUAL_PLACE
+
+#N
+
+core_icache_req_ack           000 0 2
+core_icache_req
+core_icache_cmd      
+core_icache_addr\[31\]     
+core_icache_addr\[30\]     
+core_icache_addr\[29\]     
+core_icache_addr\[28\]     
+core_icache_addr\[27\]     
+core_icache_addr\[26\]     
+core_icache_addr\[25\]     
+core_icache_addr\[24\]     
+core_icache_addr\[23\]     
+core_icache_addr\[22\]     
+core_icache_addr\[21\]     
+core_icache_addr\[20\]     
+core_icache_addr\[19\]     
+core_icache_addr\[18\]     
+core_icache_addr\[17\]     
+core_icache_addr\[16\]     
+core_icache_addr\[15\]     
+core_icache_addr\[14\]     
+core_icache_addr\[13\]     
+core_icache_addr\[12\]     
+core_icache_addr\[11\]     
+core_icache_addr\[10\]     
+core_icache_addr\[9\]     
+core_icache_addr\[8\]     
+core_icache_addr\[7\]     
+core_icache_addr\[6\]     
+core_icache_addr\[5\]     
+core_icache_addr\[4\]     
+core_icache_addr\[3\]     
+core_icache_addr\[2\]     
+core_icache_addr\[1\]     
+core_icache_addr\[0\]     
+core_icache_bl\[2\]      
+core_icache_bl\[1\]      
+core_icache_bl\[0\]      
+core_icache_width\[1\]    
+core_icache_width\[0\]    
+core_icache_rdata\[31\]    
+core_icache_rdata\[30\]    
+core_icache_rdata\[29\]    
+core_icache_rdata\[28\]    
+core_icache_rdata\[27\]    
+core_icache_rdata\[26\]    
+core_icache_rdata\[25\]    
+core_icache_rdata\[24\]    
+core_icache_rdata\[23\]    
+core_icache_rdata\[22\]    
+core_icache_rdata\[21\]    
+core_icache_rdata\[20\]    
+core_icache_rdata\[19\]    
+core_icache_rdata\[18\]    
+core_icache_rdata\[17\]    
+core_icache_rdata\[16\]    
+core_icache_rdata\[15\]    
+core_icache_rdata\[14\]    
+core_icache_rdata\[13\]    
+core_icache_rdata\[12\]    
+core_icache_rdata\[11\]    
+core_icache_rdata\[10\]    
+core_icache_rdata\[9\]    
+core_icache_rdata\[8\]    
+core_icache_rdata\[7\]    
+core_icache_rdata\[6\]    
+core_icache_rdata\[5\]    
+core_icache_rdata\[4\]    
+core_icache_rdata\[3\]    
+core_icache_rdata\[2\]    
+core_icache_rdata\[1\]    
+core_icache_rdata\[0\]    
+core_icache_resp\[1\]     
+core_icache_resp\[0\]     
+
+
+core_dcache_req_ack        100 0 2
+core_dcache_req      
+core_dcache_cmd      
+core_dcache_width\[1\]    
+core_dcache_width\[0\]    
+core_dcache_addr\[31\]     
+core_dcache_addr\[30\]     
+core_dcache_addr\[29\]     
+core_dcache_addr\[28\]     
+core_dcache_addr\[27\]     
+core_dcache_addr\[26\]     
+core_dcache_addr\[25\]     
+core_dcache_addr\[24\]     
+core_dcache_addr\[23\]     
+core_dcache_addr\[22\]     
+core_dcache_addr\[21\]     
+core_dcache_addr\[20\]     
+core_dcache_addr\[19\]     
+core_dcache_addr\[18\]     
+core_dcache_addr\[17\]     
+core_dcache_addr\[16\]     
+core_dcache_addr\[15\]     
+core_dcache_addr\[14\]     
+core_dcache_addr\[13\]     
+core_dcache_addr\[12\]     
+core_dcache_addr\[11\]     
+core_dcache_addr\[10\]     
+core_dcache_addr\[9\]     
+core_dcache_addr\[8\]     
+core_dcache_addr\[7\]     
+core_dcache_addr\[6\]     
+core_dcache_addr\[5\]     
+core_dcache_addr\[4\]     
+core_dcache_addr\[3\]     
+core_dcache_addr\[2\]     
+core_dcache_addr\[1\]     
+core_dcache_addr\[0\]     
+core_dcache_wdata\[31\]    
+core_dcache_wdata\[30\]    
+core_dcache_wdata\[29\]    
+core_dcache_wdata\[28\]    
+core_dcache_wdata\[27\]    
+core_dcache_wdata\[26\]    
+core_dcache_wdata\[25\]    
+core_dcache_wdata\[24\]    
+core_dcache_wdata\[23\]    
+core_dcache_wdata\[22\]    
+core_dcache_wdata\[21\]    
+core_dcache_wdata\[20\]    
+core_dcache_wdata\[19\]    
+core_dcache_wdata\[18\]    
+core_dcache_wdata\[17\]    
+core_dcache_wdata\[16\]    
+core_dcache_wdata\[15\]    
+core_dcache_wdata\[14\]    
+core_dcache_wdata\[13\]    
+core_dcache_wdata\[12\]    
+core_dcache_wdata\[11\]    
+core_dcache_wdata\[10\]    
+core_dcache_wdata\[9\]    
+core_dcache_wdata\[8\]    
+core_dcache_wdata\[7\]    
+core_dcache_wdata\[6\]    
+core_dcache_wdata\[5\]    
+core_dcache_wdata\[4\]    
+core_dcache_wdata\[3\]    
+core_dcache_wdata\[2\]    
+core_dcache_wdata\[1\]    
+core_dcache_wdata\[0\]    
+core_dcache_rdata\[31\]    
+core_dcache_rdata\[30\]    
+core_dcache_rdata\[29\]    
+core_dcache_rdata\[28\]    
+core_dcache_rdata\[27\]    
+core_dcache_rdata\[26\]    
+core_dcache_rdata\[25\]    
+core_dcache_rdata\[24\]    
+core_dcache_rdata\[23\]    
+core_dcache_rdata\[22\]    
+core_dcache_rdata\[21\]    
+core_dcache_rdata\[20\]    
+core_dcache_rdata\[19\]    
+core_dcache_rdata\[18\]    
+core_dcache_rdata\[17\]    
+core_dcache_rdata\[16\]    
+core_dcache_rdata\[15\]    
+core_dcache_rdata\[14\]    
+core_dcache_rdata\[13\]    
+core_dcache_rdata\[12\]    
+core_dcache_rdata\[11\]    
+core_dcache_rdata\[10\]    
+core_dcache_rdata\[9\]    
+core_dcache_rdata\[8\]    
+core_dcache_rdata\[7\]    
+core_dcache_rdata\[6\]    
+core_dcache_rdata\[5\]    
+core_dcache_rdata\[4\]    
+core_dcache_rdata\[3\]    
+core_dcache_rdata\[2\]    
+core_dcache_rdata\[1\]    
+core_dcache_rdata\[0\]    
+core_dcache_resp\[1\]     
+core_dcache_resp\[0\]     
+
+core_dmem_req_ack          0200 0 2
+core_dmem_req        
+core_dmem_cmd        
+core_dmem_width\[1\]      
+core_dmem_width\[0\]      
+core_dmem_addr\[31\]       
+core_dmem_addr\[30\]       
+core_dmem_addr\[29\]       
+core_dmem_addr\[28\]       
+core_dmem_addr\[27\]       
+core_dmem_addr\[26\]       
+core_dmem_addr\[25\]       
+core_dmem_addr\[24\]       
+core_dmem_addr\[23\]       
+core_dmem_addr\[22\]       
+core_dmem_addr\[21\]       
+core_dmem_addr\[20\]       
+core_dmem_addr\[19\]       
+core_dmem_addr\[18\]       
+core_dmem_addr\[17\]       
+core_dmem_addr\[16\]       
+core_dmem_addr\[15\]       
+core_dmem_addr\[14\]       
+core_dmem_addr\[13\]       
+core_dmem_addr\[12\]       
+core_dmem_addr\[11\]       
+core_dmem_addr\[10\]       
+core_dmem_addr\[9\]       
+core_dmem_addr\[8\]       
+core_dmem_addr\[7\]       
+core_dmem_addr\[6\]       
+core_dmem_addr\[5\]       
+core_dmem_addr\[4\]       
+core_dmem_addr\[3\]       
+core_dmem_addr\[2\]       
+core_dmem_addr\[1\]       
+core_dmem_addr\[0\]       
+core_dmem_wdata\[31\]      
+core_dmem_wdata\[30\]      
+core_dmem_wdata\[29\]      
+core_dmem_wdata\[28\]      
+core_dmem_wdata\[27\]      
+core_dmem_wdata\[26\]      
+core_dmem_wdata\[25\]      
+core_dmem_wdata\[24\]      
+core_dmem_wdata\[23\]      
+core_dmem_wdata\[22\]      
+core_dmem_wdata\[21\]      
+core_dmem_wdata\[20\]      
+core_dmem_wdata\[19\]      
+core_dmem_wdata\[18\]      
+core_dmem_wdata\[17\]      
+core_dmem_wdata\[16\]      
+core_dmem_wdata\[15\]      
+core_dmem_wdata\[14\]      
+core_dmem_wdata\[13\]      
+core_dmem_wdata\[12\]      
+core_dmem_wdata\[11\]      
+core_dmem_wdata\[10\]      
+core_dmem_wdata\[9\]      
+core_dmem_wdata\[8\]      
+core_dmem_wdata\[7\]      
+core_dmem_wdata\[6\]      
+core_dmem_wdata\[5\]      
+core_dmem_wdata\[4\]      
+core_dmem_wdata\[3\]      
+core_dmem_wdata\[2\]      
+core_dmem_wdata\[1\]      
+core_dmem_wdata\[0\]      
+core_dmem_rdata\[31\]      
+core_dmem_rdata\[30\]      
+core_dmem_rdata\[29\]      
+core_dmem_rdata\[28\]      
+core_dmem_rdata\[27\]      
+core_dmem_rdata\[26\]      
+core_dmem_rdata\[25\]      
+core_dmem_rdata\[24\]      
+core_dmem_rdata\[23\]      
+core_dmem_rdata\[22\]      
+core_dmem_rdata\[21\]      
+core_dmem_rdata\[20\]      
+core_dmem_rdata\[19\]      
+core_dmem_rdata\[18\]      
+core_dmem_rdata\[17\]      
+core_dmem_rdata\[16\]      
+core_dmem_rdata\[15\]      
+core_dmem_rdata\[14\]      
+core_dmem_rdata\[13\]      
+core_dmem_rdata\[12\]      
+core_dmem_rdata\[11\]      
+core_dmem_rdata\[10\]      
+core_dmem_rdata\[9\]      
+core_dmem_rdata\[8\]      
+core_dmem_rdata\[7\]      
+core_dmem_rdata\[6\]      
+core_dmem_rdata\[5\]      
+core_dmem_rdata\[4\]      
+core_dmem_rdata\[3\]      
+core_dmem_rdata\[2\]      
+core_dmem_rdata\[1\]      
+core_dmem_rdata\[0\]      
+core_dmem_resp\[1\]       
+core_dmem_resp\[0\]       
+
+cfg_dcache_force_flush
+
+#S
+icache_mem_clk0          
+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          100 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\]     150 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\]
+
+wb_rst_n                500 0
+pwrup_rst_n            
+core_clk
+cpu_intf_rst_n      
+
+#W
+dcache_mem_clk0            000 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\]
+
+
+dcache_mem_dout0\[0\]   100 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         200 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\]   250 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\]
+
+
+
+
+
+#E
+cfg_cska_riscv\[3\]     0000 0   2
+cfg_cska_riscv\[2\]
+cfg_cska_riscv\[1\]
+cfg_cska_riscv\[0\]
+wbd_clk_int
+wbd_clk_riscv
+wb_clk            
+
+wbd_dmem_stb_o         0100 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       0300 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_dcache_cyc_o       
+
+wb_icache_stb_o       500 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      
+wb_icache_cyc_o
+
+cfg_icache_pfet_dis       
+cfg_icache_ntag_pfet_dis
+cfg_dcache_pfet_dis
+cfg_sram_lphase\[1\]
+cfg_sram_lphase\[0\]
diff --git a/openlane/yifive/base.sdc b/openlane/yifive/base.sdc
deleted file mode 100644
index d2293b6..0000000
--- a/openlane/yifive/base.sdc
+++ /dev/null
@@ -1,338 +0,0 @@
-###############################################################################
-# Timing Constraints
-###############################################################################
-create_clock -name core_clk -period 20.0000 [get_ports {core_clk}]
-create_clock -name core_clk_mclk -period 20.0000 [get_ports {core_clk_mclk}]
-create_clock -name rtc_clk -period 40.0000 [get_ports {rtc_clk}]
-create_clock -name wb_clk -period 10.0000 [get_ports {wb_clk}]
-
-create_generated_clock -name tcm_dffram_clk0 -add -source [get_ports {core_clk_mclk}] -master_clock [get_clocks core_clk_mclk] -divide_by 1 -comment {tcm clock0} [get_ports tcm_dffram_clk0]
-create_generated_clock -name tcm_dffram_clk1 -add -source [get_ports {core_clk_mclk}] -master_clock [get_clocks core_clk_mclk] -divide_by 1 -comment {tcm clock1} [get_ports tcm_dffram_clk1]
-
-create_generated_clock -name icache_dffram_clk0 -add -source [get_ports {core_clk_mclk}] -master_clock [get_clocks core_clk_mclk] -divide_by 1 -comment {icache clock0} [get_ports icache_dffram_clk0]
-create_generated_clock -name icache_dffram_clk1 -add -source [get_ports {core_clk_mclk}] -master_clock [get_clocks core_clk_mclk] -divide_by 1 -comment {icache clock1} [get_ports icache_dffram_clk1]
-
-create_generated_clock -name dcache_dffram_clk0 -add -source [get_ports {core_clk_mclk}] -master_clock [get_clocks core_clk_mclk] -divide_by 1 -comment {dcache clock0} [get_ports dcache_dffram_clk0]
-create_generated_clock -name dcache_dffram_clk1 -add -source [get_ports {core_clk_mclk}] -master_clock [get_clocks core_clk_mclk] -divide_by 1 -comment {dcache clock1} [get_ports dcache_dffram_clk1]
-
-set_clock_transition 0.1500 [all_clocks]
-set_clock_uncertainty -setup 0.2500 [all_clocks]
-set_clock_uncertainty -hold 0.2500 [all_clocks]
-
-set_propagated_clock [all_clocks]
-
-
-set ::env(SYNTH_TIMING_DERATE) 0.05
-puts "\[INFO\]: Setting timing derate to: [expr {$::env(SYNTH_TIMING_DERATE) * 10}] %"
-set_timing_derate -early [expr {1-$::env(SYNTH_TIMING_DERATE)}]
-set_timing_derate -late [expr {1+$::env(SYNTH_TIMING_DERATE)}]
-
-set_clock_groups -name async_clock -asynchronous \
- -group [get_clocks {core_clk core_clk_mclk tcm_dffram_clk0 tcm_dffram_clk1 icache_dffram_clk0 icache_dffram_clk1 dcache_dffram_clk0 dcache_dffram_clk1} ]\
- -group [get_clocks {rtc_clk}]\
- -group [get_clocks {wb_clk}] -comment {Async Clock group}
-
-### ClkSkew Adjust
-set_case_analysis 0 [get_ports {cfg_cska_riscv[0]}]
-set_case_analysis 0 [get_ports {cfg_cska_riscv[1]}]
-set_case_analysis 0 [get_ports {cfg_cska_riscv[2]}]
-set_case_analysis 0 [get_ports {cfg_cska_riscv[3]}]
-
-
-set_max_delay   3.5 -from [get_ports {wbd_clk_int}]
-set_max_delay   2 -to   [get_ports {wbd_clk_riscv}]
-set_max_delay 3.5 -from wbd_clk_int -to wbd_clk_riscv
-
-#TCM Memory
-set_input_delay -max 6.0000 -clock [get_clocks {tcm_dffram_clk0}] -add_delay [get_ports {tcm_dffram_dout0[*]}]
-set_input_delay -min 3.0000 -clock [get_clocks {tcm_dffram_clk0}] -add_delay [get_ports {tcm_dffram_dout0[*]}]
-
-set_output_delay -max 4.5000 -clock [get_clocks {tcm_dffram_clk0}] -add_delay [get_ports {tcm_dffram_cs0}]
-set_output_delay -max 4.5000 -clock [get_clocks {tcm_dffram_clk0}] -add_delay [get_ports {tcm_dffram_addr0[*]}]
-set_output_delay -max 4.5000 -clock [get_clocks {tcm_dffram_clk0}] -add_delay [get_ports {tcm_dffram_wmask0[*]}]
-set_output_delay -max 4.5000 -clock [get_clocks {tcm_dffram_clk0}] -add_delay [get_ports {tcm_dffram_din0[*]}]
-
-set_output_delay -min -0.5000 -clock [get_clocks {tcm_dffram_clk0}] -add_delay [get_ports {tcm_dffram_cs0}]
-set_output_delay -min -0.5000 -clock [get_clocks {tcm_dffram_clk0}] -add_delay [get_ports {tcm_dffram_addr0[*]}]
-set_output_delay -min -0.5000 -clock [get_clocks {tcm_dffram_clk0}] -add_delay [get_ports {tcm_dffram_wmask0[*]}]
-set_output_delay -min -3.5000 -clock [get_clocks {tcm_dffram_clk0}] -add_delay [get_ports {tcm_dffram_din0[*]}]
-
-# mem1
-set_input_delay -max 6.0000 -clock [get_clocks  {tcm_dffram_clk1}] -add_delay [get_ports  {tcm_dffram_dout1[*]}]
-set_input_delay -min 3.0000 -clock [get_clocks  {tcm_dffram_clk1}] -add_delay [get_ports  {tcm_dffram_dout1[*]}]
-
-set_output_delay -max 4.5000 -clock [get_clocks {tcm_dffram_clk1}] -add_delay [get_ports  {tcm_dffram_cs1}]
-set_output_delay -max 4.5000 -clock [get_clocks {tcm_dffram_clk1}] -add_delay [get_ports  {tcm_dffram_addr1[*]}]
-set_output_delay -max 4.5000 -clock [get_clocks {tcm_dffram_clk1}] -add_delay [get_ports  {tcm_dffram_wmask1[*]}]
-set_output_delay -max 4.5000 -clock [get_clocks {tcm_dffram_clk1}] -add_delay [get_ports  {tcm_dffram_din1[*]}]
-
-set_output_delay -min -0.5000 -clock [get_clocks {tcm_dffram_clk1}] -add_delay [get_ports {tcm_dffram_cs1}]
-set_output_delay -min -0.5000 -clock [get_clocks {tcm_dffram_clk1}] -add_delay [get_ports {tcm_dffram_addr1[*]}]
-set_output_delay -min -1.0000 -clock [get_clocks {tcm_dffram_clk1}] -add_delay [get_ports {tcm_dffram_wmask1[*]}]
-set_output_delay -min -3.5000 -clock [get_clocks {tcm_dffram_clk1}] -add_delay [get_ports {tcm_dffram_din1[*]}]
-
-#icache memory
-set_input_delay -max 6.0000 -clock [get_clocks   {icache_dffram_clk0}] -add_delay [get_ports  {icache_dffram_dout0[*]}]
-set_input_delay -min 3.0000 -clock [get_clocks   {icache_dffram_clk0}] -add_delay [get_ports  {icache_dffram_dout0[*]}]
-
-set_output_delay -max 4.5000 -clock [get_clocks  {icache_dffram_clk0}] -add_delay [get_ports  {icache_dffram_cs0}]
-set_output_delay -max 4.5000 -clock [get_clocks  {icache_dffram_clk0}] -add_delay [get_ports  {icache_dffram_addr0[*]}]
-set_output_delay -max 4.5000 -clock [get_clocks  {icache_dffram_clk0}] -add_delay [get_ports  {icache_dffram_wmask0[*]}]
-set_output_delay -max 4.5000 -clock [get_clocks  {icache_dffram_clk0}] -add_delay [get_ports  {icache_dffram_din0[*]}]
-
-set_output_delay -min -0.5000 -clock [get_clocks {icache_dffram_clk0}] -add_delay [get_ports  {icache_dffram_cs0}]
-set_output_delay -min -0.5000 -clock [get_clocks {icache_dffram_clk0}] -add_delay [get_ports  {icache_dffram_addr0[*]}]
-set_output_delay -min -0.5000 -clock [get_clocks {icache_dffram_clk0}] -add_delay [get_ports  {icache_dffram_wmask0[*]}]
-set_output_delay -min -3.5000 -clock [get_clocks {icache_dffram_clk0}] -add_delay [get_ports  {icache_dffram_din0[*]}]
-
-# mem1
-set_input_delay -max 6.0000 -clock [get_clocks   {icache_dffram_clk1}] -add_delay [get_ports  {icache_dffram_dout1[*]}]
-set_input_delay -min 3.0000 -clock [get_clocks   {icache_dffram_clk1}] -add_delay [get_ports  {icache_dffram_dout1[*]}]
-
-set_output_delay -max 4.5000 -clock [get_clocks  {icache_dffram_clk1}] -add_delay [get_ports  {icache_dffram_cs1}]
-set_output_delay -max 4.5000 -clock [get_clocks  {icache_dffram_clk1}] -add_delay [get_ports  {icache_dffram_addr1[*]}]
-set_output_delay -max 4.5000 -clock [get_clocks  {icache_dffram_clk1}] -add_delay [get_ports  {icache_dffram_wmask1[*]}]
-set_output_delay -max 4.5000 -clock [get_clocks  {icache_dffram_clk1}] -add_delay [get_ports  {icache_dffram_din1[*]}]
-
-set_output_delay -min -0.5000 -clock [get_clocks {icache_dffram_clk1}] -add_delay [get_ports  {icache_dffram_cs1}]
-set_output_delay -min -0.5000 -clock [get_clocks {icache_dffram_clk1}] -add_delay [get_ports  {icache_dffram_addr1[*]}]
-set_output_delay -min -0.5000 -clock [get_clocks {icache_dffram_clk1}] -add_delay [get_ports  {icache_dffram_wmask1[*]}]
-set_output_delay -min -3.5000 -clock [get_clocks {icache_dffram_clk1}] -add_delay [get_ports  {icache_dffram_din1[*]}]
-
-#dcache memory
-
-set_input_delay -max 6.0000 -clock [get_clocks   {dcache_dffram_clk0}] -add_delay [get_ports  {dcache_dffram_dout0[*]}]
-set_input_delay -min 3.0000 -clock [get_clocks   {dcache_dffram_clk0}] -add_delay [get_ports  {dcache_dffram_dout0[*]}]
-
-set_output_delay -max 4.5000 -clock [get_clocks  {dcache_dffram_clk0}] -add_delay [get_ports  {dcache_dffram_cs0}]
-set_output_delay -max 4.5000 -clock [get_clocks  {dcache_dffram_clk0}] -add_delay [get_ports  {dcache_dffram_addr0[*]}]
-set_output_delay -max 4.5000 -clock [get_clocks  {dcache_dffram_clk0}] -add_delay [get_ports  {dcache_dffram_wmask0[*]}]
-set_output_delay -max 4.5000 -clock [get_clocks  {dcache_dffram_clk0}] -add_delay [get_ports  {dcache_dffram_din0[*]}]
-
-set_output_delay -min -0.5000 -clock [get_clocks {dcache_dffram_clk0}] -add_delay [get_ports  {dcache_dffram_cs0}]
-set_output_delay -min -0.5000 -clock [get_clocks {dcache_dffram_clk0}] -add_delay [get_ports  {dcache_dffram_addr0[*]}]
-set_output_delay -min -2.5000 -clock [get_clocks {dcache_dffram_clk0}] -add_delay [get_ports  {dcache_dffram_wmask0[*]}]
-set_output_delay -min -3.5000 -clock [get_clocks {dcache_dffram_clk0}] -add_delay [get_ports  {dcache_dffram_din0[*]}]
-
-# mem1
-set_input_delay -max 6.0000 -clock [get_clocks   {dcache_dffram_clk1}] -add_delay [get_ports  {dcache_dffram_dout1[*]}]
-set_input_delay -min 3.0000 -clock [get_clocks   {dcache_dffram_clk1}] -add_delay [get_ports  {dcache_dffram_dout1[*]}]
-
-set_output_delay -max 4.5000 -clock [get_clocks  {dcache_dffram_clk1}] -add_delay [get_ports  {dcache_dffram_cs1}]
-set_output_delay -max 4.5000 -clock [get_clocks  {dcache_dffram_clk1}] -add_delay [get_ports  {dcache_dffram_addr1[*]}]
-set_output_delay -max 4.5000 -clock [get_clocks  {dcache_dffram_clk1}] -add_delay [get_ports  {dcache_dffram_wmask1[*]}]
-set_output_delay -max 4.5000 -clock [get_clocks  {dcache_dffram_clk1}] -add_delay [get_ports  {dcache_dffram_din1[*]}]
-
-set_output_delay -min -0.5000 -clock [get_clocks {dcache_dffram_clk1}] -add_delay [get_ports  {dcache_dffram_cs1}]
-set_output_delay -min -0.5000 -clock [get_clocks {dcache_dffram_clk1}] -add_delay [get_ports  {dcache_dffram_addr1[*]}]
-set_output_delay -min -2.5000 -clock [get_clocks {dcache_dffram_clk1}] -add_delay [get_ports  {dcache_dffram_wmask1[*]}]
-set_output_delay -min -3.5000 -clock [get_clocks {dcache_dffram_clk1}] -add_delay [get_ports  {dcache_dffram_din1[*]}]
-
-
-
-
-set_input_delay -max 5.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_rst_n}]
-
-#Wishbone DMEM
-set_input_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_ack_i}]
-set_input_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_dat_i[*]}]
-set_input_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_err_i}]
-
-set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_ack_i}]
-set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_dat_i[*]}]
-set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_dat_i[*]}]
-
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_adr_o[*]}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_dat_o[*]}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_sel_o[*]}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_stb_o}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_we_o}]
-
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_adr_o[*]}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_dat_o[*]}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_sel_o[*]}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_stb_o}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_we_o}]
-
-#Wishbone icache
-set_input_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_lack_i}]
-set_input_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_ack_i}]
-set_input_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_dat_i[*]}]
-set_input_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_err_i}]
-
-set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_lack_i}]
-set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_ack_i}]
-set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_dat_i[*]}]
-set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_dat_i[*]}]
-
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_adr_o[*]}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_sel_o[*]}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_bl_o[*]}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_bry_o}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_stb_o}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_we_o}]
-
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_adr_o[*]}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_sel_o[*]}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_bl_o[*]}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_bry_o}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_stb_o}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_we_o}]
-
-#Wishbone dcache
-set_input_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_lack_i}]
-set_input_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_ack_i}]
-set_input_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_dat_i[*]}]
-set_input_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_err_i}]
-
-set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_lack_i}]
-set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_ack_i}]
-set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_dat_i[*]}]
-set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_dat_i[*]}]
-
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_adr_o[*]}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_dat_o[*]}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_sel_o[*]}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_bl_o[*]}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_bry_o}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_stb_o}]
-set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_we_o}]
-
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_adr_o[*]}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_dat_o[*]}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_sel_o[*]}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_bl_o[*]}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_bry_o}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_stb_o}]
-set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_we_o}]
-
-set_false_path\
-    -from [get_ports {soft_irq}]
-set_false_path\
-    -to [list [get_ports {riscv_debug[0]}]\
-           [get_ports {riscv_debug[10]}]\
-           [get_ports {riscv_debug[11]}]\
-           [get_ports {riscv_debug[12]}]\
-           [get_ports {riscv_debug[13]}]\
-           [get_ports {riscv_debug[14]}]\
-           [get_ports {riscv_debug[15]}]\
-           [get_ports {riscv_debug[16]}]\
-           [get_ports {riscv_debug[17]}]\
-           [get_ports {riscv_debug[18]}]\
-           [get_ports {riscv_debug[19]}]\
-           [get_ports {riscv_debug[1]}]\
-           [get_ports {riscv_debug[20]}]\
-           [get_ports {riscv_debug[21]}]\
-           [get_ports {riscv_debug[22]}]\
-           [get_ports {riscv_debug[23]}]\
-           [get_ports {riscv_debug[24]}]\
-           [get_ports {riscv_debug[25]}]\
-           [get_ports {riscv_debug[26]}]\
-           [get_ports {riscv_debug[27]}]\
-           [get_ports {riscv_debug[28]}]\
-           [get_ports {riscv_debug[29]}]\
-           [get_ports {riscv_debug[2]}]\
-           [get_ports {riscv_debug[30]}]\
-           [get_ports {riscv_debug[31]}]\
-           [get_ports {riscv_debug[32]}]\
-           [get_ports {riscv_debug[33]}]\
-           [get_ports {riscv_debug[34]}]\
-           [get_ports {riscv_debug[35]}]\
-           [get_ports {riscv_debug[36]}]\
-           [get_ports {riscv_debug[37]}]\
-           [get_ports {riscv_debug[38]}]\
-           [get_ports {riscv_debug[39]}]\
-           [get_ports {riscv_debug[3]}]\
-           [get_ports {riscv_debug[40]}]\
-           [get_ports {riscv_debug[41]}]\
-           [get_ports {riscv_debug[42]}]\
-           [get_ports {riscv_debug[43]}]\
-           [get_ports {riscv_debug[44]}]\
-           [get_ports {riscv_debug[45]}]\
-           [get_ports {riscv_debug[46]}]\
-           [get_ports {riscv_debug[47]}]\
-           [get_ports {riscv_debug[48]}]\
-           [get_ports {riscv_debug[49]}]\
-           [get_ports {riscv_debug[4]}]\
-           [get_ports {riscv_debug[50]}]\
-           [get_ports {riscv_debug[51]}]\
-           [get_ports {riscv_debug[52]}]\
-           [get_ports {riscv_debug[53]}]\
-           [get_ports {riscv_debug[54]}]\
-           [get_ports {riscv_debug[55]}]\
-           [get_ports {riscv_debug[56]}]\
-           [get_ports {riscv_debug[57]}]\
-           [get_ports {riscv_debug[58]}]\
-           [get_ports {riscv_debug[59]}]\
-           [get_ports {riscv_debug[5]}]\
-           [get_ports {riscv_debug[60]}]\
-           [get_ports {riscv_debug[61]}]\
-           [get_ports {riscv_debug[62]}]\
-           [get_ports {riscv_debug[63]}]\
-           [get_ports {riscv_debug[6]}]\
-           [get_ports {riscv_debug[7]}]\
-           [get_ports {riscv_debug[8]}]\
-           [get_ports {riscv_debug[9]}]]
-
-set_false_path -from [get_ports {fuse_mhartid[0]}]
-set_false_path -from [get_ports {fuse_mhartid[10]}]
-set_false_path -from [get_ports {fuse_mhartid[11]}]
-set_false_path -from [get_ports {fuse_mhartid[12]}]
-set_false_path -from [get_ports {fuse_mhartid[13]}]
-set_false_path -from [get_ports {fuse_mhartid[14]}]
-set_false_path -from [get_ports {fuse_mhartid[15]}]
-set_false_path -from [get_ports {fuse_mhartid[16]}]
-set_false_path -from [get_ports {fuse_mhartid[17]}]
-set_false_path -from [get_ports {fuse_mhartid[18]}]
-set_false_path -from [get_ports {fuse_mhartid[19]}]
-set_false_path -from [get_ports {fuse_mhartid[1]}]
-set_false_path -from [get_ports {fuse_mhartid[20]}]
-set_false_path -from [get_ports {fuse_mhartid[21]}]
-set_false_path -from [get_ports {fuse_mhartid[22]}]
-set_false_path -from [get_ports {fuse_mhartid[23]}]
-set_false_path -from [get_ports {fuse_mhartid[24]}]
-set_false_path -from [get_ports {fuse_mhartid[25]}]
-set_false_path -from [get_ports {fuse_mhartid[26]}]
-set_false_path -from [get_ports {fuse_mhartid[27]}]
-set_false_path -from [get_ports {fuse_mhartid[28]}]
-set_false_path -from [get_ports {fuse_mhartid[29]}]
-set_false_path -from [get_ports {fuse_mhartid[2]}]
-set_false_path -from [get_ports {fuse_mhartid[30]}]
-set_false_path -from [get_ports {fuse_mhartid[31]}]
-set_false_path -from [get_ports {fuse_mhartid[3]}]
-set_false_path -from [get_ports {fuse_mhartid[4]}]
-set_false_path -from [get_ports {fuse_mhartid[5]}]
-set_false_path -from [get_ports {fuse_mhartid[6]}]
-set_false_path -from [get_ports {fuse_mhartid[7]}]
-set_false_path -from [get_ports {fuse_mhartid[8]}]
-set_false_path -from [get_ports {fuse_mhartid[9]}]
-set_false_path -from [get_ports {irq_lines[0]}]
-set_false_path -from [get_ports {irq_lines[10]}]
-set_false_path -from [get_ports {irq_lines[11]}]
-set_false_path -from [get_ports {irq_lines[12]}]
-set_false_path -from [get_ports {irq_lines[13]}]
-set_false_path -from [get_ports {irq_lines[14]}]
-set_false_path -from [get_ports {irq_lines[15]}]
-set_false_path -from [get_ports {irq_lines[1]}]
-set_false_path -from [get_ports {irq_lines[2]}]
-set_false_path -from [get_ports {irq_lines[3]}]
-set_false_path -from [get_ports {irq_lines[4]}]
-set_false_path -from [get_ports {irq_lines[5]}]
-set_false_path -from [get_ports {irq_lines[6]}]
-set_false_path -from [get_ports {irq_lines[7]}]
-set_false_path -from [get_ports {irq_lines[8]}]
-set_false_path -from [get_ports {irq_lines[9]}]
-set_false_path -from [get_ports {pwrup_rst_n}]
-set_false_path -from [get_ports {rst_n}]
-set_false_path -from [get_ports {soft_irq}]
-###############################################################################
-# Environment
-###############################################################################
-set_driving_cell -lib_cell sky130_fd_sc_hd__inv_8 -pin $::env(SYNTH_DRIVING_CELL_PIN) [all_inputs]
-set cap_load [expr $::env(SYNTH_CAP_LOAD) / 1000.0]
-puts "\[INFO\]: Setting load to: $cap_load"
-set_load  $cap_load [all_outputs]
-
-###############################################################################
-# Design Rules
-###############################################################################
diff --git a/openlane/yifive/config.tcl b/openlane/yifive/config.tcl
deleted file mode 100755
index dc97db9..0000000
--- a/openlane/yifive/config.tcl
+++ /dev/null
@@ -1,149 +0,0 @@
-# SPDX-FileCopyrightText:  2021 , Dinesh Annayya
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# SPDX-License-Identifier: Apache-2.0
-# SPDX-FileContributor: Modified by Dinesh Annayya <dinesha@opencores.org>
-
-# Global
-# ------
-
-set script_dir [file dirname [file normalize [info script]]]
-# Name
-set ::env(DESIGN_NAME) ycr1_top_wb
-
-set ::env(DESIGN_IS_CORE) "0"
-set ::env(FP_PDN_CORE_RING) "0"
-
-# Timing configuration
-set ::env(CLOCK_PERIOD) "10"
-set ::env(CLOCK_PORT) "wb_clk core_clk"
-
-set ::env(SYNTH_MAX_FANOUT) 4
-
-## CTS BUFFER
-set ::env(CTS_CLK_BUFFER_LIST) "sky130_fd_sc_hd__clkbuf_4 sky130_fd_sc_hd__clkbuf_8"
-set ::env(CTS_SINK_CLUSTERING_SIZE) "16"
-set ::env(CLOCK_BUFFER_FANOUT) "8"
-
-# Sources
-# -------
-
-# Local sources + no2usb sources
-set ::env(VERILOG_FILES) "\
-        $script_dir/../../verilog/rtl/clk_skew_adjust/src/clk_skew_adjust.gv \
-	$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_router.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/ycr1c/src/includes ]
-set ::env(SYNTH_READ_BLACKBOX_LIB) 1
-set ::env(SYNTH_DEFINES) [list SYNTHESIS ]
-
-set ::env(SDC_FILE) "$script_dir/base.sdc"
-set ::env(BASE_SDC_FILE) "$script_dir/base.sdc"
-#set ::env(SYNTH_DEFINES) [list SCR1_DBG_EN ]
-
-set ::env(LEC_ENABLE) 0
-
-set ::env(VDD_PIN) [list {vccd1}]
-set ::env(GND_PIN) [list {vssd1}]
-
-
-# --------
-# Floorplanning
-# -------------
-
-set ::env(FP_PIN_ORDER_CFG) $::env(DESIGN_DIR)/pin_order.cfg
-
-set ::env(FP_SIZING) absolute
-set ::env(DIE_AREA) [list 0.0 0.0 815.0 1540.0]
-
-
-# If you're going to use multiple power domains, then keep this disabled.
-set ::env(RUN_CVC) 0
-
-#set ::env(PDN_CFG) $script_dir/pdn.tcl
-
-
-set ::env(PL_TIME_DRIVEN) 1
-set ::env(PL_TARGET_DENSITY) "0.32"
-set ::env(FP_CORE_UTIL) "50"
-
-
-
-## Routing
-
-
-set ::env(GLB_RT_MAXLAYER) 5
-set ::env(RT_MAX_LAYER) {met4}
-set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10
-set ::env(DIODE_INSERTION_STRATEGY) 4
-
-
-set ::env(QUIT_ON_TIMING_VIOLATIONS) "0"
-set ::env(QUIT_ON_MAGIC_DRC) "1"
-set ::env(QUIT_ON_LVS_ERROR) "0"
-set ::env(QUIT_ON_SLEW_VIOLATIONS) "0"
-set ::env(QUIT_ON_SETUP_VIOLATIONS) "0"
-set ::env(QUIT_ON_HOLD_VIOLATIONS) "0"
-set ::env(QUIT_ON_ILLEGAL_OVERLAPS) "1"
-
-
-
-
-
-set ::env(PL_RESIZER_DESIGN_OPTIMIZATIONS) "1"
-
-#Need to cross-check why global timing opimization creating setup vio with hugh hold fix
-set ::env(GLB_RESIZER_TIMING_OPTIMIZATIONS) "1"
-
diff --git a/openlane/yifive/pdn.tcl b/openlane/yifive/pdn.tcl
deleted file mode 100644
index 1fe689b..0000000
--- a/openlane/yifive/pdn.tcl
+++ /dev/null
@@ -1,49 +0,0 @@
-# SPDX-FileCopyrightText: 2020 Efabless Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# SPDX-License-Identifier: Apache-2.0
-
-# Power nets
-set ::power_nets $::env(VDD_PIN)
-set ::ground_nets $::env(GND_PIN)
-
-set ::macro_blockage_layer_list "li1 met1 met2 met3 met4 met5"
-
-pdngen::specify_grid stdcell {
-    name grid
-    rails {
-	    met1 {width 0.48 pitch $::env(PLACE_SITE_HEIGHT) offset 0}
-    }
-    straps {
-	    met4 {width 1.6 pitch $::env(FP_PDN_VPITCH) offset $::env(FP_PDN_VOFFSET)}
-	    met5 {width 1.6 pitch $::env(FP_PDN_HPITCH) offset $::env(FP_PDN_HOFFSET)}
-    }
-    connect {{met1 met4} {met4 met5}}
-}
-
-pdngen::specify_grid macro {
-    power_pins "VPWR"
-    ground_pins "VGND"
-    blockages "li1 met1 met2 met3 met4"
-    straps { 
-    } 
-    connect {{met4_PIN_ver met5}}
-}
-
-set ::halo 5
-
-# POWER or GROUND #Std. cell rails starting with power or ground rails at the bottom of the core area
-set ::rails_start_with "POWER" ;
-
-# POWER or GROUND #Upper metal stripes starting with power or ground rails at the left/bottom of the core area
-set ::stripes_start_with "POWER" ;
diff --git a/openlane/yifive/pin_order.cfg b/openlane/yifive/pin_order.cfg
deleted file mode 100644
index c2fb874..0000000
--- a/openlane/yifive/pin_order.cfg
+++ /dev/null
@@ -1,896 +0,0 @@
-#BUS_SORT
-
-#MANUAL_PLACE
-
-
-#E
-soft_irq            0500 0 2
-irq_lines\[15\]     
-irq_lines\[14\]     
-irq_lines\[13\]     
-irq_lines\[12\]     
-irq_lines\[11\]     
-irq_lines\[10\]     
-irq_lines\[9\]     
-irq_lines\[8\]     
-irq_lines\[7\]     
-irq_lines\[6\]     
-irq_lines\[5\]     
-irq_lines\[4\]     
-irq_lines\[3\]     
-irq_lines\[2\]     
-irq_lines\[1\]     
-irq_lines\[0\]   
-cfg_cache_ctrl\[2\]  
-cfg_cache_ctrl\[1\]  
-cfg_cache_ctrl\[0\]  
-
-cfg_cska_riscv\[3\]    
-cfg_cska_riscv\[2\]
-cfg_cska_riscv\[1\]
-cfg_cska_riscv\[0\]
-wbd_clk_int
-wbd_clk_riscv
-wb_clk            
-
-
-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       
-
-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
-
-tcm_dffram_clk0          0000 0 2
-tcm_dffram_cs0
-tcm_dffram_addr0\[7\]
-tcm_dffram_addr0\[6\]
-tcm_dffram_addr0\[5\]
-tcm_dffram_addr0\[4\]
-tcm_dffram_addr0\[3\]
-tcm_dffram_addr0\[2\]
-tcm_dffram_addr0\[1\]
-tcm_dffram_addr0\[0\]
-tcm_dffram_wmask0\[3\]
-tcm_dffram_wmask0\[2\]
-tcm_dffram_wmask0\[1\]
-tcm_dffram_wmask0\[0\]
-tcm_dffram_din0\[31\]
-tcm_dffram_din0\[30\]
-tcm_dffram_din0\[29\]
-tcm_dffram_din0\[28\]
-tcm_dffram_din0\[27\]
-tcm_dffram_din0\[26\]
-tcm_dffram_din0\[25\]
-tcm_dffram_din0\[24\]
-tcm_dffram_din0\[23\]
-tcm_dffram_din0\[22\]
-tcm_dffram_din0\[21\]
-tcm_dffram_din0\[20\]
-tcm_dffram_din0\[19\]
-tcm_dffram_din0\[18\]
-tcm_dffram_din0\[17\]
-tcm_dffram_din0\[16\]
-tcm_dffram_din0\[15\]
-tcm_dffram_din0\[14\]
-tcm_dffram_din0\[13\]
-tcm_dffram_din0\[12\]
-tcm_dffram_din0\[11\]
-tcm_dffram_din0\[10\]
-tcm_dffram_din0\[9\]
-tcm_dffram_din0\[8\]
-tcm_dffram_din0\[7\]
-tcm_dffram_din0\[6\]
-tcm_dffram_din0\[5\]
-tcm_dffram_din0\[4\]
-tcm_dffram_din0\[3\]
-tcm_dffram_din0\[2\]
-tcm_dffram_din0\[1\]
-tcm_dffram_din0\[0\]
-
-tcm_dffram_dout0\[31\]  750 0 2
-tcm_dffram_dout0\[30\]
-tcm_dffram_dout0\[29\]
-tcm_dffram_dout0\[28\]
-tcm_dffram_dout0\[27\]
-tcm_dffram_dout0\[26\]
-tcm_dffram_dout0\[25\]
-tcm_dffram_dout0\[24\]
-tcm_dffram_dout0\[23\]
-tcm_dffram_dout0\[22\]
-tcm_dffram_dout0\[21\]
-tcm_dffram_dout0\[20\]
-tcm_dffram_dout0\[19\]
-tcm_dffram_dout0\[18\]
-tcm_dffram_dout0\[17\]
-tcm_dffram_dout0\[16\]
-tcm_dffram_dout0\[15\]
-tcm_dffram_dout0\[14\]
-tcm_dffram_dout0\[13\]
-tcm_dffram_dout0\[12\]
-tcm_dffram_dout0\[11\]
-tcm_dffram_dout0\[10\]
-tcm_dffram_dout0\[9\]
-tcm_dffram_dout0\[8\]
-tcm_dffram_dout0\[7\]
-tcm_dffram_dout0\[6\]
-tcm_dffram_dout0\[5\]
-tcm_dffram_dout0\[4\]
-tcm_dffram_dout0\[3\]
-tcm_dffram_dout0\[2\]
-tcm_dffram_dout0\[1\]
-tcm_dffram_dout0\[0\]
-
-tcm_dffram_clk1          0800 0 2
-tcm_dffram_cs1
-tcm_dffram_addr1\[0\]
-tcm_dffram_addr1\[1\]
-tcm_dffram_addr1\[2\]
-tcm_dffram_addr1\[3\]
-tcm_dffram_addr1\[4\]
-tcm_dffram_addr1\[5\]
-tcm_dffram_addr1\[6\]
-tcm_dffram_addr1\[7\]
-tcm_dffram_wmask1\[0\]
-tcm_dffram_wmask1\[1\]
-tcm_dffram_wmask1\[2\]
-tcm_dffram_wmask1\[3\]
-tcm_dffram_din1\[0\]
-tcm_dffram_din1\[1\]
-tcm_dffram_din1\[2\]
-tcm_dffram_din1\[3\]
-tcm_dffram_din1\[4\]
-tcm_dffram_din1\[5\]
-tcm_dffram_din1\[6\]
-tcm_dffram_din1\[7\]
-tcm_dffram_din1\[8\]
-tcm_dffram_din1\[9\]
-tcm_dffram_din1\[10\]
-tcm_dffram_din1\[11\]
-tcm_dffram_din1\[12\]
-tcm_dffram_din1\[13\]
-tcm_dffram_din1\[14\]
-tcm_dffram_din1\[15\]
-tcm_dffram_din1\[16\]
-tcm_dffram_din1\[17\]
-tcm_dffram_din1\[18\]
-tcm_dffram_din1\[19\]
-tcm_dffram_din1\[20\]
-tcm_dffram_din1\[21\]
-tcm_dffram_din1\[22\]
-tcm_dffram_din1\[23\]
-tcm_dffram_din1\[24\]
-tcm_dffram_din1\[25\]
-tcm_dffram_din1\[26\]
-tcm_dffram_din1\[27\]
-tcm_dffram_din1\[28\]
-tcm_dffram_din1\[29\]
-tcm_dffram_din1\[30\]
-tcm_dffram_din1\[31\]
-
-tcm_dffram_dout1\[31\] 1450 0 2
-tcm_dffram_dout1\[30\]
-tcm_dffram_dout1\[29\]
-tcm_dffram_dout1\[28\]
-tcm_dffram_dout1\[27\]
-tcm_dffram_dout1\[26\]
-tcm_dffram_dout1\[25\]
-tcm_dffram_dout1\[24\]
-tcm_dffram_dout1\[23\]
-tcm_dffram_dout1\[22\]
-tcm_dffram_dout1\[21\]
-tcm_dffram_dout1\[20\]
-tcm_dffram_dout1\[19\]
-tcm_dffram_dout1\[18\]
-tcm_dffram_dout1\[17\]
-tcm_dffram_dout1\[16\]
-tcm_dffram_dout1\[15\]
-tcm_dffram_dout1\[14\]
-tcm_dffram_dout1\[13\]
-tcm_dffram_dout1\[12\]
-tcm_dffram_dout1\[11\]
-tcm_dffram_dout1\[10\]
-tcm_dffram_dout1\[9\]
-tcm_dffram_dout1\[8\]
-tcm_dffram_dout1\[7\]
-tcm_dffram_dout1\[6\]
-tcm_dffram_dout1\[5\]
-tcm_dffram_dout1\[4\]
-tcm_dffram_dout1\[3\]
-tcm_dffram_dout1\[2\]
-tcm_dffram_dout1\[1\]
-tcm_dffram_dout1\[0\]
-
-#N
-dcache_dffram_clk0          0000 0 2
-dcache_dffram_din0\[0\]
-dcache_dffram_din0\[1\]
-dcache_dffram_din0\[2\]
-dcache_dffram_din0\[3\]
-dcache_dffram_din0\[4\]
-dcache_dffram_din0\[5\]
-dcache_dffram_din0\[6\]
-dcache_dffram_din0\[7\]
-dcache_dffram_din0\[8\]
-dcache_dffram_din0\[9\]
-dcache_dffram_din0\[10\]
-dcache_dffram_din0\[11\]
-dcache_dffram_din0\[12\]
-dcache_dffram_din0\[13\]
-dcache_dffram_din0\[14\]
-dcache_dffram_din0\[15\]
-dcache_dffram_din0\[16\]
-dcache_dffram_din0\[17\]
-dcache_dffram_din0\[18\]
-dcache_dffram_din0\[19\]
-dcache_dffram_din0\[20\]
-dcache_dffram_din0\[21\]
-dcache_dffram_din0\[22\]
-dcache_dffram_din0\[23\]
-dcache_dffram_din0\[24\]
-dcache_dffram_din0\[25\]
-dcache_dffram_din0\[26\]
-dcache_dffram_din0\[27\]
-dcache_dffram_din0\[28\]
-dcache_dffram_din0\[29\]
-dcache_dffram_din0\[30\]
-dcache_dffram_din0\[31\]
-dcache_dffram_cs0
-dcache_dffram_addr0\[7\]
-dcache_dffram_addr0\[6\]
-dcache_dffram_addr0\[5\]
-dcache_dffram_addr0\[4\]
-dcache_dffram_addr0\[3\]
-dcache_dffram_addr0\[2\]
-dcache_dffram_addr0\[1\]
-dcache_dffram_addr0\[0\]
-dcache_dffram_wmask0\[3\]
-dcache_dffram_wmask0\[2\]
-dcache_dffram_wmask0\[1\]
-dcache_dffram_wmask0\[0\]
-dcache_dffram_dout0\[0\]
-dcache_dffram_dout0\[1\]
-dcache_dffram_dout0\[2\]
-dcache_dffram_dout0\[3\]
-dcache_dffram_dout0\[4\]
-dcache_dffram_dout0\[5\]
-dcache_dffram_dout0\[6\]
-dcache_dffram_dout0\[7\]
-dcache_dffram_dout0\[8\]
-dcache_dffram_dout0\[9\]
-dcache_dffram_dout0\[10\]
-dcache_dffram_dout0\[11\]
-dcache_dffram_dout0\[12\]
-dcache_dffram_dout0\[13\]
-dcache_dffram_dout0\[14\]
-dcache_dffram_dout0\[15\]
-dcache_dffram_dout0\[16\]
-dcache_dffram_dout0\[17\]
-dcache_dffram_dout0\[18\]
-dcache_dffram_dout0\[19\]
-dcache_dffram_dout0\[20\]
-dcache_dffram_dout0\[21\]
-dcache_dffram_dout0\[22\]
-dcache_dffram_dout0\[23\]
-dcache_dffram_dout0\[24\]
-dcache_dffram_dout0\[25\]
-dcache_dffram_dout0\[26\]
-dcache_dffram_dout0\[27\]
-dcache_dffram_dout0\[28\]
-dcache_dffram_dout0\[29\]
-dcache_dffram_dout0\[30\]
-dcache_dffram_dout0\[31\]
-
-dcache_dffram_clk1          0300 0 2
-dcache_dffram_din1\[0\]
-dcache_dffram_din1\[1\]
-dcache_dffram_din1\[2\]
-dcache_dffram_din1\[3\]
-dcache_dffram_din1\[4\]
-dcache_dffram_din1\[5\]
-dcache_dffram_din1\[6\]
-dcache_dffram_din1\[7\]
-dcache_dffram_din1\[8\]
-dcache_dffram_din1\[9\]
-dcache_dffram_din1\[10\]
-dcache_dffram_din1\[11\]
-dcache_dffram_din1\[12\]
-dcache_dffram_din1\[13\]
-dcache_dffram_din1\[14\]
-dcache_dffram_din1\[15\]
-dcache_dffram_din1\[16\]
-dcache_dffram_din1\[17\]
-dcache_dffram_din1\[18\]
-dcache_dffram_din1\[19\]
-dcache_dffram_din1\[20\]
-dcache_dffram_din1\[21\]
-dcache_dffram_din1\[22\]
-dcache_dffram_din1\[23\]
-dcache_dffram_din1\[24\]
-dcache_dffram_din1\[25\]
-dcache_dffram_din1\[26\]
-dcache_dffram_din1\[27\]
-dcache_dffram_din1\[28\]
-dcache_dffram_din1\[29\]
-dcache_dffram_din1\[30\]
-dcache_dffram_din1\[31\]
-dcache_dffram_cs1
-dcache_dffram_addr1\[7\]
-dcache_dffram_addr1\[6\]
-dcache_dffram_addr1\[5\]
-dcache_dffram_addr1\[4\]
-dcache_dffram_addr1\[3\]
-dcache_dffram_addr1\[2\]
-dcache_dffram_addr1\[1\]
-dcache_dffram_addr1\[0\]
-dcache_dffram_wmask1\[3\]
-dcache_dffram_wmask1\[2\]
-dcache_dffram_wmask1\[1\]
-dcache_dffram_wmask1\[0\]
-dcache_dffram_dout1\[0\]
-dcache_dffram_dout1\[1\]
-dcache_dffram_dout1\[2\]
-dcache_dffram_dout1\[3\]
-dcache_dffram_dout1\[4\]
-dcache_dffram_dout1\[5\]
-dcache_dffram_dout1\[6\]
-dcache_dffram_dout1\[7\]
-dcache_dffram_dout1\[8\]
-dcache_dffram_dout1\[9\]
-dcache_dffram_dout1\[10\]
-dcache_dffram_dout1\[11\]
-dcache_dffram_dout1\[12\]
-dcache_dffram_dout1\[13\]
-dcache_dffram_dout1\[14\]
-dcache_dffram_dout1\[15\]
-dcache_dffram_dout1\[16\]
-dcache_dffram_dout1\[17\]
-dcache_dffram_dout1\[18\]
-dcache_dffram_dout1\[19\]
-dcache_dffram_dout1\[20\]
-dcache_dffram_dout1\[21\]
-dcache_dffram_dout1\[22\]
-dcache_dffram_dout1\[23\]
-dcache_dffram_dout1\[24\]
-dcache_dffram_dout1\[25\]
-dcache_dffram_dout1\[26\]
-dcache_dffram_dout1\[27\]
-dcache_dffram_dout1\[28\]
-dcache_dffram_dout1\[29\]
-dcache_dffram_dout1\[30\]
-dcache_dffram_dout1\[31\]
-
-#S
-icache_dffram_clk0        0000 0 2
-icache_dffram_dout0\[0\]  
-icache_dffram_dout0\[1\]
-icache_dffram_dout0\[2\]
-icache_dffram_dout0\[3\]
-icache_dffram_dout0\[4\]
-icache_dffram_dout0\[5\]
-icache_dffram_dout0\[6\]
-icache_dffram_dout0\[7\]
-icache_dffram_dout0\[8\]
-icache_dffram_dout0\[9\]
-icache_dffram_dout0\[10\]
-icache_dffram_dout0\[11\]
-icache_dffram_dout0\[12\]
-icache_dffram_dout0\[13\]
-icache_dffram_dout0\[14\]
-icache_dffram_dout0\[15\]
-icache_dffram_dout0\[16\]
-icache_dffram_dout0\[17\]
-icache_dffram_dout0\[18\]
-icache_dffram_dout0\[19\]
-icache_dffram_dout0\[20\]
-icache_dffram_dout0\[21\]
-icache_dffram_dout0\[22\]
-icache_dffram_dout0\[23\]
-icache_dffram_dout0\[24\]
-icache_dffram_dout0\[25\]
-icache_dffram_dout0\[26\]
-icache_dffram_dout0\[27\]
-icache_dffram_dout0\[28\]
-icache_dffram_dout0\[29\]
-icache_dffram_dout0\[30\]
-icache_dffram_dout0\[31\]
-icache_dffram_cs0
-icache_dffram_addr0\[7\]
-icache_dffram_addr0\[6\]
-icache_dffram_addr0\[5\]
-icache_dffram_addr0\[4\]
-icache_dffram_addr0\[3\]
-icache_dffram_addr0\[2\]
-icache_dffram_addr0\[1\]
-icache_dffram_addr0\[0\]
-icache_dffram_wmask0\[3\]
-icache_dffram_wmask0\[2\]
-icache_dffram_wmask0\[1\]
-icache_dffram_wmask0\[0\]
-icache_dffram_din0\[0\]
-icache_dffram_din0\[1\]
-icache_dffram_din0\[2\]
-icache_dffram_din0\[3\]
-icache_dffram_din0\[4\]
-icache_dffram_din0\[5\]
-icache_dffram_din0\[6\]
-icache_dffram_din0\[7\]
-icache_dffram_din0\[8\]
-icache_dffram_din0\[9\]
-icache_dffram_din0\[10\]
-icache_dffram_din0\[11\]
-icache_dffram_din0\[12\]
-icache_dffram_din0\[13\]
-icache_dffram_din0\[14\]
-icache_dffram_din0\[15\]
-icache_dffram_din0\[16\]
-icache_dffram_din0\[17\]
-icache_dffram_din0\[18\]
-icache_dffram_din0\[19\]
-icache_dffram_din0\[20\]
-icache_dffram_din0\[21\]
-icache_dffram_din0\[22\]
-icache_dffram_din0\[23\]
-icache_dffram_din0\[24\]
-icache_dffram_din0\[25\]
-icache_dffram_din0\[26\]
-icache_dffram_din0\[27\]
-icache_dffram_din0\[28\]
-icache_dffram_din0\[29\]
-icache_dffram_din0\[30\]
-icache_dffram_din0\[31\]
-
-icache_dffram_clk1          0300 0 2
-icache_dffram_dout1\[0\]
-icache_dffram_dout1\[1\]
-icache_dffram_dout1\[2\]
-icache_dffram_dout1\[3\]
-icache_dffram_dout1\[4\]
-icache_dffram_dout1\[5\]
-icache_dffram_dout1\[6\]
-icache_dffram_dout1\[7\]
-icache_dffram_dout1\[8\]
-icache_dffram_dout1\[9\]
-icache_dffram_dout1\[10\]
-icache_dffram_dout1\[11\]
-icache_dffram_dout1\[12\]
-icache_dffram_dout1\[13\]
-icache_dffram_dout1\[14\]
-icache_dffram_dout1\[15\]
-icache_dffram_dout1\[16\]
-icache_dffram_dout1\[17\]
-icache_dffram_dout1\[18\]
-icache_dffram_dout1\[19\]
-icache_dffram_dout1\[20\]
-icache_dffram_dout1\[21\]
-icache_dffram_dout1\[22\]
-icache_dffram_dout1\[23\]
-icache_dffram_dout1\[24\]
-icache_dffram_dout1\[25\]
-icache_dffram_dout1\[26\]
-icache_dffram_dout1\[27\]
-icache_dffram_dout1\[28\]
-icache_dffram_dout1\[29\]
-icache_dffram_dout1\[30\]
-icache_dffram_dout1\[31\]
-icache_dffram_cs1
-icache_dffram_addr1\[7\]
-icache_dffram_addr1\[6\]
-icache_dffram_addr1\[5\]
-icache_dffram_addr1\[4\]
-icache_dffram_addr1\[3\]
-icache_dffram_addr1\[2\]
-icache_dffram_addr1\[1\]
-icache_dffram_addr1\[0\]
-icache_dffram_wmask1\[3\]
-icache_dffram_wmask1\[2\]
-icache_dffram_wmask1\[1\]
-icache_dffram_wmask1\[0\]
-icache_dffram_din1\[0\]
-icache_dffram_din1\[1\]
-icache_dffram_din1\[2\]
-icache_dffram_din1\[3\]
-icache_dffram_din1\[4\]
-icache_dffram_din1\[5\]
-icache_dffram_din1\[6\]
-icache_dffram_din1\[7\]
-icache_dffram_din1\[8\]
-icache_dffram_din1\[9\]
-icache_dffram_din1\[10\]
-icache_dffram_din1\[11\]
-icache_dffram_din1\[12\]
-icache_dffram_din1\[13\]
-icache_dffram_din1\[14\]
-icache_dffram_din1\[15\]
-icache_dffram_din1\[16\]
-icache_dffram_din1\[17\]
-icache_dffram_din1\[18\]
-icache_dffram_din1\[19\]
-icache_dffram_din1\[20\]
-icache_dffram_din1\[21\]
-icache_dffram_din1\[22\]
-icache_dffram_din1\[23\]
-icache_dffram_din1\[24\]
-icache_dffram_din1\[25\]
-icache_dffram_din1\[26\]
-icache_dffram_din1\[27\]
-icache_dffram_din1\[28\]
-icache_dffram_din1\[29\]
-icache_dffram_din1\[30\]
-icache_dffram_din1\[31\]
-
-riscv_debug\[0\]      600  0 2
-riscv_debug\[1\]
-riscv_debug\[2\]
-riscv_debug\[3\]
-riscv_debug\[4\]
-riscv_debug\[5\]
-riscv_debug\[6\]
-riscv_debug\[7\]
-riscv_debug\[8\]
-riscv_debug\[9\]
-riscv_debug\[10\]
-riscv_debug\[11\]
-riscv_debug\[12\]
-riscv_debug\[13\]
-riscv_debug\[14\]
-riscv_debug\[15\]
-riscv_debug\[16\]
-riscv_debug\[17\]
-riscv_debug\[18\]
-riscv_debug\[19\]
-riscv_debug\[20\]
-riscv_debug\[21\]
-riscv_debug\[22\]
-riscv_debug\[23\]
-riscv_debug\[24\]
-riscv_debug\[25\]
-riscv_debug\[26\]
-riscv_debug\[27\]
-riscv_debug\[28\]
-riscv_debug\[29\]
-riscv_debug\[30\]
-riscv_debug\[31\]
-riscv_debug\[32\]
-riscv_debug\[33\]
-riscv_debug\[34\]
-riscv_debug\[35\]
-riscv_debug\[36\]
-riscv_debug\[37\]
-riscv_debug\[38\]
-riscv_debug\[39\]
-riscv_debug\[40\]
-riscv_debug\[41\]
-riscv_debug\[42\]
-riscv_debug\[43\]
-riscv_debug\[44\]
-riscv_debug\[45\]
-riscv_debug\[46\]
-riscv_debug\[47\]
-riscv_debug\[48\]
-riscv_debug\[49\]
-riscv_debug\[50\]
-riscv_debug\[51\]
-riscv_debug\[52\]
-riscv_debug\[53\]
-riscv_debug\[54\]
-riscv_debug\[55\]
-riscv_debug\[56\]
-riscv_debug\[57\]
-riscv_debug\[58\]
-riscv_debug\[59\]
-riscv_debug\[60\]
-riscv_debug\[61\]
-riscv_debug\[62\]
-riscv_debug\[63\]
-
-
-wb_rst_n          700 0 2
-pwrup_rst_n       
-rst_n        
-core_clk              
-core_clk_mclk              
-rtc_clk             
-cpu_rst_n           
diff --git a/openlane/yifive/sta.tcl b/openlane/yifive/sta.tcl
deleted file mode 100644
index 8168d16..0000000
--- a/openlane/yifive/sta.tcl
+++ /dev/null
@@ -1,95 +0,0 @@
-# SPDX-FileCopyrightText:  2021 , Dinesh Annayya
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# SPDX-License-Identifier: Apache-2.0
-# SPDX-FileContributor: Modified by Dinesh Annayya <dinesha@opencores.org>
-
-set ::env(LIB_FASTEST) "$::env(PDK_ROOT)/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__ff_n40C_1v95.lib"
-set ::env(LIB_TYPICAL) "$::env(PDK_ROOT)/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib"
-set ::env(LIB_SLOWEST) "$::env(PDK_ROOT)/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__ss_100C_1v60.lib"
-set ::env(CURRENT_NETLIST) ../user_project_wrapper/netlist/syntacore.v
-set ::env(DESIGN_NAME) "scr1_top_wb"
-set ::env(CURRENT_SPEF) ../../spef/scr1_top_wb.spef
-set ::env(BASE_SDC_FILE) "base.sdc"
-set ::env(SYNTH_DRIVING_CELL) "sky130_fd_sc_hd__inv_8"
-set ::env(SYNTH_DRIVING_CELL_PIN) "Y"
-set ::env(SYNTH_CAP_LOAD) "17.65"
-set ::env(WIRE_RC_LAYER) "met1"
-
-
-set_cmd_units -time ns -capacitance pF -current mA -voltage V -resistance kOhm -distance um
-define_corners wc bc tt
-read_liberty -corner bc $::env(LIB_FASTEST)
-read_liberty -corner wc $::env(LIB_SLOWEST)
-read_liberty -corner tt $::env(LIB_TYPICAL)
-
-read_verilog $::env(CURRENT_NETLIST)
-link_design  $::env(DESIGN_NAME)
-
-read_spef  $::env(CURRENT_SPEF)
-
-read_sdc -echo $::env(BASE_SDC_FILE)
-
-# check for missing constraints
-check_setup  -verbose > unconstraints.rpt
-
-set_operating_conditions -analysis_type single
-# Propgate the clock
-set_propagated_clock [all_clocks]
-
-report_tns
-report_wns
-#report_power 
-
-echo "################ CORNER : WC (SLOW) TIMING Report ###################" > timing_ss_max.rpt
-report_checks -unique -path_delay max -slack_max -0.0 -group_count 100   -corner wc  -format full_clock_expanded >> timing_ss_max.rpt
-report_checks -group_count 100 -path_delay max  -path_group  wbm_clk_i   -corner wc  -format full_clock_expanded >> timing_ss_max.rpt
-report_checks -group_count 100 -path_delay max  -path_group  wbs_clk_i   -corner wc  -format full_clock_expanded >> timing_ss_max.rpt
-report_checks -group_count 100 -path_delay max  -path_group  cpu_clk     -corner wc  -format full_clock_expanded >> timing_ss_max.rpt
-report_checks -group_count 100 -path_delay max  -path_group  rtc_clk     -corner wc  -format full_clock_expanded >> timing_ss_max.rpt
-report_checks -group_count 100 -path_delay max  -path_group  line_clk    -corner wc  -format full_clock_expanded >> timing_ss_max.rpt
-report_checks -path_delay max   -corner wc >> timing_ff_max.rpt
-
-echo "################ CORNER : BC (SLOW) TIMING Report ###################" > timing_ff_min.rpt
-report_checks -unique -path_delay min -slack_min -0.0 -group_count 100   -corner bc  -format full_clock_expanded >> timing_ff_min.rpt
-report_checks -group_count 100  -path_delay min -path_group  wbm_clk_i   -corner bc  -format full_clock_expanded >> timing_ff_min.rpt
-report_checks -group_count 100  -path_delay min -path_group  wbs_clk_i   -corner bc  -format full_clock_expanded >> timing_ff_min.rpt
-report_checks -group_count 100  -path_delay min -path_group  cpu_clk     -corner bc  -format full_clock_expanded >> timing_ff_min.rpt
-report_checks -group_count 100  -path_delay min -path_group  rtc_clk     -corner bc  -format full_clock_expanded >> timing_ff_min.rpt
-report_checks -group_count 100  -path_delay min -path_group  line_clk    -corner bc  -format full_clock_expanded >> timing_ff_min.rpt
-report_checks -path_delay min  -corner bc >> timing_min.rpt
-
-echo "################ CORNER : TT (MAX) TIMING Report ###################" > timing_tt_max.rpt 
-report_checks -unique -path_delay max -slack_min -0.0 -group_count 100 -corner tt  -format full_clock_expanded >> timing_tt_max.rpt
-report_checks -group_count 100  -path_delay max -path_group wbm_clk_i  -corner tt  -format full_clock_expanded >> timing_tt_max.rpt
-report_checks -group_count 100  -path_delay max -path_group wbs_clk_i  -corner tt  -format full_clock_expanded >> timing_tt_max.rpt
-report_checks -group_count 100  -path_delay max -path_group cpu_clk    -corner tt  -format full_clock_expanded >> timing_tt_max.rpt
-report_checks -group_count 100  -path_delay max -path_group rtc_clk    -corner tt  -format full_clock_expanded >> timing_tt_max.rpt
-report_checks -group_count 100  -path_delay max -path_group line_clk   -corner tt  -format full_clock_expanded >> timing_tt_max.rpt
-report_checks -path_delay max  -corner tt >> timing_tt_max.rpt
-
-echo "################ CORNER : TT (MIN) TIMING Report ###################" > timing_tt_min.rpt
-report_checks -unique -path_delay min -slack_min -0.0 -group_count 100   -corner tt  -format full_clock_expanded >> timing_tt_min.rpt
-report_checks -group_count 100  -path_delay min -path_group  wbm_clk_i   -corner tt  -format full_clock_expanded >> timing_tt_min.rpt
-report_checks -group_count 100  -path_delay min -path_group  wbs_clk_i   -corner tt  -format full_clock_expanded >> timing_tt_min.rpt
-report_checks -group_count 100  -path_delay min -path_group  cpu_clk     -corner tt  -format full_clock_expanded >> timing_tt_min.rpt
-report_checks -group_count 100  -path_delay min -path_group  rtc_clk     -corner tt  -format full_clock_expanded >> timing_tt_min.rpt
-report_checks -group_count 100  -path_delay min -path_group  line_clk    -corner tt  -format full_clock_expanded >> timing_tt_min.rpt
-report_checks -path_delay min  -corner tt >> timing_tt_min.rpt
-
-
-
-
-report_checks -path_delay min_max 
-
-#exit