diff --git a/.gitignore b/.gitignore
index 7a28c763970438c12d72db5d97db50efd7417f64..9274f7c87daff3001d5bb8573182efc67291f9d5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,19 @@
 .project
 .ecmproject
+.metadata
 
 ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/cln28ht
+ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/cln28ht_pmk
+ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/cln28ht_ret
+ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/bump_lib
+ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/io_lib
+ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/pad_lib
 ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/.*
+ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/DRC
+ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/pna_output
+ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/legalizer_debug_plots
+ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/RAIL_DATABASE
+ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/clock_auto_exceptions*
 ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/HDL_LIBRARIES
 ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/PreFrameCheck
 ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/sram_32k
diff --git a/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/FC_flow.tcl b/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/FC_flow.tcl
index 14f6938df6ca6548577b3f04b4942c0a0751a4ee..9d20a616c1b2188d5ff837683d062781e4f34361 100644
--- a/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/FC_flow.tcl
+++ b/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/FC_flow.tcl
@@ -7,20 +7,39 @@ set LOG_DIR $env(SOCLABS_SRAM_CHIPLET_DIR)/imp/ASIC/SRAM_CHIPLET/logs
 redirect -tee -file $LOG_DIR/01_design_setup.log {source ./design_setup.tcl}
 
 # Floorplan setup
-redirect -tee -file $LOG_DIR/02_init_floorplan.log {initialize_floorplan -control_type die -use_site_row -side_length {1695 1530} -core_offset {120}}
+redirect -tee -file $LOG_DIR/02_init_floorplan.log {initialize_floorplan -control_type die -use_site_row -side_length {2171 2640} -core_offset {160}}
 redirect -tee -file $LOG_DIR/03_floorplan.log {source ./floorplan/fp.tcl}
 
+
+
+source ./io_plan.tcl
+save_lib sram_chiplet.dlib
+
 # Read Constraints
 redirect -tee -file $LOG_DIR/04_constraints.log {read_sdc ../constraints/sram_chiplet.sdc}
 
 # Power Plan
+load_upf ../sram_chiplet.upf
 redirect -tee -file $LOG_DIR/05_power_plan.log {source ./power_plan.tcl}
 
+# Route RDL
+place_io
+route_rdl_flip_chip -layers AP
+
+create_io_filler_cells -io_guides [get_io_guides {main_io.top main_io.left main_io.right main_io.bottom}] \
+	-reference_cells {PFILLER20_G PFILLER10_G PFILLER5_G PFILLER1_G PFILLER05_G PFILLER0005_G} \
+	-prefix IOFILL
+
 # Init coarse placement
 redirect -tee -file $LOG_DIR/06_init_placement.log {source ./init_placement.tcl}
+current_corner default
+set_operating_conditions -max_library cln28ht -max ffg_cbestt_min_0p99v_m40c -min_library cln28ht -min ssg_cworstt_max_0p81v_125c
+# CHECK THE TIMING ANALYSIS IN THE GUI
+
 
 # Physical aware synthesis
 redirect -tee -file $LOG_DIR/07_compile.log {compile_fusion}
+set_operating_conditions -max_library cln28ht -max ffg_cbestt_min_0p99v_m40c -min_library cln28ht -min ssg_cworstt_max_0p81v_125c
 save_lib sram_chiplet.dlib
 redirect -tee -file $REPORT_DIR/timing_01_compile.rep {report_timing}
 
@@ -31,7 +50,7 @@ save_lib sram_chiplet.dlib
 redirect -tee -file $REPORT_DIR/timing_02_opt_place.rep {report_timing}
 
 # CTS
-redirect -tee -file $LOG_DIR/08_CTS.log {synthesize_clock_trees -clock {PLL_CLK REF_CLK TLX_IN_FWD_CLK TLX_OUT_REV_CLK}}
+redirect -tee -file $LOG_DIR/08_CTS.log {synthesize_clock_trees -clock [get_clocks]}
 save_lib sram_chiplet.dlib
 redirect -tee -file $REPORT_DIR/timing_03_CTS.rep {report_timing}
 
@@ -40,6 +59,7 @@ redirect -tee -file $LOG_DIR/10_clock_opt.log {clock_opt}
 save_lib sram_chiplet.dlib
 redirect -tee -file $REPORT_DIR/timing_04_clock_opt.rep {report_timing}
 
+create_stdcell_fillers -lib_cells {FILL128_A12PP140ZTS_C35 FILL16_A12PP140ZTS_C35 FILL1_A12PP140ZTS_C35 FILL2_A12PP140ZTS_C35 FILL32_A12PP140ZTS_C35 FILL3_A12PP140ZTS_C35 FILL4_A12PP140ZTS_C35}
 
 # Route
 redirect -tee -file $LOG_DIR/11_route.log {route_auto}
@@ -50,3 +70,32 @@ redirect -tee -file $REPORT_DIR/timing_05_route.rep {report_timing}
 redirect -tee -file $LOG_DIR/12_route_optimisation.log {optimize_routes}
 save_lib sram_chiplet.dlib
 redirect -tee -file $REPORT_DIR/timing_06_route_opt.rep {report_timing}
+
+## Paths Please Edit for your system
+set cln28ht_tech_path           /home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/arm_tech/r1p0
+set standard_cell_base_path     /home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/sc12mcpp140z_base_svt_c35/r2p0
+set pmk_base_path               /home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/sc12mcpp140z_pmk_svt_c35/r1p0
+set ret_base_path               /home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/sc12mcpp140z_rklo_lvt_svt_c30_c35/r1p0
+set Synopsys_PLL_dir /home/dwn1c21/SoC-Labs/Synopsys_ip/IP/PLL/synopsys/dwc_pll3ghz_tsmc28hpcp/1.10a/macro
+set Synopsys_TS_dir /home/dwn1c21/SoC-Labs/Synopsys_ip/IP/Southampton_28hpcp_pd_vm_ts_vmps_pvtc/1.01b
+set Synopsys_PD_dir /home/dwn1c21/SoC-Labs/Synopsys_ip/IP/Southampton_28hpcp_pd_vm_ts_vmps_pvtc/dwc_sensors_pd_tsmc28hpcp_1.00a/synopsys/dwc_sensors_pd_tsmc28hpcp/1.00a
+set Synopsys_VM_dir /home/dwn1c21/SoC-Labs/Synopsys_ip/IP/Southampton_28hpcp_pd_vm_ts_vmps_pvtc/dwc_sensors_vm_shrink_tsmc28hpcp_1.00a/synopsys/dwc_sensors_vm_shrink_tsmc28hpcp/1.00a
+
+set standard_cell_gds_file      $standard_cell_base_path/gds2/sc12mcpp140z_cln28ht_base_svt_c35.gds2
+set pmk_gds_file                $pmk_base_path/gds2/sc12mcpp140z_cln28ht_pmk_svt_c35.gds2
+set ret_gds_file                $ret_base_path/gds2/sc12mcpp140z_cln28ht_rklo_lvt_svt_c30_c35.gds2
+set sram_32k_gds_file           $env(SOCLABS_SRAM_CHIPLET_DIR)/memories/sram_32b_32k/sram_32b_32k.gds2
+set sram_16k_gds_file           $env(SOCLABS_SRAM_CHIPLET_DIR)/memories/sram_32b_16k/sram_32b_16k.gds2
+set Synopsys_PLL_gds_file 	$Synopsys_PLL_dir/gds/5m4x0z/dwc_z19606ts_ns.gds
+set Synopsys_TS_gds_file 	$Synopsys_TS_dir/gdsii/mr74127_v1r1.gds
+set Synopsys_PD_gds_file    	$Synopsys_PD_dir/gds/mr74125_v1r2.gds
+set Synopsys_VM_gds_file    	$Synopsys_VM_dir/gdsii/mr74140_v1r1.gds
+
+set OUT_DIR $env(SOCLABS_SRAM_CHIPLET_DIR)/imp/ASIC/SRAM_CHIPLET
+
+write_gds -lib_cell_view frame -layer_map /home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/arm_tech/r1p0/milkyway/1p8m_5x2z_utalrdl/stream_out_layer_map -allow_design_mismatch -long_names -hierarchy all -units 1000 -merge_files [list $standard_cell_gds_file $pmk_gds_file $ret_gds_file $sram_32k_gds_file $sram_16k_gds_file $Synopsys_PLL_gds_file $Synopsys_TS_gds_file $Synopsys_PD_gds_file] $OUT_DIR/sram_chiplet.gds 
+write_verilog -top_module_first -hierarchy all \
+	-exclude {corner_cells filler_cells flip_chip_pad_cells pad_spacer_cells pg_netlist spare_cells} $OUT_DIR/sram_chiplet_gate.v
+write_sdf $OUT_DIR/sram_chiplet_gate.sdf
+
+
diff --git a/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/calibre_drc b/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/calibre_drc
new file mode 100644
index 0000000000000000000000000000000000000000..528c3e36d6facfecadc825057c0c3045a5130481
--- /dev/null
+++ b/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/calibre_drc
@@ -0,0 +1,8 @@
+*drcRulesFile: /home/dwn1c21/SoC-Labs/phys_ip/TSMC/28/CMOS/util/LOGIC_TopMz_DRC/CLN28HP_8M_5X2Z_002.22a.encrypt
+*drcRunDir: /home/dwn1c21/SoC-Labs/TAPEOUT/jan2025/sram_chiplet/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/DRC
+*drcLayoutPaths: /home/dwn1c21/SoC-Labs/TAPEOUT/jan2025/sram_chiplet/imp/ASIC/SRAM_CHIPLET/sram_chiplet.gds
+*drcLayoutPrimary: SRAM_chiplet
+*cmnRunMT: 1
+*cmnSlaveHosts: {use {}} {hostName {}} {cpuCount {}} {a32a64 {}} {rsh {}} {maxMem {}} {workingDir {}} {layerDir {}} {mgcLibPath {}} {launchName {}}
+*cmnLSFSlaveTbl: {use 1} {totalCpus 1} {minCpus 1} {architecture {{}}} {minMemory {{}}} {resourceOptions {{}}} {submitOptions {{}}}
+*cmnGridSlaveTbl: {use 1} {totalCpus 1} {minCpus 1} {architecture {{}}} {minMemory {{}}} {resourceOptions {{}}} {submitOptions {{}}}
diff --git a/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/design_setup.tcl b/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/design_setup.tcl
index 4f70550f12c35bc6300002f9029e13da60825bce..fc2e19c89614bf1e3b381848be03ca18c8c19e40 100644
--- a/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/design_setup.tcl
+++ b/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/design_setup.tcl
@@ -1,4 +1,4 @@
-set sc9mcpp240z_base_path /home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/sc9mcpp140z_base_svt_c35/r0p0
+set sc9mcpp240z_base_path /home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/sc12mcpp140z_base_svt_c35/r2p0
 set cln28ht_tech_path /home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/arm_tech/r1p0
 
 set TLU_dir /home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/arm_tech/r1p0/synopsys_tluplus/1p8m_5x2z_utalrdl
@@ -9,11 +9,9 @@ set TLU_rcbest $TLU_dir/rcbest.tluplus
 set TLU_rcworst $TLU_dir/rcworst.tluplus
 set TLU_map $TLU_dir/tluplus.map
 
-
-
 create_lib sram_chiplet.dlib \
-    -technology $cln28ht_tech_path/milkyway/1p8m_5x2z_utalrdl/sc9mcpp140z_tech.tf \
-    -ref_libs {./cln28ht/ ./sram_16k/ ./sram_32k/ ./Synopsys_PLL/ ./Synopsys_PD/ ./Synopsys_TS/ ./Synopsys_VM/}
+    -technology $cln28ht_tech_path/milkyway/1p8m_5x2z_utalrdl/sc12mcpp140z_tech.tf \
+    -ref_libs {./cln28ht/ ./cln28ht_pmk/ ./cln28ht_ret/ ./sram_16k/ ./sram_32k/ ./Synopsys_PLL/ ./Synopsys_PD/ ./Synopsys_TS/ ./Synopsys_VM/ ./io_lib/ ./pad_lib/ ./bump_lib/}
 
 source $env(SOCLABS_SRAM_CHIPLET_DIR)/imp/ASIC/SRAM_CHIPLET/flist/synopsys_flist.tcl
 analyze -format sverilog $env(SOCLABS_SRAM_CHIPLET_DIR)/pad_level/tsmc28nm_hpcp/SRAM_chiplet.sv
@@ -22,7 +20,7 @@ elaborate SRAM_chiplet
 set_top_module SRAM_chiplet
 
 redirect -tee -file ./lib_cell_summary.log {report_lib -cell_summary cln28ht}
-
+redirect -tee -file ./lib_cell_summary.log {report_lib -cell_summary pad_lib}
 read_parasitic_tech -name cbest   -tlup $TLU_cbest -layermap $TLU_map -sanity_check advanced
 read_parasitic_tech -name cworst  -tlup $TLU_cworst -layermap $TLU_map -sanity_check advanced
 read_parasitic_tech -name rcbest  -tlup $TLU_rcbest -layermap $TLU_map -sanity_check advanced
diff --git a/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/floorplan/floorplan.def b/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/floorplan/floorplan.def
index da438bfb918d3c0e7bbae8bc980b91090a213c91..10ae45f8f6d4045dfdba5cd1ea2f37af6112c817 100644
--- a/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/floorplan/floorplan.def
+++ b/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/floorplan/floorplan.def
@@ -2,12 +2,122 @@
 # Fusion Compiler write_def
 # Release      : U-2022.12
 # User Name    : dwn1c21
-# Date         : Thu Sep  5 11:23:09 2024
+# Date         : Tue Dec 17 14:29:32 2024
 # 
 VERSION 5.8 ;
 DIVIDERCHAR "/" ;
 BUSBITCHARS "[]" ;
 DESIGN SRAM_chiplet ;
 UNITS DISTANCE MICRONS 1000 ;
-DIEAREA ( 0 0 ) ( 0 1529700 ) ( 1694880 1529700 ) ( 1694880 0 ) ;
+DIEAREA ( 0 0 ) ( 0 2639600 ) ( 2170940 2639600 ) ( 2170940 0 ) ;
+PINS 108 ;
+ - PAD_REF_CLK + NET PAD_REF_CLK + DIRECTION INPUT + USE CLOCK ;
+ - PAD_aRESETn + NET PAD_aRESETn + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_DL_FWD_RESETn + NET PAD_DL_FWD_RESETn + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_IN_FWD_CLK + NET PAD_IN_FWD_CLK + DIRECTION INPUT + USE CLOCK ;
+ - PAD_IN_REV_CLK + NET PAD_IN_REV_CLK + DIRECTION OUTPUT + USE CLOCK ;
+ - PAD_OUT_FWD_CLK + NET PAD_OUT_FWD_CLK + DIRECTION OUTPUT + USE CLOCK ;
+ - PAD_OUT_REV_CLK + NET PAD_OUT_REV_CLK + DIRECTION INPUT + USE CLOCK ;
+ - PAD_PLL_LOCK_o + NET PAD_PLL_LOCK_o + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_PLL_LOCK_i + NET PAD_PLL_LOCK_i + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_rev_0_tdata[15] + NET PAD_TLX_IN_data_rev_0_tdata[15] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_rev_0_tdata[14] + NET PAD_TLX_IN_data_rev_0_tdata[14] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_rev_0_tdata[13] + NET PAD_TLX_IN_data_rev_0_tdata[13] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_rev_0_tdata[12] + NET PAD_TLX_IN_data_rev_0_tdata[12] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_rev_0_tdata[11] + NET PAD_TLX_IN_data_rev_0_tdata[11] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_rev_0_tdata[10] + NET PAD_TLX_IN_data_rev_0_tdata[10] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_rev_0_tdata[9] + NET PAD_TLX_IN_data_rev_0_tdata[9] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_rev_0_tdata[8] + NET PAD_TLX_IN_data_rev_0_tdata[8] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_rev_0_tdata[7] + NET PAD_TLX_IN_data_rev_0_tdata[7] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_rev_0_tdata[6] + NET PAD_TLX_IN_data_rev_0_tdata[6] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_rev_0_tdata[5] + NET PAD_TLX_IN_data_rev_0_tdata[5] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_rev_0_tdata[4] + NET PAD_TLX_IN_data_rev_0_tdata[4] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_rev_0_tdata[3] + NET PAD_TLX_IN_data_rev_0_tdata[3] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_rev_0_tdata[2] + NET PAD_TLX_IN_data_rev_0_tdata[2] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_rev_0_tdata[1] + NET PAD_TLX_IN_data_rev_0_tdata[1] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_rev_0_tdata[0] + NET PAD_TLX_IN_data_rev_0_tdata[0] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_rev_0_tvalid + NET PAD_TLX_IN_data_rev_0_tvalid + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_rev_0_tready + NET PAD_TLX_IN_data_rev_0_tready + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_IN_flow_rev_0_tdata[2] + NET PAD_TLX_IN_flow_rev_0_tdata[2] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_IN_flow_rev_0_tdata[1] + NET PAD_TLX_IN_flow_rev_0_tdata[1] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_IN_flow_rev_0_tdata[0] + NET PAD_TLX_IN_flow_rev_0_tdata[0] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_IN_flow_rev_0_tvalid + NET PAD_TLX_IN_flow_rev_0_tvalid + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_IN_flow_rev_0_tready + NET PAD_TLX_IN_flow_rev_0_tready + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_IN_flow_fwd_0_tdata[1] + NET PAD_TLX_IN_flow_fwd_0_tdata[1] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_IN_flow_fwd_0_tdata[0] + NET PAD_TLX_IN_flow_fwd_0_tdata[0] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_IN_flow_fwd_0_tvalid + NET PAD_TLX_IN_flow_fwd_0_tvalid + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_IN_flow_fwd_0_tready + NET PAD_TLX_IN_flow_fwd_0_tready + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_fwd_0_tdata[15] + NET PAD_TLX_IN_data_fwd_0_tdata[15] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_fwd_0_tdata[14] + NET PAD_TLX_IN_data_fwd_0_tdata[14] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_fwd_0_tdata[13] + NET PAD_TLX_IN_data_fwd_0_tdata[13] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_fwd_0_tdata[12] + NET PAD_TLX_IN_data_fwd_0_tdata[12] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_fwd_0_tdata[11] + NET PAD_TLX_IN_data_fwd_0_tdata[11] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_fwd_0_tdata[10] + NET PAD_TLX_IN_data_fwd_0_tdata[10] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_fwd_0_tdata[9] + NET PAD_TLX_IN_data_fwd_0_tdata[9] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_fwd_0_tdata[8] + NET PAD_TLX_IN_data_fwd_0_tdata[8] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_fwd_0_tdata[7] + NET PAD_TLX_IN_data_fwd_0_tdata[7] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_fwd_0_tdata[6] + NET PAD_TLX_IN_data_fwd_0_tdata[6] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_fwd_0_tdata[5] + NET PAD_TLX_IN_data_fwd_0_tdata[5] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_fwd_0_tdata[4] + NET PAD_TLX_IN_data_fwd_0_tdata[4] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_fwd_0_tdata[3] + NET PAD_TLX_IN_data_fwd_0_tdata[3] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_fwd_0_tdata[2] + NET PAD_TLX_IN_data_fwd_0_tdata[2] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_fwd_0_tdata[1] + NET PAD_TLX_IN_data_fwd_0_tdata[1] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_fwd_0_tdata[0] + NET PAD_TLX_IN_data_fwd_0_tdata[0] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_fwd_0_tvalid + NET PAD_TLX_IN_data_fwd_0_tvalid + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_IN_data_fwd_0_tready + NET PAD_TLX_IN_data_fwd_0_tready + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_data_rev_1_tdata[15] + NET PAD_TLX_data_rev_1_tdata[15] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_data_rev_1_tdata[14] + NET PAD_TLX_data_rev_1_tdata[14] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_data_rev_1_tdata[13] + NET PAD_TLX_data_rev_1_tdata[13] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_data_rev_1_tdata[12] + NET PAD_TLX_data_rev_1_tdata[12] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_data_rev_1_tdata[11] + NET PAD_TLX_data_rev_1_tdata[11] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_data_rev_1_tdata[10] + NET PAD_TLX_data_rev_1_tdata[10] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_data_rev_1_tdata[9] + NET PAD_TLX_data_rev_1_tdata[9] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_data_rev_1_tdata[8] + NET PAD_TLX_data_rev_1_tdata[8] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_data_rev_1_tdata[7] + NET PAD_TLX_data_rev_1_tdata[7] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_data_rev_1_tdata[6] + NET PAD_TLX_data_rev_1_tdata[6] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_data_rev_1_tdata[5] + NET PAD_TLX_data_rev_1_tdata[5] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_data_rev_1_tdata[4] + NET PAD_TLX_data_rev_1_tdata[4] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_data_rev_1_tdata[3] + NET PAD_TLX_data_rev_1_tdata[3] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_data_rev_1_tdata[2] + NET PAD_TLX_data_rev_1_tdata[2] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_data_rev_1_tdata[1] + NET PAD_TLX_data_rev_1_tdata[1] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_data_rev_1_tdata[0] + NET PAD_TLX_data_rev_1_tdata[0] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_data_rev_1_tvalid + NET PAD_TLX_data_rev_1_tvalid + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_data_rev_1_tready + NET PAD_TLX_data_rev_1_tready + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_flow_rev_1_tdata[2] + NET PAD_TLX_flow_rev_1_tdata[2] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_flow_rev_1_tdata[1] + NET PAD_TLX_flow_rev_1_tdata[1] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_flow_rev_1_tdata[0] + NET PAD_TLX_flow_rev_1_tdata[0] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_flow_rev_1_tvalid + NET PAD_TLX_flow_rev_1_tvalid + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_flow_rev_1_tready + NET PAD_TLX_flow_rev_1_tready + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_flow_fwd_1_tdata[1] + NET PAD_TLX_flow_fwd_1_tdata[1] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_flow_fwd_1_tdata[0] + NET PAD_TLX_flow_fwd_1_tdata[0] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_flow_fwd_1_tvalid + NET PAD_TLX_flow_fwd_1_tvalid + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_flow_fwd_1_tready + NET PAD_TLX_flow_fwd_1_tready + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_TLX_data_fwd_1_tdata[15] + NET PAD_TLX_data_fwd_1_tdata[15] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_data_fwd_1_tdata[14] + NET PAD_TLX_data_fwd_1_tdata[14] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_data_fwd_1_tdata[13] + NET PAD_TLX_data_fwd_1_tdata[13] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_data_fwd_1_tdata[12] + NET PAD_TLX_data_fwd_1_tdata[12] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_data_fwd_1_tdata[11] + NET PAD_TLX_data_fwd_1_tdata[11] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_data_fwd_1_tdata[10] + NET PAD_TLX_data_fwd_1_tdata[10] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_data_fwd_1_tdata[9] + NET PAD_TLX_data_fwd_1_tdata[9] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_data_fwd_1_tdata[8] + NET PAD_TLX_data_fwd_1_tdata[8] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_data_fwd_1_tdata[7] + NET PAD_TLX_data_fwd_1_tdata[7] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_data_fwd_1_tdata[6] + NET PAD_TLX_data_fwd_1_tdata[6] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_data_fwd_1_tdata[5] + NET PAD_TLX_data_fwd_1_tdata[5] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_data_fwd_1_tdata[4] + NET PAD_TLX_data_fwd_1_tdata[4] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_data_fwd_1_tdata[3] + NET PAD_TLX_data_fwd_1_tdata[3] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_data_fwd_1_tdata[2] + NET PAD_TLX_data_fwd_1_tdata[2] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_data_fwd_1_tdata[1] + NET PAD_TLX_data_fwd_1_tdata[1] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_data_fwd_1_tdata[0] + NET PAD_TLX_data_fwd_1_tdata[0] + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_data_fwd_1_tvalid + NET PAD_TLX_data_fwd_1_tvalid + DIRECTION OUTPUT + USE SIGNAL ;
+ - PAD_TLX_data_fwd_1_tready + NET PAD_TLX_data_fwd_1_tready + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_addr_sel[3] + NET PAD_addr_sel[3] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_addr_sel[2] + NET PAD_addr_sel[2] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_addr_sel[1] + NET PAD_addr_sel[1] + DIRECTION INPUT + USE SIGNAL ;
+ - PAD_addr_sel[0] + NET PAD_addr_sel[0] + DIRECTION INPUT + USE SIGNAL ;
+ - AGND + NET AGND + SPECIAL + DIRECTION INPUT + USE GROUND ;
+ - AVDD + NET AVDD + SPECIAL + DIRECTION INPUT + USE POWER ;
+ - AVDDHV + NET AVDDHV + SPECIAL + DIRECTION INPUT + USE POWER ;
+ - VDD + NET VDD + SPECIAL + DIRECTION INPUT + USE POWER ;
+ - VSS + NET VSS + SPECIAL + DIRECTION INPUT + USE GROUND ;
+END PINS
 END DESIGN
diff --git a/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/floorplan/floorplan.tcl b/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/floorplan/floorplan.tcl
index 1bf66cf1039899fd45583b2ea3da72226f2c6192..b8723b2a652866bae7109dd80124d66ac08bacff 100644
--- a/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/floorplan/floorplan.tcl
+++ b/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/floorplan/floorplan.tcl
@@ -1,6 +1,6 @@
 ################################################################################
 #
-# Created by fc write_floorplan on Thu Sep  5 11:23:09 2024
+# Created by fc write_floorplan on Tue Dec 17 14:29:32 2024
 #
 ################################################################################
 
diff --git a/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/floorplan/floorplan_compare_data.txt b/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/floorplan/floorplan_compare_data.txt
index e3843c91279d6e617658099475e3f4fe72e8b41b..643340b7d87f7b7e62fb8119b07206101322b5bd 100644
--- a/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/floorplan/floorplan_compare_data.txt
+++ b/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/floorplan/floorplan_compare_data.txt
@@ -1,6 +1,6 @@
 ################################################################################
 #
-# Created by fc compare_floorplans on Thu Sep  5 11:23:09 2024
+# Created by fc compare_floorplans on Tue Dec 17 14:29:32 2024
 #
 # DO NOT EDIT - automatically generated file
 #
@@ -8,109 +8,128 @@
 
 START SRAM_chiplet
  MACROS
-  u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PVT_ts0.u_snps_PVT_ts0/u_synopsys_ts { {120.0000 390.0600} {360.0000 590.0600} }
-  u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PVT_pd0.u_snps_PVT_pd0/u_synopsys_pd { {120.0000 618.3400} {205.0000 693.3400} }
-  u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PLL.u_snps_PLL/u_snps_PLL { {120.0000 120.0000} {382.5000 360.0000} }
-  u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[0].u_sram_32b_32k { {120.0600 770.0650} {440.7200 1409.7000} }
-  u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[1].u_sram_32b_32k { {440.7200 770.0650} {761.3800 1409.7000} }
-  u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[2].u_sram_32b_32k { {761.3800 770.0650} {1082.0400 1409.7000} }
-  u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[3].u_sram_32b_32k { {1082.0400 770.0650} {1402.7000 1409.7000} }
-  u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[4].u_sram_32b_32k { {1082.0400 120.0000} {1402.7000 759.6350} }
-  u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[5].u_sram_32b_32k { {761.3800 120.0000} {1082.0400 759.6350} }
-  u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[6].u_sram_32b_32k { {440.7200 120.0000} {761.3800 759.6350} }
-  u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/u_sram_32b_16k_0 { {1402.7000 120.0000} {1574.8800 758.0750} }
-  u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/u_sram_32b_16k_1 { {1402.7000 771.6250} {1574.8800 1409.7000} }
+  u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PVT_ts0.u_snps_PVT_ts0/u_synopsys_ts { {479.5000 160.0000} {719.5000 360.0000} }
+  u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PVT_pd0.u_snps_PVT_pd0/u_synopsys_pd { {776.5000 160.0000} {861.5000 235.0000} }
+  u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PLL.u_snps_PLL/u_snps_PLL { {160.0000 160.0000} {422.5000 400.0000} }
+  u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/g_srams[0].u_sram_32b_32k { {160.0000 438.9100} {480.6600 1078.5450} }
+  u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/g_srams[1].u_sram_32b_32k { {495.6600 438.9100} {816.3200 1078.5450} }
+  u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/g_srams[2].u_sram_32b_32k { {831.3200 438.9100} {1151.9800 1078.5450} }
+  u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/gen_sram.u_sram_32b_32k_N { {1166.9800 430.9100} {1487.6400 1070.5450} }
+  u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/g_srams[0].u_sram_32b_32k { {160.0000 1824.1800} {480.6600 2463.8150} }
+  u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/g_srams[1].u_sram_32b_32k { {495.6600 1824.1800} {816.3200 2463.8150} }
+  u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/g_srams[2].u_sram_32b_32k { {160.0000 1131.5450} {480.6600 1771.1800} }
+  u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/gen_sram.u_sram_32b_32k_N { {495.6600 1131.5450} {816.3200 1771.1800} }
+  u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/g_srams[0].u_sram_32b_32k { {831.3200 1824.1800} {1151.9800 2463.8150} }
+  u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/g_srams[1].u_sram_32b_32k { {1166.9800 1824.1800} {1487.6400 2463.8150} }
+  u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/g_srams[2].u_sram_32b_32k { {831.3200 1131.5450} {1151.9800 1771.1800} }
+  u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/gen_sram.u_sram_32b_32k_N { {1166.9800 1127.5450} {1487.6400 1767.1800} }
+  u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/g_srams[0].u_sram_32b_32k { {1502.6400 1824.1800} {1823.3000 2463.8150} }
+  u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/g_srams[1].u_sram_32b_32k { {1502.6400 1127.5450} {1823.3000 1767.1800} }
+  u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/g_srams[2].u_sram_32b_32k { {1502.6400 430.9100} {1823.3000 1070.5450} }
+  u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/gen_split_sram.u_sram_32b_16k_0 { {1838.3000 1824.1800} {2010.4800 2462.2550} }
+  u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/gen_split_sram.u_sram_32b_16k_1 { {1838.3000 1129.1050} {2010.4800 1767.1800} }
  PINS
-  clk_in { {847.4400 764.8500} {847.4401 764.8501} }
-  aresetn { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_rev_0_tdata[15] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_rev_0_tdata[14] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_rev_0_tdata[13] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_rev_0_tdata[12] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_rev_0_tdata[11] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_rev_0_tdata[10] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_rev_0_tdata[9] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_rev_0_tdata[8] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_rev_0_tdata[7] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_rev_0_tdata[6] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_rev_0_tdata[5] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_rev_0_tdata[4] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_rev_0_tdata[3] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_rev_0_tdata[2] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_rev_0_tdata[1] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_rev_0_tdata[0] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_rev_0_tvalid { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_rev_0_tready { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_flow_rev_0_tdata[2] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_flow_rev_0_tdata[1] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_flow_rev_0_tdata[0] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_flow_rev_0_tvalid { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_flow_rev_0_tready { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_flow_fwd_0_tdata[1] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_flow_fwd_0_tdata[0] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_flow_fwd_0_tvalid { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_flow_fwd_0_tready { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_fwd_0_tdata[15] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_fwd_0_tdata[14] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_fwd_0_tdata[13] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_fwd_0_tdata[12] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_fwd_0_tdata[11] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_fwd_0_tdata[10] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_fwd_0_tdata[9] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_fwd_0_tdata[8] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_fwd_0_tdata[7] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_fwd_0_tdata[6] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_fwd_0_tdata[5] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_fwd_0_tdata[4] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_fwd_0_tdata[3] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_fwd_0_tdata[2] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_fwd_0_tdata[1] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_fwd_0_tdata[0] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_fwd_0_tvalid { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_IN_data_fwd_0_tready { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_rev_1_tdata[15] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_rev_1_tdata[14] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_rev_1_tdata[13] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_rev_1_tdata[12] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_rev_1_tdata[11] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_rev_1_tdata[10] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_rev_1_tdata[9] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_rev_1_tdata[8] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_rev_1_tdata[7] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_rev_1_tdata[6] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_rev_1_tdata[5] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_rev_1_tdata[4] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_rev_1_tdata[3] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_rev_1_tdata[2] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_rev_1_tdata[1] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_rev_1_tdata[0] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_rev_1_tvalid { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_rev_1_tready { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_flow_rev_1_tdata[2] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_flow_rev_1_tdata[1] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_flow_rev_1_tdata[0] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_flow_rev_1_tvalid { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_flow_rev_1_tready { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_flow_fwd_1_tdata[1] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_flow_fwd_1_tdata[0] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_flow_fwd_1_tvalid { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_flow_fwd_1_tready { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_fwd_1_tdata[15] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_fwd_1_tdata[14] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_fwd_1_tdata[13] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_fwd_1_tdata[12] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_fwd_1_tdata[11] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_fwd_1_tdata[10] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_fwd_1_tdata[9] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_fwd_1_tdata[8] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_fwd_1_tdata[7] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_fwd_1_tdata[6] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_fwd_1_tdata[5] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_fwd_1_tdata[4] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_fwd_1_tdata[3] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_fwd_1_tdata[2] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_fwd_1_tdata[1] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_fwd_1_tdata[0] { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_fwd_1_tvalid { {847.4400 764.8500} {847.4401 764.8501} }
-  TLX_data_fwd_1_tready { {847.4400 764.8500} {847.4401 764.8501} }
+  PAD_REF_CLK { {70.0500 806.6250} {73.0500 822.6750} }
+  PAD_aRESETn { {70.0500 1140.6250} {73.0500 1156.6750} }
+  PAD_DL_FWD_RESETn { {70.0500 1307.6250} {73.0500 1323.6750} }
+  PAD_IN_FWD_CLK { {1578.4750 2566.5500} {1594.5250 2569.5500} }
+  PAD_IN_REV_CLK { {70.0500 2071.4750} {73.0500 2087.5250} }
+  PAD_OUT_FWD_CLK { {1578.4750 70.0500} {1594.5250 73.0500} }
+  PAD_OUT_REV_CLK { {70.0500 401.4750} {73.0500 417.5250} }
+  PAD_PLL_LOCK_o { {2097.8900 305.6250} {2100.8900 321.6750} }
+  PAD_PLL_LOCK_i { {2097.8900 2309.6250} {2100.8900 2325.6750} }
+  PAD_TLX_IN_data_rev_0_tdata[15] { {2097.8900 1904.4750} {2100.8900 1920.5250} }
+  PAD_TLX_IN_data_rev_0_tdata[14] { {1516.4500 2566.5500} {1532.5000 2569.5500} }
+  PAD_TLX_IN_data_rev_0_tdata[13] { {1349.4500 2566.5500} {1365.5000 2569.5500} }
+  PAD_TLX_IN_data_rev_0_tdata[12] { {1182.4500 2566.5500} {1198.5000 2569.5500} }
+  PAD_TLX_IN_data_rev_0_tdata[11] { {1015.4500 2566.5500} {1031.5000 2569.5500} }
+  PAD_TLX_IN_data_rev_0_tdata[10] { {848.4500 2566.5500} {864.5000 2569.5500} }
+  PAD_TLX_IN_data_rev_0_tdata[9] { {681.4500 2566.5500} {697.5000 2569.5500} }
+  PAD_TLX_IN_data_rev_0_tdata[8] { {511.5000 2566.5500} {527.5500 2569.5500} }
+  PAD_TLX_IN_data_rev_0_tdata[7] { {2097.8900 2071.4750} {2100.8900 2087.5250} }
+  PAD_TLX_IN_data_rev_0_tdata[6] { {1663.4500 2566.5500} {1679.5000 2569.5500} }
+  PAD_TLX_IN_data_rev_0_tdata[5] { {1496.4500 2566.5500} {1512.5000 2569.5500} }
+  PAD_TLX_IN_data_rev_0_tdata[4] { {1329.4500 2566.5500} {1345.5000 2569.5500} }
+  PAD_TLX_IN_data_rev_0_tdata[3] { {1162.4500 2566.5500} {1178.5000 2569.5500} }
+  PAD_TLX_IN_data_rev_0_tdata[2] { {995.4500 2566.5500} {1011.5000 2569.5500} }
+  PAD_TLX_IN_data_rev_0_tdata[1] { {828.4500 2566.5500} {844.5000 2569.5500} }
+  PAD_TLX_IN_data_rev_0_tdata[0] { {661.4500 2566.5500} {677.5000 2569.5500} }
+  PAD_TLX_IN_data_rev_0_tvalid { {2097.8900 2213.7750} {2100.8900 2229.8250} }
+  PAD_TLX_IN_data_rev_0_tready { {70.0500 2213.7750} {73.0500 2229.8250} }
+  PAD_TLX_IN_flow_rev_0_tdata[2] { {2097.8900 2046.7750} {2100.8900 2062.8250} }
+  PAD_TLX_IN_flow_rev_0_tdata[1] { {70.0500 1904.4750} {73.0500 1920.5250} }
+  PAD_TLX_IN_flow_rev_0_tdata[0] { {70.0500 2046.7750} {73.0500 2062.8250} }
+  PAD_TLX_IN_flow_rev_0_tvalid { {2097.8900 1975.6250} {2100.8900 1991.6750} }
+  PAD_TLX_IN_flow_rev_0_tready { {70.0500 1975.6250} {73.0500 1991.6750} }
+  PAD_TLX_IN_flow_fwd_0_tdata[1] { {1683.4500 2566.5500} {1699.5000 2569.5500} }
+  PAD_TLX_IN_flow_fwd_0_tdata[0] { {70.0500 2238.4750} {73.0500 2254.5250} }
+  PAD_TLX_IN_flow_fwd_0_tvalid { {2097.8900 2238.4750} {2100.8900 2254.5250} }
+  PAD_TLX_IN_flow_fwd_0_tready { {70.0500 2309.6250} {73.0500 2325.6750} }
+  PAD_TLX_IN_data_fwd_0_tdata[15] { {1643.4500 2566.5500} {1659.5000 2569.5500} }
+  PAD_TLX_IN_data_fwd_0_tdata[14] { {1476.4500 2566.5500} {1492.5000 2569.5500} }
+  PAD_TLX_IN_data_fwd_0_tdata[13] { {1309.4500 2566.5500} {1325.5000 2569.5500} }
+  PAD_TLX_IN_data_fwd_0_tdata[12] { {1142.4500 2566.5500} {1158.5000 2569.5500} }
+  PAD_TLX_IN_data_fwd_0_tdata[11] { {975.4500 2566.5500} {991.5000 2569.5500} }
+  PAD_TLX_IN_data_fwd_0_tdata[10] { {808.4500 2566.5500} {824.5000 2569.5500} }
+  PAD_TLX_IN_data_fwd_0_tdata[9] { {641.4500 2566.5500} {657.5000 2569.5500} }
+  PAD_TLX_IN_data_fwd_0_tdata[8] { {344.5000 2566.5500} {360.5500 2569.5500} }
+  PAD_TLX_IN_data_fwd_0_tdata[7] { {1912.4750 2566.5500} {1928.5250 2569.5500} }
+  PAD_TLX_IN_data_fwd_0_tdata[6] { {1411.4750 2566.5500} {1427.5250 2569.5500} }
+  PAD_TLX_IN_data_fwd_0_tdata[5] { {1244.4750 2566.5500} {1260.5250 2569.5500} }
+  PAD_TLX_IN_data_fwd_0_tdata[4] { {1077.4750 2566.5500} {1093.5250 2569.5500} }
+  PAD_TLX_IN_data_fwd_0_tdata[3] { {910.4750 2566.5500} {926.5250 2569.5500} }
+  PAD_TLX_IN_data_fwd_0_tdata[2] { {743.4750 2566.5500} {759.5250 2569.5500} }
+  PAD_TLX_IN_data_fwd_0_tdata[1] { {576.4750 2566.5500} {592.5250 2569.5500} }
+  PAD_TLX_IN_data_fwd_0_tdata[0] { {242.4750 2566.5500} {258.5250 2569.5500} }
+  PAD_TLX_IN_data_fwd_0_tvalid { {2097.8900 2476.6250} {2100.8900 2492.6750} }
+  PAD_TLX_IN_data_fwd_0_tready { {70.0500 2476.6250} {73.0500 2492.6750} }
+  PAD_TLX_data_rev_1_tdata[15] { {2097.8900 568.4750} {2100.8900 584.5250} }
+  PAD_TLX_data_rev_1_tdata[14] { {1513.5000 70.0500} {1529.5500 73.0500} }
+  PAD_TLX_data_rev_1_tdata[13] { {1346.5000 70.0500} {1362.5500 73.0500} }
+  PAD_TLX_data_rev_1_tdata[12] { {1179.5000 70.0500} {1195.5500 73.0500} }
+  PAD_TLX_data_rev_1_tdata[11] { {1012.5000 70.0500} {1028.5500 73.0500} }
+  PAD_TLX_data_rev_1_tdata[10] { {845.5000 70.0500} {861.5500 73.0500} }
+  PAD_TLX_data_rev_1_tdata[9] { {678.5000 70.0500} {694.5500 73.0500} }
+  PAD_TLX_data_rev_1_tdata[8] { {511.5000 70.0500} {527.5500 73.0500} }
+  PAD_TLX_data_rev_1_tdata[7] { {2097.8900 401.4750} {2100.8900 417.5250} }
+  PAD_TLX_data_rev_1_tdata[6] { {1660.5000 70.0500} {1676.5500 73.0500} }
+  PAD_TLX_data_rev_1_tdata[5] { {1493.5000 70.0500} {1509.5500 73.0500} }
+  PAD_TLX_data_rev_1_tdata[4] { {1326.5000 70.0500} {1342.5500 73.0500} }
+  PAD_TLX_data_rev_1_tdata[3] { {1159.5000 70.0500} {1175.5500 73.0500} }
+  PAD_TLX_data_rev_1_tdata[2] { {992.5000 70.0500} {1008.5500 73.0500} }
+  PAD_TLX_data_rev_1_tdata[1] { {825.5000 70.0500} {841.5500 73.0500} }
+  PAD_TLX_data_rev_1_tdata[0] { {658.5000 70.0500} {674.5500 73.0500} }
+  PAD_TLX_data_rev_1_tvalid { {2097.8900 543.7750} {2100.8900 559.8250} }
+  PAD_TLX_data_rev_1_tready { {70.0500 543.7750} {73.0500 559.8250} }
+  PAD_TLX_flow_rev_1_tdata[2] { {2097.8900 710.7750} {2100.8900 726.8250} }
+  PAD_TLX_flow_rev_1_tdata[1] { {70.0500 568.4750} {73.0500 584.5250} }
+  PAD_TLX_flow_rev_1_tdata[0] { {70.0500 710.7750} {73.0500 726.8250} }
+  PAD_TLX_flow_rev_1_tvalid { {2097.8900 639.6250} {2100.8900 655.6750} }
+  PAD_TLX_flow_rev_1_tready { {70.0500 639.6250} {73.0500 655.6750} }
+  PAD_TLX_flow_fwd_1_tdata[1] { {1680.5000 70.0500} {1696.5500 73.0500} }
+  PAD_TLX_flow_fwd_1_tdata[0] { {70.0500 234.4750} {73.0500 250.5250} }
+  PAD_TLX_flow_fwd_1_tvalid { {2097.8900 234.4750} {2100.8900 250.5250} }
+  PAD_TLX_flow_fwd_1_tready { {70.0500 305.6250} {73.0500 321.6750} }
+  PAD_TLX_data_fwd_1_tdata[15] { {1640.5000 70.0500} {1656.5500 73.0500} }
+  PAD_TLX_data_fwd_1_tdata[14] { {1473.5000 70.0500} {1489.5500 73.0500} }
+  PAD_TLX_data_fwd_1_tdata[13] { {1306.5000 70.0500} {1322.5500 73.0500} }
+  PAD_TLX_data_fwd_1_tdata[12] { {1139.5000 70.0500} {1155.5500 73.0500} }
+  PAD_TLX_data_fwd_1_tdata[11] { {972.5000 70.0500} {988.5500 73.0500} }
+  PAD_TLX_data_fwd_1_tdata[10] { {805.5000 70.0500} {821.5500 73.0500} }
+  PAD_TLX_data_fwd_1_tdata[9] { {638.5000 70.0500} {654.5500 73.0500} }
+  PAD_TLX_data_fwd_1_tdata[8] { {344.5000 70.0500} {360.5500 73.0500} }
+  PAD_TLX_data_fwd_1_tdata[7] { {1912.4750 70.0500} {1928.5250 73.0500} }
+  PAD_TLX_data_fwd_1_tdata[6] { {1411.4750 70.0500} {1427.5250 73.0500} }
+  PAD_TLX_data_fwd_1_tdata[5] { {1244.4750 70.0500} {1260.5250 73.0500} }
+  PAD_TLX_data_fwd_1_tdata[4] { {1077.4750 70.0500} {1093.5250 73.0500} }
+  PAD_TLX_data_fwd_1_tdata[3] { {910.4750 70.0500} {926.5250 73.0500} }
+  PAD_TLX_data_fwd_1_tdata[2] { {743.4750 70.0500} {759.5250 73.0500} }
+  PAD_TLX_data_fwd_1_tdata[1] { {576.4750 70.0500} {592.5250 73.0500} }
+  PAD_TLX_data_fwd_1_tdata[0] { {242.4750 70.0500} {258.5250 73.0500} }
+  PAD_TLX_data_fwd_1_tvalid { {2097.8900 138.6250} {2100.8900 154.6750} }
+  PAD_TLX_data_fwd_1_tready { {70.0500 138.6250} {73.0500 154.6750} }
+  PAD_addr_sel[3] { {2097.8900 1140.6250} {2100.8900 1156.6750} }
+  PAD_addr_sel[2] { {2097.8900 1307.6250} {2100.8900 1323.6750} }
+  PAD_addr_sel[1] { {2097.8900 1474.6250} {2100.8900 1490.6750} }
+  PAD_addr_sel[0] { {2097.8900 1641.6250} {2100.8900 1657.6750} }
 END SRAM_chiplet
diff --git a/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/floorplan/fp.tcl b/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/floorplan/fp.tcl
index 8319320eb82902f777e786e0eeaac77b3f39fa38..bad519807fc47e43062e5e5260c47d489a1f8714 100644
--- a/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/floorplan/fp.tcl
+++ b/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/floorplan/fp.tcl
@@ -1,12 +1,32 @@
 ################################################################################
 #
-# Created by fc write_floorplan on Thu Sep  5 11:23:09 2024
+# Created by fc write_floorplan on Tue Dec 17 14:29:32 2024
 #
 ################################################################################
 
 
 set _dirName__0 [file dirname [file normalize [info script]]]
 
+################################################################################
+# Pins
+################################################################################
+
+set __pins [get_terminals -quiet]
+if {[sizeof_collection $__pins] > 0} {
+set __termShapes [get_shapes -of_objects [get_terminals * -quiet] -quiet]
+if {[sizeof_collection $__termShapes] > 0} {
+remove_shapes $__termShapes -force
+}
+set __termVias [get_vias -of_objects [get_terminals * -quiet] -quiet]
+if {[sizeof_collection $__termVias] > 0} {
+remove_vias $__termVias -force
+}
+set __termShapePatterns [get_shape_patterns -of_objects [get_terminals * -quiet] -quiet]
+if {[sizeof_collection $__termShapePatterns] > 0} {
+remove_shape_patterns $__termShapePatterns
+}
+}
+
 ################################################################################
 # Read DEF
 ################################################################################
@@ -21,130 +41,324 @@ set cellInst [get_cells { \
     u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PVT_ts0.u_snps_PVT_ts0/u_synopsys_ts \
     }]
 set_attribute -quiet -objects $cellInst -name orientation -value R0
-set_attribute -quiet -objects $cellInst -name origin -value { 120.0000 390.0600 \
+set_attribute -quiet -objects $cellInst -name origin -value { 479.5000 160.0000 \
     }
 set_attribute -quiet -objects $cellInst -name status -value placed
+create_keepout_margin -type hard -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PVT_ts0.u_snps_PVT_ts0/u_synopsys_ts \
+    }
+create_keepout_margin -type soft -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PVT_ts0.u_snps_PVT_ts0/u_synopsys_ts \
+    }
+create_keepout_margin -type hard_macro -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PVT_ts0.u_snps_PVT_ts0/u_synopsys_ts \
+    }
 
 set cellInst [get_cells { \
     u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PVT_pd0.u_snps_PVT_pd0/u_synopsys_pd \
     }]
 set_attribute -quiet -objects $cellInst -name orientation -value R0
-set_attribute -quiet -objects $cellInst -name origin -value { 120.0000 618.3400 \
+set_attribute -quiet -objects $cellInst -name origin -value { 776.5000 160.0000 \
     }
 set_attribute -quiet -objects $cellInst -name status -value placed
+create_keepout_margin -type hard -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PVT_pd0.u_snps_PVT_pd0/u_synopsys_pd \
+    }
+create_keepout_margin -type soft -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PVT_pd0.u_snps_PVT_pd0/u_synopsys_pd \
+    }
+create_keepout_margin -type hard_macro -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PVT_pd0.u_snps_PVT_pd0/u_synopsys_pd \
+    }
 
 set cellInst [get_cells { \
     u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PLL.u_snps_PLL/u_snps_PLL \
     }]
 set_attribute -quiet -objects $cellInst -name orientation -value R0
-set_attribute -quiet -objects $cellInst -name origin -value { 120.0000 120.0000 \
+set_attribute -quiet -objects $cellInst -name origin -value { 160.0000 160.0000 \
     }
 set_attribute -quiet -objects $cellInst -name status -value placed
+create_keepout_margin -type hard -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PLL.u_snps_PLL/u_snps_PLL \
+    }
+create_keepout_margin -type soft -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PLL.u_snps_PLL/u_snps_PLL \
+    }
+create_keepout_margin -type hard_macro -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PLL.u_snps_PLL/u_snps_PLL \
+    }
 
 set cellInst [get_cells { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[0].u_sram_32b_32k }]
+    u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/g_srams[0].u_sram_32b_32k }]
 set_attribute -quiet -objects $cellInst -name orientation -value R90
-set_attribute -quiet -objects $cellInst -name origin -value { 440.7200 770.0650 \
+set_attribute -quiet -objects $cellInst -name origin -value { 480.6600 438.9100 \
     }
 set_attribute -quiet -objects $cellInst -name status -value placed
 create_keepout_margin -type hard -outer { 1.0000 1.0000 1.0000 1.0000 } { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[0].u_sram_32b_32k }
+    u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/g_srams[0].u_sram_32b_32k }
 create_keepout_margin -type soft -outer { 1.0000 1.0000 1.0000 1.0000 } { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[0].u_sram_32b_32k }
+    u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/g_srams[0].u_sram_32b_32k }
 create_keepout_margin -type hard_macro -outer { 1.0000 1.0000 1.0000 1.0000 } { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[0].u_sram_32b_32k }
+    u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/g_srams[0].u_sram_32b_32k }
+create_keepout_margin -type routing_blockage -outer { 1.0000 1.0000 1.0000 \
+    1.0000 } -layers { M1 VIA1 M2 VIA2 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/g_srams[0].u_sram_32b_32k }
 
 set cellInst [get_cells { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[1].u_sram_32b_32k }]
+    u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/g_srams[1].u_sram_32b_32k }]
 set_attribute -quiet -objects $cellInst -name orientation -value R90
-set_attribute -quiet -objects $cellInst -name origin -value { 761.3800 770.0650 \
+set_attribute -quiet -objects $cellInst -name origin -value { 816.3200 438.9100 \
     }
 set_attribute -quiet -objects $cellInst -name status -value placed
 create_keepout_margin -type hard -outer { 1.0000 1.0000 1.0000 1.0000 } { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[1].u_sram_32b_32k }
+    u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/g_srams[1].u_sram_32b_32k }
 create_keepout_margin -type soft -outer { 1.0000 1.0000 1.0000 1.0000 } { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[1].u_sram_32b_32k }
+    u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/g_srams[1].u_sram_32b_32k }
 create_keepout_margin -type hard_macro -outer { 1.0000 1.0000 1.0000 1.0000 } { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[1].u_sram_32b_32k }
+    u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/g_srams[1].u_sram_32b_32k }
+create_keepout_margin -type routing_blockage -outer { 1.0000 1.0000 1.0000 \
+    1.0000 } -layers { M1 VIA1 M2 VIA2 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/g_srams[1].u_sram_32b_32k }
 
 set cellInst [get_cells { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[2].u_sram_32b_32k }]
+    u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/g_srams[2].u_sram_32b_32k }]
 set_attribute -quiet -objects $cellInst -name orientation -value R90
-set_attribute -quiet -objects $cellInst -name origin -value { 1082.0400 \
-    770.0650 }
+set_attribute -quiet -objects $cellInst -name origin -value { 1151.9800 \
+    438.9100 }
 set_attribute -quiet -objects $cellInst -name status -value placed
 create_keepout_margin -type hard -outer { 1.0000 1.0000 1.0000 1.0000 } { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[2].u_sram_32b_32k }
+    u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/g_srams[2].u_sram_32b_32k }
 create_keepout_margin -type soft -outer { 1.0000 1.0000 1.0000 1.0000 } { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[2].u_sram_32b_32k }
+    u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/g_srams[2].u_sram_32b_32k }
 create_keepout_margin -type hard_macro -outer { 1.0000 1.0000 1.0000 1.0000 } { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[2].u_sram_32b_32k }
+    u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/g_srams[2].u_sram_32b_32k }
+create_keepout_margin -type routing_blockage -outer { 1.0000 1.0000 1.0000 \
+    1.0000 } -layers { M1 VIA1 M2 VIA2 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/g_srams[2].u_sram_32b_32k }
 
 set cellInst [get_cells { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[3].u_sram_32b_32k }]
+    u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/gen_sram.u_sram_32b_32k_N }]
 set_attribute -quiet -objects $cellInst -name orientation -value R90
-set_attribute -quiet -objects $cellInst -name origin -value { 1402.7000 \
-    770.0650 }
+set_attribute -quiet -objects $cellInst -name origin -value { 1487.6400 \
+    430.9100 }
 set_attribute -quiet -objects $cellInst -name status -value placed
 create_keepout_margin -type hard -outer { 1.0000 1.0000 1.0000 1.0000 } { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[3].u_sram_32b_32k }
+    u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/gen_sram.u_sram_32b_32k_N }
 create_keepout_margin -type soft -outer { 1.0000 1.0000 1.0000 1.0000 } { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[3].u_sram_32b_32k }
+    u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/gen_sram.u_sram_32b_32k_N }
 create_keepout_margin -type hard_macro -outer { 1.0000 1.0000 1.0000 1.0000 } { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[3].u_sram_32b_32k }
+    u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/gen_sram.u_sram_32b_32k_N }
+create_keepout_margin -type routing_blockage -outer { 1.0000 1.0000 1.0000 \
+    1.0000 } -layers { M1 VIA1 M2 VIA2 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/gen_sram.u_sram_32b_32k_N }
 
 set cellInst [get_cells { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[4].u_sram_32b_32k }]
+    u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/g_srams[0].u_sram_32b_32k }]
+set_attribute -quiet -objects $cellInst -name orientation -value R90
+set_attribute -quiet -objects $cellInst -name origin -value { 480.6600 \
+    1824.1800 }
+set_attribute -quiet -objects $cellInst -name status -value placed
+create_keepout_margin -type hard -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/g_srams[0].u_sram_32b_32k }
+create_keepout_margin -type soft -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/g_srams[0].u_sram_32b_32k }
+create_keepout_margin -type hard_macro -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/g_srams[0].u_sram_32b_32k }
+create_keepout_margin -type routing_blockage -outer { 1.0000 1.0000 1.0000 \
+    1.0000 } -layers { M1 VIA1 M2 VIA2 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/g_srams[0].u_sram_32b_32k }
+
+set cellInst [get_cells { \
+    u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/g_srams[1].u_sram_32b_32k }]
+set_attribute -quiet -objects $cellInst -name orientation -value R90
+set_attribute -quiet -objects $cellInst -name origin -value { 816.3200 \
+    1824.1800 }
+set_attribute -quiet -objects $cellInst -name status -value placed
+create_keepout_margin -type hard -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/g_srams[1].u_sram_32b_32k }
+create_keepout_margin -type soft -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/g_srams[1].u_sram_32b_32k }
+create_keepout_margin -type hard_macro -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/g_srams[1].u_sram_32b_32k }
+create_keepout_margin -type routing_blockage -outer { 1.0000 1.0000 1.0000 \
+    1.0000 } -layers { M1 VIA1 M2 VIA2 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/g_srams[1].u_sram_32b_32k }
+
+set cellInst [get_cells { \
+    u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/g_srams[2].u_sram_32b_32k }]
 set_attribute -quiet -objects $cellInst -name orientation -value R270
-set_attribute -quiet -objects $cellInst -name origin -value { 1082.0400 \
-    759.6350 }
+set_attribute -quiet -objects $cellInst -name origin -value { 160.0000 \
+    1771.1800 }
 set_attribute -quiet -objects $cellInst -name status -value placed
 create_keepout_margin -type hard -outer { 1.0000 1.0000 1.0000 1.0000 } { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[4].u_sram_32b_32k }
+    u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/g_srams[2].u_sram_32b_32k }
 create_keepout_margin -type soft -outer { 1.0000 1.0000 1.0000 1.0000 } { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[4].u_sram_32b_32k }
+    u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/g_srams[2].u_sram_32b_32k }
 create_keepout_margin -type hard_macro -outer { 1.0000 1.0000 1.0000 1.0000 } { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[4].u_sram_32b_32k }
+    u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/g_srams[2].u_sram_32b_32k }
+create_keepout_margin -type routing_blockage -outer { 1.0000 1.0000 1.0000 \
+    1.0000 } -layers { M1 VIA1 M2 VIA2 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/g_srams[2].u_sram_32b_32k }
 
 set cellInst [get_cells { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[5].u_sram_32b_32k }]
+    u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/gen_sram.u_sram_32b_32k_N }]
 set_attribute -quiet -objects $cellInst -name orientation -value R270
-set_attribute -quiet -objects $cellInst -name origin -value { 761.3800 759.6350 \
-    }
+set_attribute -quiet -objects $cellInst -name origin -value { 495.6600 \
+    1771.1800 }
+set_attribute -quiet -objects $cellInst -name status -value placed
+create_keepout_margin -type hard -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/gen_sram.u_sram_32b_32k_N }
+create_keepout_margin -type soft -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/gen_sram.u_sram_32b_32k_N }
+create_keepout_margin -type hard_macro -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/gen_sram.u_sram_32b_32k_N }
+create_keepout_margin -type routing_blockage -outer { 1.0000 1.0000 1.0000 \
+    1.0000 } -layers { M1 VIA1 M2 VIA2 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/gen_sram.u_sram_32b_32k_N }
+
+set cellInst [get_cells { \
+    u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/g_srams[0].u_sram_32b_32k }]
+set_attribute -quiet -objects $cellInst -name orientation -value R90
+set_attribute -quiet -objects $cellInst -name origin -value { 1151.9800 \
+    1824.1800 }
 set_attribute -quiet -objects $cellInst -name status -value placed
 create_keepout_margin -type hard -outer { 1.0000 1.0000 1.0000 1.0000 } { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[5].u_sram_32b_32k }
+    u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/g_srams[0].u_sram_32b_32k }
 create_keepout_margin -type soft -outer { 1.0000 1.0000 1.0000 1.0000 } { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[5].u_sram_32b_32k }
+    u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/g_srams[0].u_sram_32b_32k }
 create_keepout_margin -type hard_macro -outer { 1.0000 1.0000 1.0000 1.0000 } { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[5].u_sram_32b_32k }
+    u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/g_srams[0].u_sram_32b_32k }
+create_keepout_margin -type routing_blockage -outer { 1.0000 1.0000 1.0000 \
+    1.0000 } -layers { M1 VIA1 M2 VIA2 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/g_srams[0].u_sram_32b_32k }
 
 set cellInst [get_cells { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[6].u_sram_32b_32k }]
+    u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/g_srams[1].u_sram_32b_32k }]
+set_attribute -quiet -objects $cellInst -name orientation -value R90
+set_attribute -quiet -objects $cellInst -name origin -value { 1487.6400 \
+    1824.1800 }
+set_attribute -quiet -objects $cellInst -name status -value placed
+create_keepout_margin -type hard -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/g_srams[1].u_sram_32b_32k }
+create_keepout_margin -type soft -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/g_srams[1].u_sram_32b_32k }
+create_keepout_margin -type hard_macro -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/g_srams[1].u_sram_32b_32k }
+create_keepout_margin -type routing_blockage -outer { 1.0000 1.0000 1.0000 \
+    1.0000 } -layers { M1 VIA1 M2 VIA2 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/g_srams[1].u_sram_32b_32k }
+
+set cellInst [get_cells { \
+    u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/g_srams[2].u_sram_32b_32k }]
 set_attribute -quiet -objects $cellInst -name orientation -value R270
-set_attribute -quiet -objects $cellInst -name origin -value { 440.7200 759.6350 \
-    }
+set_attribute -quiet -objects $cellInst -name origin -value { 831.3200 \
+    1771.1800 }
 set_attribute -quiet -objects $cellInst -name status -value placed
 create_keepout_margin -type hard -outer { 1.0000 1.0000 1.0000 1.0000 } { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[6].u_sram_32b_32k }
+    u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/g_srams[2].u_sram_32b_32k }
 create_keepout_margin -type soft -outer { 1.0000 1.0000 1.0000 1.0000 } { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[6].u_sram_32b_32k }
+    u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/g_srams[2].u_sram_32b_32k }
 create_keepout_margin -type hard_macro -outer { 1.0000 1.0000 1.0000 1.0000 } { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/g_srams[6].u_sram_32b_32k }
+    u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/g_srams[2].u_sram_32b_32k }
+create_keepout_margin -type routing_blockage -outer { 1.0000 1.0000 1.0000 \
+    1.0000 } -layers { M1 VIA1 M2 VIA2 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/g_srams[2].u_sram_32b_32k }
 
 set cellInst [get_cells { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/u_sram_32b_16k_0 }]
+    u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/gen_sram.u_sram_32b_32k_N }]
 set_attribute -quiet -objects $cellInst -name orientation -value R270
-set_attribute -quiet -objects $cellInst -name origin -value { 1402.7000 \
-    758.0750 }
+set_attribute -quiet -objects $cellInst -name origin -value { 1166.9800 \
+    1767.1800 }
 set_attribute -quiet -objects $cellInst -name status -value placed
+create_keepout_margin -type hard -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/gen_sram.u_sram_32b_32k_N }
+create_keepout_margin -type soft -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/gen_sram.u_sram_32b_32k_N }
+create_keepout_margin -type hard_macro -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/gen_sram.u_sram_32b_32k_N }
+create_keepout_margin -type routing_blockage -outer { 1.0000 1.0000 1.0000 \
+    1.0000 } -layers { M1 VIA1 M2 VIA2 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/gen_sram.u_sram_32b_32k_N }
 
 set cellInst [get_cells { \
-    u_top_sram_chiplet/u_SRAM_wrapper/u_SRAM/u_sram_32b_16k_1 }]
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/g_srams[0].u_sram_32b_32k }]
 set_attribute -quiet -objects $cellInst -name orientation -value R90
-set_attribute -quiet -objects $cellInst -name origin -value { 1574.8800 \
-    771.6250 }
+set_attribute -quiet -objects $cellInst -name origin -value { 1823.3000 \
+    1824.1800 }
 set_attribute -quiet -objects $cellInst -name status -value placed
+create_keepout_margin -type hard -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/g_srams[0].u_sram_32b_32k }
+create_keepout_margin -type soft -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/g_srams[0].u_sram_32b_32k }
+create_keepout_margin -type hard_macro -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/g_srams[0].u_sram_32b_32k }
+create_keepout_margin -type routing_blockage -outer { 1.0000 1.0000 1.0000 \
+    1.0000 } -layers { M1 VIA1 M2 VIA2 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/g_srams[0].u_sram_32b_32k }
+
+set cellInst [get_cells { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/g_srams[1].u_sram_32b_32k }]
+set_attribute -quiet -objects $cellInst -name orientation -value R270
+set_attribute -quiet -objects $cellInst -name origin -value { 1502.6400 \
+    1767.1800 }
+set_attribute -quiet -objects $cellInst -name status -value placed
+create_keepout_margin -type hard -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/g_srams[1].u_sram_32b_32k }
+create_keepout_margin -type soft -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/g_srams[1].u_sram_32b_32k }
+create_keepout_margin -type hard_macro -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/g_srams[1].u_sram_32b_32k }
+create_keepout_margin -type routing_blockage -outer { 1.0000 1.0000 1.0000 \
+    1.0000 } -layers { M1 VIA1 M2 VIA2 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/g_srams[1].u_sram_32b_32k }
+
+set cellInst [get_cells { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/g_srams[2].u_sram_32b_32k }]
+set_attribute -quiet -objects $cellInst -name orientation -value R270
+set_attribute -quiet -objects $cellInst -name origin -value { 1502.6400 \
+    1070.5450 }
+set_attribute -quiet -objects $cellInst -name status -value placed
+create_keepout_margin -type hard -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/g_srams[2].u_sram_32b_32k }
+create_keepout_margin -type soft -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/g_srams[2].u_sram_32b_32k }
+create_keepout_margin -type hard_macro -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/g_srams[2].u_sram_32b_32k }
+create_keepout_margin -type routing_blockage -outer { 1.0000 1.0000 1.0000 \
+    1.0000 } -layers { M1 VIA1 M2 VIA2 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/g_srams[2].u_sram_32b_32k }
+
+set cellInst [get_cells { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/gen_split_sram.u_sram_32b_16k_0 }]
+set_attribute -quiet -objects $cellInst -name orientation -value R90
+set_attribute -quiet -objects $cellInst -name origin -value { 2010.4800 \
+    1824.1800 }
+set_attribute -quiet -objects $cellInst -name status -value placed
+create_keepout_margin -type hard -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/gen_split_sram.u_sram_32b_16k_0 }
+create_keepout_margin -type soft -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/gen_split_sram.u_sram_32b_16k_0 }
+create_keepout_margin -type hard_macro -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/gen_split_sram.u_sram_32b_16k_0 }
+create_keepout_margin -type routing_blockage -outer { 1.0000 1.0000 1.0000 \
+    1.0000 } -layers { M1 VIA1 M2 VIA2 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/gen_split_sram.u_sram_32b_16k_0 }
+
+set cellInst [get_cells { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/gen_split_sram.u_sram_32b_16k_1 }]
+set_attribute -quiet -objects $cellInst -name orientation -value R270
+set_attribute -quiet -objects $cellInst -name origin -value { 1838.3000 \
+    1767.1800 }
+set_attribute -quiet -objects $cellInst -name status -value placed
+create_keepout_margin -type hard -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/gen_split_sram.u_sram_32b_16k_1 }
+create_keepout_margin -type soft -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/gen_split_sram.u_sram_32b_16k_1 }
+create_keepout_margin -type hard_macro -outer { 1.0000 1.0000 1.0000 1.0000 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/gen_split_sram.u_sram_32b_16k_1 }
+create_keepout_margin -type routing_blockage -outer { 1.0000 1.0000 1.0000 \
+    1.0000 } -layers { M1 VIA1 M2 VIA2 } { \
+    u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/gen_split_sram.u_sram_32b_16k_1 }
 
 
 ################################################################################
@@ -152,20 +366,178 @@ set_attribute -quiet -objects $cellInst -name status -value placed
 ################################################################################
 
 
+################################################################################
+# Bounds and user attributes of bound shapes
+################################################################################
+
+remove_bounds -all
+
+
+################################################################################
+# User attributes of bounds
+################################################################################
+
+
+################################################################################
+# Pin guides
+################################################################################
+
+remove_pin_guides -all
+
+
+################################################################################
+# Module Boundaries
+################################################################################
+
+set hbCells [get_cells -quiet -filter hierarchy_type==boundary -hierarchical]
+if [sizeof_collection $hbCells] {
+   set_cell_hierarchy_type -type normal $hbCells
+}
+
+set_cell_hierarchy_type -boundary { {725.7711 1679.4784} {2010.9400 2479.6000} \
+    } -type boundary u_top_sram_chiplet/u_SRAM_wrapper_2
+set_cell_hierarchy_type -boundary { {160.0000 160.0000} {1595.5097 887.4354} } \
+    -type boundary u_top_sram_chiplet/u_SRAM_wrapper_3
+
+################################################################################
+# Bump regions
+################################################################################
+
+remove_bump_regions -all
+
+remove_pseudo_tsv_defs -all
+
+remove_bump_regions -all
+
+remove_bump_region_patterns -all
+
+################################################################################
+# set attributes of pseudo bumps
+################################################################################
+
+################################################################################
+# set attributes of pseudo tsvs
+################################################################################
+
+################################################################################
+# User attributes of bump region
+################################################################################
+
 ################################################################################
 # I/O guides
 ################################################################################
 
 remove_io_guides -all
 
+create_io_guide -name main_io.top -side top -line { {110.0000 2639.6000} \
+    1950.9400 } -offset {0.0000 0.0000} -pad_cells { \
+    TLX_data_tdata[0].u_TLX_IN_data_fwd_tdata u_PAD_VDDIO_top \
+    TLX_data_tdata[1].u_TLX_IN_data_fwd_tdata \
+    TLX_data_tdata[2].u_TLX_IN_data_fwd_tdata \
+    TLX_data_tdata[3].u_TLX_IN_data_fwd_tdata \
+    TLX_data_tdata[4].u_TLX_IN_data_fwd_tdata \
+    TLX_data_tdata[5].u_TLX_IN_data_fwd_tdata \
+    TLX_data_tdata[6].u_TLX_IN_data_fwd_tdata u_PAD_IN_FWD_CLK u_PAD_VSSIO_top \
+    TLX_data_tdata[7].u_TLX_IN_data_fwd_tdata \
+    TLX_data_tdata[8].u_TLX_IN_data_fwd_tdata \
+    TLX_data_tdata[9].u_TLX_IN_data_fwd_tdata \
+    TLX_data_tdata[10].u_TLX_IN_data_fwd_tdata \
+    TLX_data_tdata[11].u_TLX_IN_data_fwd_tdata \
+    TLX_data_tdata[12].u_TLX_IN_data_fwd_tdata \
+    TLX_data_tdata[13].u_TLX_IN_data_fwd_tdata \
+    TLX_data_tdata[14].u_TLX_IN_data_fwd_tdata \
+    TLX_data_tdata[15].u_TLX_IN_data_fwd_tdata u_PAD_TLX_IN_flow_fwd_0_tdata_1 \
+    TLX_data_tdata[0].u_TLX_IN_data_rev_tdata \
+    TLX_data_tdata[1].u_TLX_IN_data_rev_tdata \
+    TLX_data_tdata[2].u_TLX_IN_data_rev_tdata \
+    TLX_data_tdata[3].u_TLX_IN_data_rev_tdata \
+    TLX_data_tdata[4].u_TLX_IN_data_rev_tdata \
+    TLX_data_tdata[5].u_TLX_IN_data_rev_tdata \
+    TLX_data_tdata[6].u_TLX_IN_data_rev_tdata \
+    TLX_data_tdata[8].u_TLX_IN_data_rev_tdata \
+    TLX_data_tdata[9].u_TLX_IN_data_rev_tdata \
+    TLX_data_tdata[10].u_TLX_IN_data_rev_tdata \
+    TLX_data_tdata[11].u_TLX_IN_data_rev_tdata \
+    TLX_data_tdata[12].u_TLX_IN_data_rev_tdata \
+    TLX_data_tdata[13].u_TLX_IN_data_rev_tdata \
+    TLX_data_tdata[14].u_TLX_IN_data_rev_tdata }
+create_io_guide -name main_io.bottom -side bottom -line { {2060.9400 0.0000} \
+    1950.9400 } -offset {0.0000 0.0000} -pad_cells { \
+    TLX_data_tdata[8].u_TLX_data_rev_1_tdata \
+    TLX_data_tdata[9].u_TLX_data_rev_1_tdata \
+    TLX_data_tdata[10].u_TLX_data_rev_1_tdata \
+    TLX_data_tdata[11].u_TLX_data_rev_1_tdata \
+    TLX_data_tdata[12].u_TLX_data_rev_1_tdata \
+    TLX_data_tdata[13].u_TLX_data_rev_1_tdata \
+    TLX_data_tdata[14].u_TLX_data_rev_1_tdata \
+    TLX_data_tdata[0].u_TLX_data_rev_1_tdata \
+    TLX_data_tdata[1].u_TLX_data_rev_1_tdata \
+    TLX_data_tdata[2].u_TLX_data_rev_1_tdata \
+    TLX_data_tdata[3].u_TLX_data_rev_1_tdata \
+    TLX_data_tdata[4].u_TLX_data_rev_1_tdata \
+    TLX_data_tdata[5].u_TLX_data_rev_1_tdata \
+    TLX_data_tdata[6].u_TLX_data_rev_1_tdata \
+    TLX_data_tdata[8].u_TLX_data_fwd_1_tdata \
+    TLX_data_tdata[9].u_TLX_data_fwd_1_tdata \
+    TLX_data_tdata[10].u_TLX_data_fwd_1_tdata \
+    TLX_data_tdata[11].u_TLX_data_fwd_1_tdata \
+    TLX_data_tdata[12].u_TLX_data_fwd_1_tdata \
+    TLX_data_tdata[13].u_TLX_data_fwd_1_tdata \
+    TLX_data_tdata[14].u_TLX_data_fwd_1_tdata \
+    TLX_data_tdata[15].u_TLX_data_fwd_1_tdata u_PAD_TLX_flow_fwd_1_tdata_1 \
+    TLX_data_tdata[0].u_TLX_data_fwd_1_tdata u_PAD_VDDIO_bottom \
+    TLX_data_tdata[1].u_TLX_data_fwd_1_tdata \
+    TLX_data_tdata[2].u_TLX_data_fwd_1_tdata \
+    TLX_data_tdata[3].u_TLX_data_fwd_1_tdata \
+    TLX_data_tdata[4].u_TLX_data_fwd_1_tdata \
+    TLX_data_tdata[5].u_TLX_data_fwd_1_tdata \
+    TLX_data_tdata[6].u_TLX_data_fwd_1_tdata u_PAD_OUT_FWD_CLK \
+    u_PAD_VSSIO_bottom TLX_data_tdata[7].u_TLX_data_fwd_1_tdata }
+create_io_guide -name main_io.left -side left -line { {0.0000 110.0000} \
+    2419.6000 } -offset {0.0000 0.0000} -pad_cells { \
+    u_PAD_TLX_IN_data_fwd_0_tready u_PAD_TLX_IN_flow_fwd_0_tready \
+    u_PAD_TLX_IN_flow_fwd_0_tdata_0 u_PAD_VDD_top \
+    u_PAD_TLX_IN_data_rev_0_tready u_PAD_IN_REV_CLK \
+    u_PAD_TLX_IN_flow_rev_0_tready u_PAD_TLX_IN_flow_rev_0_tdata_0 \
+    u_PAD_TLX_IN_flow_rev_0_tdata_1 u_PAD_VDD_left u_PAD_VDDIO_POC_left \
+    u_PAD_VSSIO_left u_PAD_DL_FWD_RESETn u_PAD_aRESETn u_PAD_VSS_left \
+    u_PAD_REF_CLK u_PAD_AGNDHV_left u_PAD_AGND_left u_PAD_AVDD_left \
+    u_PAD_AVDDHV_left u_PAD_TLX_flow_rev_1_tready u_PAD_TLX_flow_rev_1_tdata_0 \
+    u_PAD_TLX_flow_rev_1_tdata_1 u_PAD_VDD_bottom u_PAD_TLX_data_rev_1_tready \
+    u_PAD_OUT_REV_CLK u_PAD_TLX_flow_fwd_1_tready u_PAD_TLX_flow_fwd_1_tdata_0 \
+    u_PAD_TLX_data_fwd_1_tready }
+create_io_guide -name main_io.right -side right -line { {2170.9400 2529.6000} \
+    2419.6000 } -offset {0.0000 0.0000} -pad_cells { \
+    u_PAD_TLX_IN_data_fwd_0_tvalid u_PAD_TLX_IN_flow_fwd_0_tvalid \
+    u_PAD_PLL_LOCK_i TLX_data_tdata[7].u_TLX_IN_data_rev_tdata \
+    u_PAD_TLX_IN_data_rev_0_tvalid u_PAD_VSS_top \
+    TLX_data_tdata[15].u_TLX_IN_data_rev_tdata u_PAD_TLX_IN_flow_rev_0_tdata_2 \
+    u_PAD_TLX_IN_flow_rev_0_tvalid u_PAD_VSS_right \
+    gen_addr_sel[0].u_PAD_addr_sel gen_addr_sel[1].u_PAD_addr_sel \
+    gen_addr_sel[2].u_PAD_addr_sel gen_addr_sel[3].u_PAD_addr_sel \
+    u_PAD_VDD_right u_PAD_VDDIO_right u_PAD_VSSIO_right \
+    TLX_data_tdata[15].u_TLX_data_rev_1_tdata u_PAD_TLX_flow_rev_1_tdata_2 \
+    u_PAD_TLX_flow_rev_1_tvalid TLX_data_tdata[7].u_TLX_data_rev_1_tdata \
+    u_PAD_TLX_data_rev_1_tvalid u_PAD_VSS_bottom u_PAD_TLX_flow_fwd_1_tvalid \
+    u_PAD_PLL_LOCK_o u_PAD_TLX_data_fwd_1_tvalid }
 
 ################################################################################
 # User attributes of I/O guides
 ################################################################################
 
 
+################################################################################
+# Terminals/shapes/vias of ports with user attributes
+################################################################################
+
+################################################################################
+# User attributes of ports
+################################################################################
+
+
 ################################################################################
 # User attributes of current block
 ################################################################################
 
+set_attribute [current_design] expanded_util 0.19
 
diff --git a/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/init_placement.tcl b/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/init_placement.tcl
index cbb777bcfa121c92b0b1a4ca12688e25069b47c3..8f9dab4d46dc651d8babef23a2729c98dffe09fa 100644
--- a/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/init_placement.tcl
+++ b/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/init_placement.tcl
@@ -1,7 +1,15 @@
+current_corner default
 set_parasitic_parameters -early_spec cbest -early_temperature -40 -late_spec cworst -late_temperature 125 -library sram_chiplet.dlib
-set_operating_conditions -max_library cln28ht -max ssg_cworstt_max_0p81v_125c -min_library cln28ht -min ffg_cbestt_min_0p99v_m40c
-set_temperature -40 -min 125 -corners default
-set_voltage 0.99 -min 0.81 -corners default
+set_operating_conditions -max_library cln28ht -max ffg_cbestt_min_0p99v_m40c -min_library cln28ht -min ssg_cworstt_max_0p81v_125c
+set_process_number -early 1 -late 1 -corners default
+set_temperature 125 -min -40 -corners default
+set_voltage 0.81 -min 0.99 -corners default
+
+set_voltage 0.99 -min 0.81 -corners default -object_list [list [get_supply_nets VDD] [get_supply_nets AVDD]]
+set_voltage 1.98 -min 1.62 -corners default -object_list [list [get_supply_nets AVDDHV]]
+set_voltage 0.00 -corners default -object_list [list [get_supply_nets VSS] [get_supply_nets AGND]]
+
+
 
 redirect -tee -file ./precompile_checks.log {compile_fusion -check_only}
 
@@ -15,7 +23,13 @@ change_selection [get_cells u_top_sram_chiplet/u_slave_pwd_M1_m_tlx]
 explore_logic_hierarchy -create_module_boundary -nested -cell [get_cells -design [current_block] {u_top_sram_chiplet/u_slave_pwd_M1_m_tlx}]
 change_selection [get_cells u_top_sram_chiplet/u_pl_fwd_M1_m_tlx_m]
 explore_logic_hierarchy -create_module_boundary -nested -cell [get_cells -design [current_block] {u_top_sram_chiplet/u_pl_fwd_M1_m_tlx_m}]
-change_selection [get_cells u_top_sram_chiplet/u_SRAM_wrapper]
-explore_logic_hierarchy -create_module_boundary -nested -cell [get_cells -design [current_block] {u_top_sram_chiplet/u_SRAM_wrapper}]
+change_selection [get_cells u_top_sram_chiplet/u_SRAM_wrapper_0]
+explore_logic_hierarchy -create_module_boundary -nested -cell [get_cells -design [current_block] {u_top_sram_chiplet/u_SRAM_wrapper_0}]
+change_selection [get_cells u_top_sram_chiplet/u_SRAM_wrapper_1]
+explore_logic_hierarchy -create_module_boundary -nested -cell [get_cells -design [current_block] {u_top_sram_chiplet/u_SRAM_wrapper_1}]
+change_selection [get_cells u_top_sram_chiplet/u_SRAM_wrapper_2]
+explore_logic_hierarchy -create_module_boundary -nested -cell [get_cells -design [current_block] {u_top_sram_chiplet/u_SRAM_wrapper_2}]
+change_selection [get_cells u_top_sram_chiplet/u_SRAM_wrapper_3]
+explore_logic_hierarchy -create_module_boundary -nested -cell [get_cells -design [current_block] {u_top_sram_chiplet/u_SRAM_wrapper_3}]
 explore_logic_hierarchy -place -rectangular
 save_lib sram_chiplet.dlib
diff --git a/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/io_plan.tcl b/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/io_plan.tcl
new file mode 100644
index 0000000000000000000000000000000000000000..407e1fcb7496cafc49312458220975f07a60bfbd
--- /dev/null
+++ b/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/io_plan.tcl
@@ -0,0 +1,289 @@
+create_bump_array -name bump_array -lib_cell PAD80MTB_EU -origin {36.850 100.000} -delta {167 167}
+
+remove_io_guides -all 
+
+# Top IO Guide
+create_io_guide -name {main_io.top} -side top -line {{110.000 2639.600} 1950.94} -offset {0.000 0.000} -pad_cells [list  \
+        TLX_data_tdata[0].u_TLX_IN_data_fwd_tdata \
+        u_PAD_VDDIO_top \
+        TLX_data_tdata[1].u_TLX_IN_data_fwd_tdata \
+        TLX_data_tdata[2].u_TLX_IN_data_fwd_tdata \
+        TLX_data_tdata[3].u_TLX_IN_data_fwd_tdata \
+        TLX_data_tdata[4].u_TLX_IN_data_fwd_tdata \
+        TLX_data_tdata[5].u_TLX_IN_data_fwd_tdata \
+        TLX_data_tdata[6].u_TLX_IN_data_fwd_tdata \
+        u_PAD_IN_FWD_CLK \
+        u_PAD_VSSIO_top \
+        TLX_data_tdata[7].u_TLX_IN_data_fwd_tdata \
+        TLX_data_tdata[8].u_TLX_IN_data_fwd_tdata \
+        TLX_data_tdata[9].u_TLX_IN_data_fwd_tdata \
+        TLX_data_tdata[10].u_TLX_IN_data_fwd_tdata \
+        TLX_data_tdata[11].u_TLX_IN_data_fwd_tdata \
+        TLX_data_tdata[12].u_TLX_IN_data_fwd_tdata \
+        TLX_data_tdata[13].u_TLX_IN_data_fwd_tdata \
+        TLX_data_tdata[14].u_TLX_IN_data_fwd_tdata \
+        TLX_data_tdata[15].u_TLX_IN_data_fwd_tdata \
+        u_PAD_TLX_IN_flow_fwd_0_tdata_1 \
+        TLX_data_tdata[0].u_TLX_IN_data_rev_tdata \
+        TLX_data_tdata[1].u_TLX_IN_data_rev_tdata \
+        TLX_data_tdata[2].u_TLX_IN_data_rev_tdata \
+        TLX_data_tdata[3].u_TLX_IN_data_rev_tdata \
+        TLX_data_tdata[4].u_TLX_IN_data_rev_tdata \
+        TLX_data_tdata[5].u_TLX_IN_data_rev_tdata \
+        TLX_data_tdata[6].u_TLX_IN_data_rev_tdata \
+        TLX_data_tdata[8].u_TLX_IN_data_rev_tdata \
+        TLX_data_tdata[9].u_TLX_IN_data_rev_tdata \
+        TLX_data_tdata[10].u_TLX_IN_data_rev_tdata \
+        TLX_data_tdata[11].u_TLX_IN_data_rev_tdata \
+        TLX_data_tdata[12].u_TLX_IN_data_rev_tdata \
+        TLX_data_tdata[13].u_TLX_IN_data_rev_tdata \
+        TLX_data_tdata[14].u_TLX_IN_data_rev_tdata ]
+
+create_io_guide -name {main_io.bottom} -side bottom -line {{2060.940 0.000} 1950.94} -offset {0.000 0.000} -pad_cells [list \
+        TLX_data_tdata[8].u_TLX_data_rev_1_tdata \
+        TLX_data_tdata[9].u_TLX_data_rev_1_tdata \
+        TLX_data_tdata[10].u_TLX_data_rev_1_tdata \
+        TLX_data_tdata[11].u_TLX_data_rev_1_tdata \
+        TLX_data_tdata[12].u_TLX_data_rev_1_tdata \
+        TLX_data_tdata[13].u_TLX_data_rev_1_tdata \
+        TLX_data_tdata[14].u_TLX_data_rev_1_tdata \
+        TLX_data_tdata[0].u_TLX_data_rev_1_tdata \
+        TLX_data_tdata[1].u_TLX_data_rev_1_tdata \
+        TLX_data_tdata[2].u_TLX_data_rev_1_tdata \
+        TLX_data_tdata[3].u_TLX_data_rev_1_tdata \
+        TLX_data_tdata[4].u_TLX_data_rev_1_tdata \
+        TLX_data_tdata[5].u_TLX_data_rev_1_tdata \
+        TLX_data_tdata[6].u_TLX_data_rev_1_tdata \
+        TLX_data_tdata[8].u_TLX_data_fwd_1_tdata \
+        TLX_data_tdata[9].u_TLX_data_fwd_1_tdata \
+        TLX_data_tdata[10].u_TLX_data_fwd_1_tdata \
+        TLX_data_tdata[11].u_TLX_data_fwd_1_tdata \
+        TLX_data_tdata[12].u_TLX_data_fwd_1_tdata \
+        TLX_data_tdata[13].u_TLX_data_fwd_1_tdata \
+        TLX_data_tdata[14].u_TLX_data_fwd_1_tdata \
+        TLX_data_tdata[15].u_TLX_data_fwd_1_tdata \
+        u_PAD_TLX_flow_fwd_1_tdata_1 \
+        TLX_data_tdata[0].u_TLX_data_fwd_1_tdata \
+        u_PAD_VDDIO_bottom \
+        TLX_data_tdata[1].u_TLX_data_fwd_1_tdata \
+        TLX_data_tdata[2].u_TLX_data_fwd_1_tdata \
+        TLX_data_tdata[3].u_TLX_data_fwd_1_tdata \
+        TLX_data_tdata[4].u_TLX_data_fwd_1_tdata \
+        TLX_data_tdata[5].u_TLX_data_fwd_1_tdata \
+        TLX_data_tdata[6].u_TLX_data_fwd_1_tdata \
+        u_PAD_OUT_FWD_CLK \
+        u_PAD_VSSIO_bottom \
+        TLX_data_tdata[7].u_TLX_data_fwd_1_tdata ]
+
+create_io_guide -name {main_io.left} -side left -line {{0.000 110.000} 2419.6} -offset {0.000 0.000} -pad_cells [list \
+        u_PAD_TLX_IN_data_fwd_0_tready \
+        u_PAD_TLX_IN_flow_fwd_0_tready \
+        u_PAD_TLX_IN_flow_fwd_0_tdata_0 \
+        u_PAD_VDD_top \
+        u_PAD_TLX_IN_data_rev_0_tready \
+        u_PAD_IN_REV_CLK \
+        u_PAD_TLX_IN_flow_rev_0_tready \
+        u_PAD_TLX_IN_flow_rev_0_tdata_0 \
+        u_PAD_TLX_IN_flow_rev_0_tdata_1 \
+        u_PAD_VDD_left \
+        u_PAD_VDDIO_POC_left \
+        u_PAD_VSSIO_left \
+        u_PAD_DL_FWD_RESETn \
+        u_PAD_aRESETn \
+        u_PAD_VSS_left \
+        u_PAD_REF_CLK \
+        u_PAD_AGNDHV_left \
+        u_PAD_AGND_left \
+        u_PAD_AVDD_left \
+        u_PAD_AVDDHV_left \
+        u_PAD_TLX_flow_rev_1_tready \
+        u_PAD_TLX_flow_rev_1_tdata_0 \
+        u_PAD_TLX_flow_rev_1_tdata_1 \
+        u_PAD_VDD_bottom \
+        u_PAD_TLX_data_rev_1_tready \
+        u_PAD_OUT_REV_CLK \
+        u_PAD_TLX_flow_fwd_1_tready \
+        u_PAD_TLX_flow_fwd_1_tdata_0 \
+        u_PAD_TLX_data_fwd_1_tready ]
+
+create_io_guide -name {main_io.right} -side right -line {{2170.940 2529.600} 2419.6} -offset {0.000 0.000} -pad_cells [list \
+        u_PAD_TLX_IN_data_fwd_0_tvalid \
+        u_PAD_TLX_IN_flow_fwd_0_tvalid \
+        u_PAD_PLL_LOCK_i \
+        TLX_data_tdata[7].u_TLX_IN_data_rev_tdata \
+        u_PAD_TLX_IN_data_rev_0_tvalid \
+        u_PAD_VSS_top \
+        TLX_data_tdata[15].u_TLX_IN_data_rev_tdata \
+        u_PAD_TLX_IN_flow_rev_0_tdata_2 \
+        u_PAD_TLX_IN_flow_rev_0_tvalid \
+        u_PAD_VSS_right \
+	u_PAD_VDD_top_right \
+        gen_addr_sel[0].u_PAD_addr_sel \
+        gen_addr_sel[1].u_PAD_addr_sel \
+        gen_addr_sel[2].u_PAD_addr_sel \
+        gen_addr_sel[3].u_PAD_addr_sel \
+        u_PAD_VDD_right \
+        u_PAD_VDDIO_right \
+        u_PAD_VSSIO_right \
+        TLX_data_tdata[15].u_TLX_data_rev_1_tdata \
+        u_PAD_TLX_flow_rev_1_tdata_2 \
+        u_PAD_TLX_flow_rev_1_tvalid \
+        TLX_data_tdata[7].u_TLX_data_rev_1_tdata \
+        u_PAD_TLX_data_rev_1_tvalid \
+        u_PAD_VSS_bottom \
+        u_PAD_TLX_flow_fwd_1_tvalid \
+        u_PAD_PLL_LOCK_o \
+        u_PAD_TLX_data_fwd_1_tvalid ]
+
+create_io_corner_cell {main_io.left main_io.top} -reference_cell PCORNER_G
+create_io_corner_cell {main_io.bottom main_io.left} -reference_cell PCORNER_G
+create_io_corner_cell {main_io.top main_io.right} -reference_cell PCORNER_G
+create_io_corner_cell {main_io.right main_io.bottom} -reference_cell PCORNER_G
+
+
+# Top IO
+create_matching_type -name "TLX_IN_fwd_tready" -uniquify 0 [list [get_cells bump_array_14_0] [get_pins u_PAD_TLX_IN_data_fwd_0_tready/PAD]]
+create_matching_type -name "TLX_IN_fwd_tdata0" -uniquify 0 [list [get_cells bump_array_14_1] [get_pins TLX_data_tdata[0].u_TLX_IN_data_fwd_tdata/PAD]]
+create_matching_type -name "VDDIO_top" -uniquify 0 [list [get_cells bump_array_14_2] [get_pins u_PAD_VDDIO_top/VDDPST]]
+create_matching_type -name "TLX_IN_fwd_tdata1" -uniquify 0 [list [get_cells bump_array_14_3] [get_pins TLX_data_tdata[1].u_TLX_IN_data_fwd_tdata/PAD]]
+create_matching_type -name "TLX_IN_fwd_tdata2" -uniquify 0 [list [get_cells bump_array_14_4] [get_pins TLX_data_tdata[2].u_TLX_IN_data_fwd_tdata/PAD]]
+create_matching_type -name "TLX_IN_fwd_tdata3" -uniquify 0 [list [get_cells bump_array_14_5] [get_pins TLX_data_tdata[3].u_TLX_IN_data_fwd_tdata/PAD]]
+create_matching_type -name "TLX_IN_fwd_tdata4" -uniquify 0 [list [get_cells bump_array_14_6] [get_pins TLX_data_tdata[4].u_TLX_IN_data_fwd_tdata/PAD]]
+create_matching_type -name "TLX_IN_fwd_tdata5" -uniquify 0 [list [get_cells bump_array_14_7] [get_pins TLX_data_tdata[5].u_TLX_IN_data_fwd_tdata/PAD]]
+create_matching_type -name "TLX_IN_fwd_tdata6" -uniquify 0 [list [get_cells bump_array_14_8] [get_pins TLX_data_tdata[6].u_TLX_IN_data_fwd_tdata/PAD]]
+create_matching_type -name "TLX_IN_fwd_clk" -uniquify 0 [list [get_cells bump_array_14_9] [get_pins u_PAD_IN_FWD_CLK/PAD]]
+create_matching_type -name "VSSIO_top" -uniquify 0 [list [get_cells bump_array_14_10] [get_pins u_PAD_VSSIO_top/VSSPST]]
+create_matching_type -name "TLX_IN_fwd_tdata7" -uniquify 0 [list [get_cells bump_array_14_11] [get_pins TLX_data_tdata[7].u_TLX_IN_data_fwd_tdata/PAD]]
+create_matching_type -name "TLX_IN_fwd_tvalid" -uniquify 0 [list [get_cells bump_array_14_12] [get_pins u_PAD_TLX_IN_data_fwd_0_tvalid/PAD]]
+
+create_matching_type -name "TLX_IN_fwd_flw_tready" -uniquify 0 [list [get_cells bump_array_13_0] [get_pins u_PAD_TLX_IN_flow_fwd_0_tready/PAD]]
+create_matching_type -name "TLX_IN_fwd_flw_tdata0" -uniquify 0 [list [get_cells bump_array_13_1] [get_pins u_PAD_TLX_IN_flow_fwd_0_tdata_0/PAD]]
+create_matching_type -name "TLX_IN_fwd_tdata8" -uniquify 0 [list [get_cells bump_array_13_2] [get_pins  TLX_data_tdata[8].u_TLX_IN_data_fwd_tdata/PAD]]
+create_matching_type -name "TLX_IN_fwd_tdata9" -uniquify 0 [list [get_cells bump_array_13_3] [get_pins  TLX_data_tdata[9].u_TLX_IN_data_fwd_tdata/PAD]]
+create_matching_type -name "TLX_IN_fwd_tdata10" -uniquify 0 [list [get_cells bump_array_13_4] [get_pins TLX_data_tdata[10].u_TLX_IN_data_fwd_tdata/PAD]]
+create_matching_type -name "TLX_IN_fwd_tdata11" -uniquify 0 [list [get_cells bump_array_13_5] [get_pins TLX_data_tdata[11].u_TLX_IN_data_fwd_tdata/PAD]]
+create_matching_type -name "TLX_IN_fwd_tdata12" -uniquify 0 [list [get_cells bump_array_13_6] [get_pins TLX_data_tdata[12].u_TLX_IN_data_fwd_tdata/PAD]]
+create_matching_type -name "TLX_IN_fwd_tdata13" -uniquify 0 [list [get_cells bump_array_13_7] [get_pins TLX_data_tdata[13].u_TLX_IN_data_fwd_tdata/PAD]]
+create_matching_type -name "TLX_IN_fwd_tdata14" -uniquify 0 [list [get_cells bump_array_13_8] [get_pins TLX_data_tdata[14].u_TLX_IN_data_fwd_tdata/PAD]]
+create_matching_type -name "TLX_IN_fwd_tdata15" -uniquify 0 [list [get_cells bump_array_13_9] [get_pins TLX_data_tdata[15].u_TLX_IN_data_fwd_tdata/PAD]]
+create_matching_type -name "TLX_IN_fwd_flw_tdata1" -uniquify 0 [list [get_cells bump_array_13_10] [get_pins u_PAD_TLX_IN_flow_fwd_0_tdata_1/PAD]]
+create_matching_type -name "TLX_IN_fwd_flw_tvalid" -uniquify 0 [list [get_cells bump_array_13_11] [get_pins u_PAD_TLX_IN_flow_fwd_0_tvalid/PAD]]
+create_matching_type -name "PLL_LCK_i" -uniquify 0 [list [get_cells bump_array_13_12] [get_pins u_PAD_PLL_LOCK_i/PAD]]
+
+create_matching_type -name "VDD_top" -uniquify 0 [list [get_cells bump_array_12_0] [get_pins u_PAD_VDD_top/VDD]]
+create_matching_type -name "TLX_IN_rev_tready" -uniquify 0 [list [get_cells bump_array_12_1] [get_pins u_PAD_TLX_IN_data_rev_0_tready/PAD]]
+create_matching_type -name "TLX_IN_rev_clk" -uniquify 0 [list [get_cells bump_array_12_2] [get_pins u_PAD_IN_REV_CLK/PAD]]
+create_matching_type -name "TLX_IN_rev_tdata0" -uniquify 0 [list [get_cells bump_array_12_3]  [get_pins TLX_data_tdata[0].u_TLX_IN_data_rev_tdata/PAD]]
+create_matching_type -name "TLX_IN_rev_tdata1" -uniquify 0 [list [get_cells bump_array_12_4]  [get_pins TLX_data_tdata[1].u_TLX_IN_data_rev_tdata/PAD]]
+create_matching_type -name "TLX_IN_rev_tdata2" -uniquify 0 [list [get_cells bump_array_12_5]  [get_pins TLX_data_tdata[2].u_TLX_IN_data_rev_tdata/PAD]]
+create_matching_type -name "TLX_IN_rev_tdata3" -uniquify 0 [list [get_cells bump_array_12_6]  [get_pins TLX_data_tdata[3].u_TLX_IN_data_rev_tdata/PAD]]
+create_matching_type -name "TLX_IN_rev_tdata4" -uniquify 0 [list [get_cells bump_array_12_7]  [get_pins TLX_data_tdata[4].u_TLX_IN_data_rev_tdata/PAD]]
+create_matching_type -name "TLX_IN_rev_tdata5" -uniquify 0 [list [get_cells bump_array_12_8]  [get_pins TLX_data_tdata[5].u_TLX_IN_data_rev_tdata/PAD]]
+create_matching_type -name "TLX_IN_rev_tdata6" -uniquify 0 [list [get_cells bump_array_12_9]  [get_pins TLX_data_tdata[6].u_TLX_IN_data_rev_tdata/PAD]]
+create_matching_type -name "TLX_IN_rev_tdata7" -uniquify 0 [list [get_cells bump_array_12_10] [get_pins TLX_data_tdata[7].u_TLX_IN_data_rev_tdata/PAD]]
+create_matching_type -name "TLX_IN_rev_tvalid" -uniquify 0 [list [get_cells bump_array_12_11] [get_pins u_PAD_TLX_IN_data_rev_0_tvalid/PAD]]
+create_matching_type -name "VSS_top" -uniquify 0 [list [get_cells bump_array_12_12] [get_pins u_PAD_VSS_top/VSS]]
+
+create_matching_type -name "TLX_IN_rev_flw_tready" -uniquify 0 [list [get_cells bump_array_11_0] [get_pins u_PAD_TLX_IN_flow_rev_0_tready/PAD]]
+create_matching_type -name "TLX_IN_rev_flw_tdata0" -uniquify 0 [list [get_cells bump_array_11_1] [get_pins u_PAD_TLX_IN_flow_rev_0_tdata_0/PAD]]
+create_matching_type -name "TLX_IN_rev_flw_tdata1" -uniquify 0 [list [get_cells bump_array_11_2] [get_pins u_PAD_TLX_IN_flow_rev_0_tdata_1/PAD]]
+create_matching_type -name "TLX_IN_rev_tdata8" -uniquify 0 [list [get_cells bump_array_11_3]  [get_pins TLX_data_tdata[8].u_TLX_IN_data_rev_tdata/PAD]]
+create_matching_type -name "TLX_IN_rev_tdata9" -uniquify 0 [list [get_cells bump_array_11_4]  [get_pins TLX_data_tdata[9].u_TLX_IN_data_rev_tdata/PAD]]
+create_matching_type -name "TLX_IN_rev_tdata10" -uniquify 0 [list [get_cells bump_array_11_5] [get_pins TLX_data_tdata[10].u_TLX_IN_data_rev_tdata/PAD]]
+create_matching_type -name "TLX_IN_rev_tdata11" -uniquify 0 [list [get_cells bump_array_11_6] [get_pins TLX_data_tdata[11].u_TLX_IN_data_rev_tdata/PAD]]
+create_matching_type -name "TLX_IN_rev_tdata12" -uniquify 0 [list [get_cells bump_array_11_7] [get_pins TLX_data_tdata[12].u_TLX_IN_data_rev_tdata/PAD]]
+create_matching_type -name "TLX_IN_rev_tdata13" -uniquify 0 [list [get_cells bump_array_11_8] [get_pins TLX_data_tdata[13].u_TLX_IN_data_rev_tdata/PAD]]
+create_matching_type -name "TLX_IN_rev_tdata14" -uniquify 0 [list [get_cells bump_array_11_9] [get_pins TLX_data_tdata[14].u_TLX_IN_data_rev_tdata/PAD]]
+create_matching_type -name "TLX_IN_rev_tdata15" -uniquify 0 [list [get_cells bump_array_11_10] [get_pins TLX_data_tdata[15].u_TLX_IN_data_rev_tdata/PAD]]
+create_matching_type -name "TLX_IN_rev_flw_tdata2" -uniquify 0 [list [get_cells bump_array_11_11] [get_pins u_PAD_TLX_IN_flow_rev_0_tdata_2/PAD]]
+create_matching_type -name "TLX_IN_rev_flw_tvalid" -uniquify 0 [list [get_cells bump_array_11_12] [get_pins u_PAD_TLX_IN_flow_rev_0_tvalid/PAD]]
+
+# Bottom IO
+create_matching_type -name "TLX_OUT_fwd_tready" -uniquify 0 [list [get_cells bump_array_0_0] [get_pins u_PAD_TLX_data_fwd_1_tready/PAD]]
+create_matching_type -name "TLX_OUT_fwd_tdata0" -uniquify 0 [list [get_cells bump_array_0_1] [get_pins TLX_data_tdata[0].u_TLX_data_fwd_1_tdata/PAD]]
+create_matching_type -name "VDDIO_bottom" -uniquify 0 [list [get_cells bump_array_0_2] [get_pins u_PAD_VDDIO_bottom/VDDPST]]
+create_matching_type -name "TLX_OUT_fwd_tdata1" -uniquify 0 [list [get_cells bump_array_0_3] [get_pins TLX_data_tdata[1].u_TLX_data_fwd_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_fwd_tdata2" -uniquify 0 [list [get_cells bump_array_0_4] [get_pins TLX_data_tdata[2].u_TLX_data_fwd_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_fwd_tdata3" -uniquify 0 [list [get_cells bump_array_0_5] [get_pins TLX_data_tdata[3].u_TLX_data_fwd_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_fwd_tdata4" -uniquify 0 [list [get_cells bump_array_0_6] [get_pins TLX_data_tdata[4].u_TLX_data_fwd_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_fwd_tdata5" -uniquify 0 [list [get_cells bump_array_0_7] [get_pins TLX_data_tdata[5].u_TLX_data_fwd_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_fwd_tdata6" -uniquify 0 [list [get_cells bump_array_0_8] [get_pins TLX_data_tdata[6].u_TLX_data_fwd_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_FWD_CLK" -uniquify 0 [list [get_cells bump_array_0_9] [get_pins u_PAD_OUT_FWD_CLK/PAD]]
+create_matching_type -name "VSSIO_bottom" -uniquify 0 [list [get_cells bump_array_0_10] [get_pins u_PAD_VSSIO_bottom/VSSPST]]
+create_matching_type -name "TLX_OUT_fwd_tdata7" -uniquify 0 [list [get_cells bump_array_0_11] [get_pins TLX_data_tdata[7].u_TLX_data_fwd_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_fwd_tvalid" -uniquify 0 [list [get_cells bump_array_0_12] [get_pins u_PAD_TLX_data_fwd_1_tvalid/PAD]]
+
+create_matching_type -name "TLX_OUT_fwd_flw_tready" -uniquify 0 [list [get_cells bump_array_1_0] [get_pins u_PAD_TLX_flow_fwd_1_tready/PAD]]
+create_matching_type -name "TLX_OUT_fwd_flw_tdata0" -uniquify 0 [list [get_cells bump_array_1_1] [get_pins u_PAD_TLX_flow_fwd_1_tdata_0/PAD]]
+create_matching_type -name "TLX_OUT_fwd_tdata8" -uniquify 0 [list [get_cells bump_array_1_2]  [get_pins TLX_data_tdata[8].u_TLX_data_fwd_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_fwd_tdata9" -uniquify 0 [list [get_cells bump_array_1_3]  [get_pins TLX_data_tdata[9].u_TLX_data_fwd_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_fwd_tdata10" -uniquify 0 [list [get_cells bump_array_1_4] [get_pins TLX_data_tdata[10].u_TLX_data_fwd_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_fwd_tdata11" -uniquify 0 [list [get_cells bump_array_1_5] [get_pins TLX_data_tdata[11].u_TLX_data_fwd_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_fwd_tdata12" -uniquify 0 [list [get_cells bump_array_1_6] [get_pins TLX_data_tdata[12].u_TLX_data_fwd_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_fwd_tdata13" -uniquify 0 [list [get_cells bump_array_1_7] [get_pins TLX_data_tdata[13].u_TLX_data_fwd_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_fwd_tdata14" -uniquify 0 [list [get_cells bump_array_1_8] [get_pins TLX_data_tdata[14].u_TLX_data_fwd_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_fwd_tdata15" -uniquify 0 [list [get_cells bump_array_1_9] [get_pins TLX_data_tdata[15].u_TLX_data_fwd_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_fwd_flw_tdata1" -uniquify 0 [list [get_cells bump_array_1_10] [get_pins u_PAD_TLX_flow_fwd_1_tdata_1/PAD]]
+create_matching_type -name "TLX_OUT_fwd_flw_tvalid" -uniquify 0 [list [get_cells bump_array_1_11] [get_pins u_PAD_TLX_flow_fwd_1_tvalid/PAD]]
+create_matching_type -name "PLL_LCK_o" -uniquify 0 [list [get_cells bump_array_1_12] [get_pins u_PAD_PLL_LOCK_o/PAD]]
+
+create_matching_type -name "VDD_bottom" -uniquify 0 [list [get_cells bump_array_2_0] [get_pins u_PAD_VDD_bottom/VDD]]
+create_matching_type -name "TLX_OUT_rev_tready" -uniquify 0 [list [get_cells bump_array_2_1] [get_pins u_PAD_TLX_data_rev_1_tready/PAD]]
+create_matching_type -name "TLX_OUT_REV_CLK" -uniquify 0 [list [get_cells bump_array_2_2] [get_pins u_PAD_OUT_REV_CLK/PAD]]
+create_matching_type -name "TLX_OUT_rev_tdata0" -uniquify 0 [list [get_cells bump_array_2_3] [get_pins TLX_data_tdata[0].u_TLX_data_rev_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_rev_tdata1" -uniquify 0 [list [get_cells bump_array_2_4] [get_pins TLX_data_tdata[1].u_TLX_data_rev_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_rev_tdata2" -uniquify 0 [list [get_cells bump_array_2_5] [get_pins TLX_data_tdata[2].u_TLX_data_rev_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_rev_tdata3" -uniquify 0 [list [get_cells bump_array_2_6] [get_pins TLX_data_tdata[3].u_TLX_data_rev_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_rev_tdata4" -uniquify 0 [list [get_cells bump_array_2_7] [get_pins TLX_data_tdata[4].u_TLX_data_rev_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_rev_tdata5" -uniquify 0 [list [get_cells bump_array_2_8] [get_pins TLX_data_tdata[5].u_TLX_data_rev_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_rev_tdata6" -uniquify 0 [list [get_cells bump_array_2_9] [get_pins TLX_data_tdata[6].u_TLX_data_rev_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_rev_tdata7" -uniquify 0 [list [get_cells bump_array_2_10] [get_pins TLX_data_tdata[7].u_TLX_data_rev_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_rev_tvalid" -uniquify 0 [list [get_cells bump_array_2_11] [get_pins u_PAD_TLX_data_rev_1_tvalid/PAD]]
+create_matching_type -name "VSS_bottom" -uniquify 0 [list [get_cells bump_array_2_12] [get_pins u_PAD_VSS_bottom/VSS]]
+
+create_matching_type -name "TLX_OUT_rev_flw_tready" -uniquify 0 [list [get_cells bump_array_3_0] [get_pins u_PAD_TLX_flow_rev_1_tready/PAD]]
+create_matching_type -name "TLX_OUT_rev_flw_tdata0" -uniquify 0 [list [get_cells bump_array_3_1] [get_pins u_PAD_TLX_flow_rev_1_tdata_0/PAD]]
+create_matching_type -name "TLX_OUT_rev_flw_tdata1" -uniquify 0 [list [get_cells bump_array_3_2] [get_pins u_PAD_TLX_flow_rev_1_tdata_1/PAD]]
+create_matching_type -name "TLX_OUT_rev_tdata8" -uniquify 0 [list [get_cells bump_array_3_3]   [get_pins TLX_data_tdata[8].u_TLX_data_rev_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_rev_tdata9" -uniquify 0 [list [get_cells bump_array_3_4]   [get_pins TLX_data_tdata[9].u_TLX_data_rev_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_rev_tdata10" -uniquify 0 [list [get_cells bump_array_3_5]  [get_pins TLX_data_tdata[10].u_TLX_data_rev_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_rev_tdata11" -uniquify 0 [list [get_cells bump_array_3_6]  [get_pins TLX_data_tdata[11].u_TLX_data_rev_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_rev_tdata12" -uniquify 0 [list [get_cells bump_array_3_7]  [get_pins TLX_data_tdata[12].u_TLX_data_rev_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_rev_tdata13" -uniquify 0 [list [get_cells bump_array_3_8]  [get_pins TLX_data_tdata[13].u_TLX_data_rev_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_rev_tdata14" -uniquify 0 [list [get_cells bump_array_3_9]  [get_pins TLX_data_tdata[14].u_TLX_data_rev_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_rev_tdata15" -uniquify 0 [list [get_cells bump_array_3_10] [get_pins TLX_data_tdata[15].u_TLX_data_rev_1_tdata/PAD]]
+create_matching_type -name "TLX_OUT_rev_flw_tdata2" -uniquify 0 [list [get_cells bump_array_3_11] [get_pins u_PAD_TLX_flow_rev_1_tdata_2/PAD]]
+create_matching_type -name "TLX_OUT_rev_flw_tvalid" -uniquify 0 [list [get_cells bump_array_3_12] [get_pins u_PAD_TLX_flow_rev_1_tvalid/PAD]]
+
+
+
+
+# Left IO
+create_matching_type -name "VDD_left" -uniquify 0 [list [get_cells bump_array_10_0] [get_pins u_PAD_VDD_left/VDD]]
+create_matching_type -name "VDDIO_left" -uniquify 0 [list [get_cells bump_array_9_0] [get_pins u_PAD_VDDIO_POC_left/VDDPST]]
+create_matching_type -name "VSSIO_left" -uniquify 0 [list [get_cells bump_array_8_0] [get_pins u_PAD_VSSIO_left/VSSPST]]
+create_matching_type -name "TLX_reset" -uniquify 0 [list [get_cells bump_array_7_0] [get_pins u_PAD_DL_FWD_RESETn/PAD]]
+create_matching_type -name "aRESET" -uniquify 0 [list [get_cells bump_array_6_0] [get_pins u_PAD_aRESETn/PAD]]
+create_matching_type -name "VSS_left" -uniquify 0 [list [get_cells bump_array_5_0] [get_pins u_PAD_VSS_left/VSS]]
+create_matching_type -name "REF_CLK" -uniquify 0 [list [get_cells bump_array_4_0] [get_pins u_PAD_REF_CLK/PAD]]
+
+create_matching_type -name "AGNDHV_left" -uniquify 0 [list [get_cells bump_array_7_1 ] [get_pins u_PAD_AGNDHV_left/AVSS]]
+create_matching_type -name "AGND_left" -uniquify 0 [list [get_cells bump_array_6_1 ] [get_pins u_PAD_AGND_left/AVSS]]
+create_matching_type -name "AVDD_left" -uniquify 0 [list [get_cells bump_array_5_1 ] [get_pins u_PAD_AVDD_left/AVDD]]
+create_matching_type -name "AVDDHV_left" -uniquify 0 [list [get_cells bump_array_4_1 ] [get_pins u_PAD_AVDDHV_left/AVDD]]
+
+
+# Right IO
+create_matching_type -name "VSS_right" -uniquify 0 [list [get_cells bump_array_10_12] [get_pins u_PAD_VSS_right/VSS]]
+create_matching_type -name "addr_sel0" -uniquify 0 [list [get_cells bump_array_9_12] [get_pins gen_addr_sel[0].u_PAD_addr_sel/PAD]]
+create_matching_type -name "addr_sel1" -uniquify 0 [list [get_cells bump_array_8_12] [get_pins gen_addr_sel[1].u_PAD_addr_sel/PAD]]
+create_matching_type -name "addr_sel2" -uniquify 0 [list [get_cells bump_array_7_12] [get_pins gen_addr_sel[2].u_PAD_addr_sel/PAD]]
+create_matching_type -name "addr_sel3" -uniquify 0 [list [get_cells bump_array_6_12] [get_pins gen_addr_sel[3].u_PAD_addr_sel/PAD]]
+create_matching_type -name "VDD_right" -uniquify 0 [list [get_cells bump_array_4_12] [get_pins u_PAD_VDD_right/VDD]]
+create_matching_type -name "VDD_top_right" -uniquify 0 [list [get_cells bump_array_10_11] [get_pins u_PAD_VDD_top_right/VDD]]
+create_matching_type -name "VDDIO_right" -uniquify 0 [list [get_cells bump_array_5_12] [get_pins u_PAD_VDDIO_right/VDDPST]]
+create_matching_type -name "VSSIO_right" -uniquify 0 [list [get_cells bump_array_7_11] [get_pins u_PAD_VSSIO_right/VSSPST]]
+
+
+
+place_io
diff --git a/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/power_plan.tcl b/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/power_plan.tcl
index 407e63e1efc3bd7abbec1e5f5b8bab07c6034a2d..49abf6cbefe13baf22f80b6ba942d02cf856e411 100644
--- a/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/power_plan.tcl
+++ b/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/power_plan.tcl
@@ -1,16 +1,61 @@
 connect_pg_net -automatic
 
 create_pg_ring_pattern ring_pattern -horizontal_layer M7 -horizontal_width {5} -horizontal_spacing {2}\
-                                    -vertical_layer M8 -vertical_width {5} -vertical_spacing {2}
+                                    -vertical_layer M6 -vertical_width {4} -vertical_spacing {2} -nets {AGND AVDD AVDDHV VDD VSS}
 
-create_pg_mesh_pattern mesh_pattern -layers {{{vertical_layer: M8} {width: 1} {pitch: 30} {offset: 20}} \
-                                                {{horizontal_layer: M5} {width: 1} {pitch: 30} {offset: 20}}}
-create_pg_std_cell_conn_pattern std_pattern -layers {M1} -check_std_cell_drc false -mark_as_follow_pin false -rail_width {0.13 0.13}
+# 320.66 SRAM width
+create_pg_mesh_pattern mesh_pattern -layers {{{vertical_layer: M6} {width: 4} {pitch: 30.566} {offset: 21.5}} \
+                                                {{horizontal_layer: M5} {width: 4} {pitch: 30} {offset: 20}}}
+create_pg_std_cell_conn_pattern std_pattern -layers {M2} -check_std_cell_drc false -mark_as_follow_pin false -rail_width {0.13 0.13}
 
-set_pg_strategy core_ring -pattern {{name: ring_pattern} {nets: {VDD VSS}} {offset: {3 3}}} -core 
-set_pg_strategy M5M8_mesh -pattern {{name: mesh_pattern} {nets: {VDD VSS}}} -core
+set_pg_strategy core_ring -pattern {{name: ring_pattern} {nets: {VDD VSS AVDD AVDDHV AGND}} {offset: {3 3}}} -core 
+set_pg_strategy M5M6_mesh -pattern {{name: mesh_pattern} {nets: {VDD VSS}}} -core -extension {{{stop : first_target}}}
 set_pg_strategy std_cell_strat -core -pattern {{name: std_pattern} {nets: {VDD VSS}}}
 
 compile_pg -strategies core_ring
-compile_pg -strategies M5M8_mesh
+compile_pg -strategies M5M6_mesh
 compile_pg -strategies std_cell_strat
+
+set_app_options -name plan.pgroute.hmpin_connection_target_layers -value M6
+create_pg_macro_conn_pattern io_to_ring_h -pin_conn_type scattered_pin \
+    -pin_layers {M2} -layers {M2 M6} -width 1.41 
+set_pg_strategy h_io_to_ring -macros [list u_PAD_VDD_left u_PAD_VDD_top u_PAD_VSS_top u_PAD_VSS_left u_PAD_VDD_right u_PAD_VDD_top_right u_PAD_VSS_right u_PAD_VDD_bottom u_PAD_VSS_bottom] \
+    -pattern {{name: io_to_ring_h}{nets: VDD VSS}}
+set_pg_strategy h_io_to_ring_a -macros [list u_PAD_AVDD_left u_PAD_AVDDHV_left u_PAD_AGND_left u_PAD_AGNDHV_left]\
+    -pattern {{name: io_to_ring_h}{nets: AVDD AVDDHV AGND}}
+
+compile_pg -strategies h_io_to_ring 
+compile_pg -strategies h_io_to_ring_a
+
+set_app_options -name plan.pgroute.hmpin_connection_target_layers -value M7
+create_pg_macro_conn_pattern macro_to_ring -pin_conn_type scattered_pin \
+    -pin_layers {M5} -layers {M2 M6} -width 2.4
+set_pg_strategy PLL_pins -macros u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PLL.u_snps_PLL/u_snps_PLL \
+    -pattern {{name: macro_to_ring}{nets: AVDD AVDDHV AGND}}
+compile_pg -strategies PLL_pins -ignore_drc
+
+set_app_options -name plan.pgroute.hmpin_connection_target_layers -value M5
+create_pg_macro_conn_pattern macro_to_strap -pin_conn_type scattered_pin \
+    -pin_layers {M3} -layers {M2 M7} -width 2.5 
+set_pg_strategy PLL_pins_top -macros u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PLL.u_snps_PLL/u_snps_PLL \
+    -pattern {{name: macro_to_strap}{nets: VDD VSS}}
+compile_pg -strategies PLL_pins_top -ignore_drc
+
+
+
+set_app_options -name plan.pgroute.hmpin_connection_target_layers -value M7
+create_pg_macro_conn_pattern TS_to_ring -pin_conn_type scattered_pin \
+    -pin_layers {M6} -layers {M2 M6} -width 4
+set_pg_strategy TS_pins -macros u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PVT_ts0.u_snps_PVT_ts0/u_synopsys_ts \
+    -pattern {{name: TS_to_ring}{nets: AVDD VDD VSS}}
+compile_pg -strategies TS_pins 
+
+set_pg_strategy PD_pins -macros u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PVT_pd0.u_snps_PVT_pd0/u_synopsys_pd \
+    -pattern {{name: TS_to_ring}{nets: AVDD VDD VSS}}
+compile_pg -strategies PD_pins 
+
+# insert_boundary_cells
+create_boundary_cells -left_boundary_cell [get_lib_cells {cln28ht/ENDCAPTIE3_A12PP140ZTS_C35}] -right_boundary_cell [get_lib_cells {cln28ht/ENDCAPTIE3_A12PP140ZTS_C35}]
+
+# tap cells
+create_tap_cells -distance 100.0000 -lib_cell [get_lib_cells {cln28ht/FILLTIE4_A12PP140ZTS_C35}]
\ No newline at end of file
diff --git a/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/synopsys_lib_conversion.tcl b/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/synopsys_lib_conversion.tcl
index d379fd0b4fff0ded225d44da82670430f3fefb3a..60de66fc2ea537346cb222b48421f5651443b510 100644
--- a/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/synopsys_lib_conversion.tcl
+++ b/ASIC/TSMC28nm_HPCP/Synopsys_FC_flow/synopsys_lib_conversion.tcl
@@ -1,16 +1,36 @@
+## Paths Please Edit for your system
+set cln28ht_tech_path           /home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/arm_tech/r1p0
+set standard_cell_base_path     /home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/sc12mcpp140z_base_svt_c35/r2p0
+set pmk_base_path               /home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/sc12mcpp140z_pmk_svt_c35/r1p0
+set ret_base_path               /home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/sc12mcpp140z_rklo_lvt_svt_c30_c35/r1p0
+
 # Technology files
-set cln28ht_tech_path /home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/arm_tech/r1p0
-set cln28ht_tech_file   $cln28ht_tech_path/milkyway/1p8m_5x2z_utalrdl/sc9mcpp140z_tech.tf
-set cln28ht_lef_file    $cln28ht_tech_path/lef/1p8m_5x2z_utalrdl/sc9mcpp140z_tech.lef
+set cln28ht_tech_file                       $cln28ht_tech_path/milkyway/1p8m_5x2z_utalrdl/sc12mcpp140z_tech.tf
+set cln28ht_lef_file                        $cln28ht_tech_path/lef/1p8m_5x2z_utalrdl/sc12mcpp140z_tech.lef
 
 # Standard Cell libraries
-set sc9mcpp140z_base_path               /home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/sc9mcpp140z_base_svt_c35/r0p0
-set sc9mcpp140z_lef_file                $sc9mcpp140z_base_path/lef/sc9mcpp140z_cln28ht_base_svt_c35.lef
-set sc9mcpp140z_gds_file                $sc9mcpp140z_base_path/gds2/sc9mcpp140z_cln28ht_base_svt_c35.gds2
-set sc9mcpp140z_db_file_ss_0p81v_125C   $sc9mcpp140z_base_path/db/sc9mcpp140z_cln28ht_base_svt_c35_ssg_cworstt_max_0p81v_125c.db
-set sc9mcpp140z_db_file_tt_0p90v_25C    $sc9mcpp140z_base_path/db/sc9mcpp140z_cln28ht_base_svt_c35_tt_ctypical_max_0p90v_25c.db
-set sc9mcpp140z_db_file_ff_0p99v_m40C   $sc9mcpp140z_base_path/db/sc9mcpp140z_cln28ht_base_svt_c35_ffg_cbestt_min_0p99v_m40c.db
-set sc9mcpp140z_antenna_file            $sc9mcpp140z_base_path/milkyway/1p8m_5x2z_utalrdl/sc9mcpp140z_cln28ht_base_svt_c35_antenna.clf
+set standard_cell_lef_file                  $standard_cell_base_path/lef/sc12mcpp140z_cln28ht_base_svt_c35.lef
+set standard_cell_gds_file                  $standard_cell_base_path/gds2/sc12mcpp140z_cln28ht_base_svt_c35.gds2
+set standard_cell_db_file_ss_0p81v_125C     $standard_cell_base_path/db/sc12mcpp140z_cln28ht_base_svt_c35_ssg_cworstt_max_0p81v_125c.db
+set standard_cell_db_file_tt_0p90v_25C      $standard_cell_base_path/db/sc12mcpp140z_cln28ht_base_svt_c35_tt_ctypical_max_0p90v_25c.db
+set standard_cell_db_file_ff_0p99v_m40C     $standard_cell_base_path/db/sc12mcpp140z_cln28ht_base_svt_c35_ffg_cbestt_min_0p99v_m40c.db
+set standard_cell_antenna_file              $standard_cell_base_path/milkyway/1p8m_5x2z_utalrdl/sc12mcpp140z_cln28ht_base_svt_c35_antenna.clf
+
+# Power Management Kit 
+set pmk_lef_file                            $pmk_base_path/lef/sc12mcpp140z_cln28ht_pmk_svt_c35.lef
+set pmk_gds_file                            $pmk_base_path/gds2/sc12mcpp140z_cln28ht_pmk_svt_c35.gds2
+set pmk_db_file_ss_0p81v_125C               $pmk_base_path/db/sc12mcpp140z_cln28ht_pmk_svt_c35_ssg_cworstt_max_0p81v_125c.db
+set pmk_db_file_tt_0p90v_25C                $pmk_base_path/db/sc12mcpp140z_cln28ht_pmk_svt_c35_tt_ctypical_max_0p90v_25c.db
+set pmk_db_file_ff_0p99v_m40C               $pmk_base_path/db/sc12mcpp140z_cln28ht_pmk_svt_c35_ffg_cbestt_min_0p99v_m40c.db
+set pmk_antenna_file                        $pmk_base_path/milkyway/1p8m_5x2z_utalrdl/sc12mcpp140z_cln28ht_pmk_svt_c35_antenna.clf
+
+# Retention Kit
+set ret_lef_file                            $ret_base_path/lef/sc12mcpp140z_cln28ht_rklo_lvt_svt_c30_c35.lef
+set ret_gds_file                            $ret_base_path/gds2/sc12mcpp140z_cln28ht_rklo_lvt_svt_c30_c35.gds2
+set ret_db_file_ss_0p81v_125C               $ret_base_path/db/sc12mcpp140z_cln28ht_rklo_lvt_svt_c30_c35_ssg_cworstt_max_0p81v_125c.db
+set ret_db_file_tt_0p90v_25C                $ret_base_path/db/sc12mcpp140z_cln28ht_rklo_lvt_svt_c30_c35_tt_ctypical_max_0p90v_25c.db
+set ret_db_file_ff_0p99v_m40C               $ret_base_path/db/sc12mcpp140z_cln28ht_rklo_lvt_svt_c30_c35_ffg_cbestt_min_0p99v_m40c.db
+set ret_antenna_file                        $ret_base_path/milkyway/1p8m_5x2z_utalrdl/sc12mcpp140z_cln28ht_rklo_lvt_svt_c30_c35_antenna.clf
 
 # SRAM files (using Arm compiler)
 set sram_32k_lef_file                   $env(SOCLABS_SRAM_CHIPLET_DIR)/memories/sram_32b_32k/sram_32b_32k.lef
@@ -32,7 +52,16 @@ set sram_16k_db_file_ss_0p81v_125c      $env(SOCLABS_SRAM_CHIPLET_DIR)/memories/
 set sram_16k_db_file_tt_0p90v_25c       $env(SOCLABS_SRAM_CHIPLET_DIR)/memories/sram_32b_16k/sram_32b_16k_tt_ctypical_0p90v_0p90v_25c.db
 set sram_16k_db_file_ff_0p99v_m40c      $env(SOCLABS_SRAM_CHIPLET_DIR)/memories/sram_32b_16k/sram_32b_16k_ffg_cbestt_0p99v_0p99v_m40c.db
 
+# IO Paths
+set TSMC_28NM_PDK_PATH          /home/dwn1c21/SoC-Labs/phys_ip/TSMC/28
+set tphn28hpcpgv18_lef_file     $TSMC_28NM_PDK_PATH/CMOS/HPC+/IO1.8V/iolib/STAGGERED/tphn28hpcpgv18_170d_FE/TSMCHOME/digital/Back_End/lef/tphn28hpcpgv18_110a/mt_2/9lm/lef/tphn28hpcpgv18_9lm.lef
+set tphn28hpcpgv18_lib_path     $TSMC_28NM_PDK_PATH/CMOS/HPC+/IO1.8V/iolib/STAGGERED/tphn28hpcpgv18_170d_FE/TSMCHOME/digital/Front_End/timing_power_noise/NLDM/tphn28hpcpgv18_170a
+set IO_TT_0p9v_1p8v_25c_db      $tphn28hpcpgv18_lib_path/tphn28hpcpgv18tt0p9v1p8v25c.db
+set IO_FF_0p99v_1p98v_m40c_db   $tphn28hpcpgv18_lib_path/tphn28hpcpgv18ffg0p99v1p98vm40c.db
+set IO_SS_0p81v_1p62v_125c_db   $tphn28hpcpgv18_lib_path/tphn28hpcpgv18ssg0p81v1p62v125c.db
 
+set pad_lef_file /home/dwn1c21/SoC-Labs/phys_ip/TSMC/28/iolib/tpbn28v_160a_FE/TSMCHOME/digital/Back_End/lef/tpbn28v_160a/cup/8m/8M_5X2Z/lef/tpbn28v_8lm.lef
+set bump_lef_file /home/dwn1c21/SoC-Labs/phys_ip/TSMC/28/iolib/tpbn28v_160a_FE/TSMCHOME/digital/Back_End/lef/tpbn28v_160a/fc/fc_eu/MTRDL/8m/8M_Z/lef/tpbn28v_8lm.lef
 # Synopsys PLL files
 set Synopsys_PLL_dir /home/dwn1c21/SoC-Labs/Synopsys_ip/IP/PLL/synopsys/dwc_pll3ghz_tsmc28hpcp/1.10a/macro
 set Synopsys_PLL_lef_file $Synopsys_PLL_dir/lef/5m4x0z/dwc_z19606ts_ns_merged.lef
@@ -60,23 +89,33 @@ set Synopsys_VM_lib_file    $Synopsys_VM_dir/liberty/mr74140_wc_vmin_125c.lib
 set Synopsys_VM_db_file     $Synopsys_VM_dir/db/mr74140_wc_vmin_125c.db
 set Synopsys_VM_gds_file    $Synopsys_VM_dir/gdsii/mr74140_v1r1.gds
 
-create_fusion_lib -dbs [list $sc9mcpp140z_db_file_ss_0p81v_125C $sc9mcpp140z_db_file_tt_0p90v_25C $sc9mcpp140z_db_file_ff_0p99v_m40C]  -lefs [list $cln28ht_lef_file $sc9mcpp140z_lef_file] -technology $cln28ht_tech_file cln28ht
+# Create standard cell fusion library
+create_fusion_lib -dbs [list $standard_cell_db_file_ss_0p81v_125C $standard_cell_db_file_tt_0p90v_25C $standard_cell_db_file_ff_0p99v_m40C]  -lefs [list $cln28ht_lef_file $standard_cell_lef_file] -technology $cln28ht_tech_file cln28ht
 save_fusion_lib cln28ht
-
 close_fusion_lib cln28ht
 
+# Create Power Management Kit fusion library
+create_fusion_lib -dbs [list $pmk_db_file_ss_0p81v_125C $pmk_db_file_tt_0p90v_25C $pmk_db_file_ff_0p99v_m40C] -lefs [list $cln28ht_lef_file $pmk_lef_file] -technology $cln28ht_tech_file cln28ht_pmk
+save_fusion_lib cln28ht_pmk
+close_fusion_lib cln28ht_pmk
+
+# Create Retention fusion library
+create_fusion_lib -dbs [list $ret_db_file_ss_0p81v_125C $ret_db_file_tt_0p90v_25C $ret_db_file_ff_0p99v_m40C] -lefs [list $cln28ht_lef_file $ret_lef_file] -technology $cln28ht_tech_file cln28ht_ret
+save_fusion_lib cln28ht_ret
+close_fusion_lib cln28ht_ret
+
 # 32K SRAM
 read_lib $sram_32k_lib_file_ss_0p81v_125c 
 write_lib -output $sram_32k_db_file_ss_0p81v_125c -format db sram_32b_32k_ssg_cworstt_0p81v_0p81v_125c
-close_lib sram_32b_32k_ssg_cworstt_0p81v_0p81v_125c
+close_lib -all
 
 read_lib $sram_32k_lib_file_tt_0p90v_25c 
 write_lib -output $sram_32k_db_file_tt_0p90v_25c -format db sram_32b_32k_tt_ctypical_0p90v_0p90v_25c
-close_lib sram_32b_32k_tt_ctypical_0p90v_0p90v_25c
+close_lib -all
 
 read_lib $sram_32k_lib_file_ff_0p99v_m40c 
 write_lib -output $sram_32k_db_file_ff_0p99v_m40c -format db sram_32b_32k_ffg_cbestt_0p99v_0p99v_m40c
-close_lib sram_32b_32k_ffg_cbestt_0p99v_0p99v_m40c
+close_lib -all
 
 create_fusion_lib -dbs [list $sram_32k_db_file_ss_0p81v_125c $sram_32k_db_file_tt_0p90v_25c $sram_32k_db_file_ff_0p99v_m40c] -lefs $sram_32k_lef_file -technology $cln28ht_tech_file sram_32k
 save_fusion_lib sram_32k
@@ -85,15 +124,15 @@ close_fusion_lib sram_32k
 # 16K SRAM
 read_lib $sram_16k_lib_file_ss_0p81v_125c 
 write_lib -output $sram_16k_db_file_ss_0p81v_125c -format db sram_32b_16k_ssg_cworstt_0p81v_0p81v_125c
-close_lib sram_32b_16k_ssg_cworstt_0p81v_0p81v_125c
+close_lib -all
 
 read_lib $sram_16k_lib_file_tt_0p90v_25c 
 write_lib -output $sram_16k_db_file_tt_0p90v_25c -format db sram_32b_16k_tt_ctypical_0p90v_0p90v_25c
-close_lib sram_32b_16k_tt_ctypical_0p90v_0p90v_25c
+close_lib -all
 
 read_lib $sram_16k_lib_file_ff_0p99v_m40c 
 write_lib -output $sram_16k_db_file_ff_0p99v_m40c -format db sram_32b_16k_ffg_cbestt_0p99v_0p99v_m40c
-close_lib sram_32b_16k_ffg_cbestt_0p99v_0p99v_m40c
+close_lib -all
 
 create_fusion_lib -dbs [list $sram_16k_db_file_ss_0p81v_125c $sram_16k_db_file_tt_0p90v_25c $sram_16k_db_file_ff_0p99v_m40c] -lefs $sram_16k_lef_file -technology $cln28ht_tech_file sram_16k
 save_fusion_lib sram_16k
@@ -128,4 +167,18 @@ create_fusion_lib -dbs $Synopsys_VM_db_file -lefs $Synopsys_VM_lef_file -technol
 save_fusion_lib Synopsys_VM
 close_fusion_lib Synopsys_VM
 
+# IO Lib
+create_fusion_lib -dbs [list $IO_SS_0p81v_1p62v_125c_db $IO_TT_0p9v_1p8v_25c_db $IO_FF_0p99v_1p98v_m40c_db] -lefs $tphn28hpcpgv18_lef_file -technology $cln28ht_tech_file io_lib
+save_fusion_lib io_lib
+close_fusion_lib io_lib
+
+# Pad Libs
+create_fusion_lib -lefs $pad_lef_file -technology $cln28ht_tech_file pad_lib
+save_fusion_lib pad_lib
+close_fusion_lib pad_lib
+
+create_fusion_lib -lefs $bump_lef_file -technology $cln28ht_tech_file bump_lib
+save_fusion_lib bump_lib
+close_fusion_lib bump_lib
+
 exit
\ No newline at end of file
diff --git a/ASIC/TSMC28nm_HPCP/constraints/sram_chiplet.sdc b/ASIC/TSMC28nm_HPCP/constraints/sram_chiplet.sdc
index 4b2202f9f4a7357788c5a96a7d3f8ace49d0fd35..c91b2baf91fb06f270439444e8a991ab4560cecc 100644
--- a/ASIC/TSMC28nm_HPCP/constraints/sram_chiplet.sdc
+++ b/ASIC/TSMC28nm_HPCP/constraints/sram_chiplet.sdc
@@ -1,14 +1,18 @@
 #-----------------------------------------------------------------------------
-# SRAM Chiplet constraints for ASIC
+# SRAM Chiplet constraints for ASIC on TSMC 28nm HPC+ node
 # A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license.
 #
 # Contributors
 #
 # Daniel Newbrook (d.newbrook@soton.ac.uk)
 #
-# Copyright (C) 2021-3, SoC Labs (www.soclabs.org)
+# Copyright (C) 2021-4, SoC Labs (www.soclabs.org)
 #-----------------------------------------------------------------------------
 
+set_units -time ns;
+set_units -capacitance pF;
+
+
 #### CLOCK DEFINITION
 
 set REF_CLK "REF_CLK";
@@ -16,18 +20,47 @@ set TLX_IN_FWD_CLK "TLX_IN_FWD_CLK"
 set TLX_OUT_REV_CLK "TLX_OUT_REV_CLK"
 set SYS_CLK "PLL_CLK"
 
-set_units -time ns;
-set_units -capacitance pF;
 
 set REF_CLK_PERIOD 4;
 set TLX_IN_FWD_CLK_PERIOD 1;
 set TLX_OUT_REV_CLK_PERIOD 1;
 set SYS_CLK_PERIOD 1;
 
-set CLK_ERROR 0.35; 
-set INTER_CLOCK_UNCERTAINTY 0.1
+set REF_CLK_JITTER 0.0274; #from CDCM61001 datasheet 
+set REF_CLK_TRANS 0.825;
+
+set TLX_CLK_UNCERTAINTY 0.1;
+
+create_clock -name "$REF_CLK" -period "$REF_CLK_PERIOD"  [get_ports PAD_REF_CLK]
+set_clock_uncertainty $REF_CLK_JITTER  $REF_CLK  
+set_clock_transition $REF_CLK_TRANS [get_clocks $REF_CLK]
+
+create_clock -name "$TLX_IN_FWD_CLK" -period "$TLX_IN_FWD_CLK_PERIOD"  [get_ports PAD_IN_FWD_CLK]
+set_clock_uncertainty $TLX_CLK_UNCERTAINTY $TLX_IN_FWD_CLK
+
+create_clock -name "$TLX_OUT_REV_CLK" -period "$TLX_OUT_REV_CLK_PERIOD" [get_ports PAD_OUT_REV_CLK]
+set_clock_uncertainty $TLX_CLK_UNCERTAINTY $TLX_OUT_REV_CLK
+
+create_generated_clock -name "$SYS_CLK" -source [get_ports PAD_REF_CLK] -multiply_by 4 [get_pins u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/PLL_CLK1]
+create_generated_clock -name "TLX_IN_REV_CLK" -source [get_pins u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/PLL_CLK1] -multiply_by 1 [get_pins u_PAD_IN_REV_CLK/PAD]
+
+
+set_output_delay 0.1 -clock TLX_IN_REV_CLK [get_ports PAD_TLX_IN_data_rev_0_tdata]
+set_output_delay 0.1 -clock TLX_IN_REV_CLK [get_ports PAD_TLX_IN_data_rev_0_tvalid]
+set_output_delay 0.1 -clock TLX_IN_REV_CLK [get_ports PAD_TLX_IN_flow_rev_0_tdata]
+set_output_delay 0.1 -clock TLX_IN_REV_CLK [get_ports PAD_TLX_IN_flow_rev_0_tvalid]
+set_output_delay 0.1 -clock TLX_IN_REV_CLK [get_ports PAD_TLX_IN_flow_fwd_0_tready]
+set_output_delay 0.1 -clock TLX_IN_REV_CLK [get_ports PAD_TLX_IN_data_fwd_0_tready]
+
+set_input_delay 0.1 -clock $TLX_IN_FWD_CLK [get_ports PAD_TLX_IN_data_rev_0_tready]
+set_input_delay 0.1 -clock $TLX_IN_FWD_CLK [get_ports PAD_TLX_IN_flow_rev_0_tready]
+set_input_delay 0.1 -clock $TLX_IN_FWD_CLK [get_ports PAD_TLX_IN_flow_fwd_0_tdata]
+set_input_delay 0.1 -clock $TLX_IN_FWD_CLK [get_ports PAD_TLX_IN_flow_fwd_0_tvalid]
+set_input_delay 0.1 -clock $TLX_IN_FWD_CLK [get_ports PAD_TLX_IN_data_fwd_0_tdata]
+set_input_delay 0.1 -clock $TLX_IN_FWD_CLK [get_ports PAD_TLX_IN_data_fwd_0_tvalid]
+
+set_max_capacitance 3 [all_outputs]
+set_max_fanout 10 [all_inputs]
+
+
 
-create_clock -name "$REF_CLK" -period "$REF_CLK_PERIOD"  [get_ports REF_CLK]
-create_clock -name "$TLX_IN_FWD_CLK" -period "$TLX_IN_FWD_CLK_PERIOD"  [get_ports IN_FWD_CLK]
-create_clock -name "$TLX_OUT_REV_CLK" -period "$TLX_OUT_REV_CLK_PERIOD" [get_ports OUT_REV_CLK]
-create_generated_clock -name "$SYS_CLK" -source [get_ports REF_CLK] -multiply_by 4 [get_pins u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/PLL_CLK1]
\ No newline at end of file
diff --git a/ASIC/TSMC28nm_HPCP/sram_chiplet.upf b/ASIC/TSMC28nm_HPCP/sram_chiplet.upf
new file mode 100644
index 0000000000000000000000000000000000000000..7a0b4a0a7fdff822f2eeaad40ae58cb058088b12
--- /dev/null
+++ b/ASIC/TSMC28nm_HPCP/sram_chiplet.upf
@@ -0,0 +1,96 @@
+
+
+create_power_domain TOP
+
+# Always on VDD
+create_supply_port VDD
+create_supply_net  VDD -domain TOP
+connect_supply_net VDD -ports VDD
+
+# Ground
+create_supply_port VSS
+create_supply_net  VSS -domain TOP
+connect_supply_net VSS -ports VSS
+
+
+create_supply_port AVDD 
+create_supply_net AVDD -domain TOP
+connect_supply_net AVDD -ports AVDD
+
+create_supply_port AVDDHV 
+create_supply_net  AVDDHV -domain TOP
+connect_supply_net AVDDHV -ports AVDDHV
+
+create_supply_port AGND 
+create_supply_net AGND -domain TOP
+connect_supply_net AGND -ports AGND
+
+# Connect macro supplies
+connect_supply_net VDD -ports u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/g_srams[0].u_sram_32b_32k/VDDCE
+connect_supply_net VDD -ports u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/g_srams[1].u_sram_32b_32k/VDDCE
+connect_supply_net VDD -ports u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/g_srams[2].u_sram_32b_32k/VDDCE
+connect_supply_net VDD -ports u_top_sram_chiplet/u_SRAM_wrapper_0/u_SRAM/gen_sram.u_sram_32b_32k_N/VDDCE
+
+connect_supply_net VDD -ports u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/g_srams[0].u_sram_32b_32k/VDDCE
+connect_supply_net VDD -ports u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/g_srams[1].u_sram_32b_32k/VDDCE
+connect_supply_net VDD -ports u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/g_srams[2].u_sram_32b_32k/VDDCE
+connect_supply_net VDD -ports u_top_sram_chiplet/u_SRAM_wrapper_1/u_SRAM/gen_sram.u_sram_32b_32k_N/VDDCE
+
+connect_supply_net VDD -ports u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/g_srams[0].u_sram_32b_32k/VDDCE
+connect_supply_net VDD -ports u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/g_srams[1].u_sram_32b_32k/VDDCE
+connect_supply_net VDD -ports u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/g_srams[2].u_sram_32b_32k/VDDCE
+connect_supply_net VDD -ports u_top_sram_chiplet/u_SRAM_wrapper_2/u_SRAM/gen_sram.u_sram_32b_32k_N/VDDCE
+
+connect_supply_net VDD -ports u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/g_srams[0].u_sram_32b_32k/VDDCE
+connect_supply_net VDD -ports u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/g_srams[1].u_sram_32b_32k/VDDCE
+connect_supply_net VDD -ports u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/g_srams[2].u_sram_32b_32k/VDDCE
+connect_supply_net VDD -ports u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/gen_split_sram.u_sram_32b_16k_0/VDDCE
+connect_supply_net VDD -ports u_top_sram_chiplet/u_SRAM_wrapper_3/u_SRAM/gen_split_sram.u_sram_32b_16k_1/VDDCE
+
+connect_supply_net AVDD -ports u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PLL.u_snps_PLL/u_snps_PLL/vp_vref 
+connect_supply_net AVDD -ports u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PLL.u_snps_PLL/u_snps_PLL/avdd 
+connect_supply_net AVDDHV -ports u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PLL.u_snps_PLL/u_snps_PLL/avddhv 
+connect_supply_net VDD -ports u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PLL.u_snps_PLL/u_snps_PLL/dvdd
+connect_supply_net AGND -ports u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PLL.u_snps_PLL/u_snps_PLL/agnd 
+connect_supply_net VSS -ports u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PLL.u_snps_PLL/u_snps_PLL/dgnd
+
+connect_supply_net VDD -ports u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PVT_ts0.u_snps_PVT_ts0/u_synopsys_ts/VDD 
+connect_supply_net AVDD -ports u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PVT_ts0.u_snps_PVT_ts0/u_synopsys_ts/VDDA
+connect_supply_net VSS -ports u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PVT_ts0.u_snps_PVT_ts0/u_synopsys_ts/VSS
+
+connect_supply_net VDD -ports u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PVT_pd0.u_snps_PVT_pd0/u_synopsys_pd/VDD
+connect_supply_net AVDD -ports u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PVT_pd0.u_snps_PVT_pd0/u_synopsys_pd/VDDA 
+connect_supply_net VSS -ports u_top_sram_chiplet/u_sram_chiplet_apb_subsystem/gen_snps_PVT_pd0.u_snps_PVT_pd0/u_synopsys_pd/VSS
+
+connect_supply_net AGND -ports u_PAD_AGNDHV_left/AVSS
+connect_supply_net AGND -ports u_PAD_AGND_left/AVSS
+connect_supply_net AVDD -ports u_PAD_AVDD_left/AVDD
+connect_supply_net AVDDHV -ports u_PAD_AVDDHV_left/AVDD
+
+connect_supply_net AGND -ports bump_array_7_1/BUMP
+connect_supply_net AGND -ports bump_array_6_1/BUMP
+connect_supply_net AVDD -ports bump_array_5_1/BUMP
+connect_supply_net AVDDHV -ports bump_array_4_1/BUMP
+
+connect_supply_net VDD -ports bump_array_12_0/BUMP
+connect_supply_net VDD -ports bump_array_2_0/BUMP
+connect_supply_net VDD -ports bump_array_10_0/BUMP
+connect_supply_net VDD -ports bump_array_4_12/BUMP
+connect_supply_net VDD -ports bump_array_10_11/BUMP
+
+connect_supply_net VSS -ports bump_array_12_12/BUMP
+connect_supply_net VSS -ports bump_array_2_12/BUMP
+connect_supply_net VSS -ports bump_array_5_0/BUMP
+connect_supply_net VSS -ports bump_array_10_12/BUMP
+
+set_domain_supply_net TOP    -primary_power_net VDD     -primary_ground_net VSS
+
+add_port_state VSS              -state {on 0.0 0.0 0.0}
+add_port_state VDD              -state {on 0.81 0.9 0.99}
+add_port_state AVDD              -state {on 0.81 0.9 0.99}
+add_port_state AVDDHV              -state {on 1.62 1.8 1.98}
+add_port_state AGND              -state {on 0.0 0.0 0.0}
+
+create_pst pst0 -supplies           {VSS  AGND  VDD  AVDD AVDDHV}
+add_pst_state run -pst pst0 -state  {on   on   on       on     on    }
+
diff --git a/flist/IP/NIC400.flist b/flist/IP/NIC400.flist
index 5fdd0667c8f139d2cc9fdfe391796b49caad8483..d196c45a85e5929a75b763cf9c857cefc02866e0 100644
--- a/flist/IP/NIC400.flist
+++ b/flist/IP/NIC400.flist
@@ -1,30 +1,38 @@
-+incdir+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/amib_AXI_SRAM/verilog
++incdir+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/amib_AXI_SRAM_0/verilog
++incdir+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/amib_AXI_SRAM_1/verilog
++incdir+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/amib_AXI_SRAM_2/verilog
++incdir+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/amib_AXI_SRAM_3/verilog
 +incdir+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/amib_AXI_TLX_OUT/verilog
 +incdir+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/amib_apb_group0/verilog
-+incdir+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/apb_bridge/verilog
 +incdir+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/asib_AXI_CHIPLET_IN/verilog
 +incdir+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog
 +incdir+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/cdc_blocks/verilog
 +incdir+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/default_slave_ds_1/verilog
 +incdir+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/ib_apb_group0_ib/verilog
 +incdir+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/reg_slice/verilog
+
++incdir+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/nic400/verilog
++incdir+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/nic400/verilog/Axi
 +incdir+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/nic400/verilog/Axi4PC
 +incdir+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/nic400/verilog/ApbPC
 +incdir+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/nic400/verilog/Apb4PC
-+incdir+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/nic400/verilog/Ahb
-+incdir+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/nic400/verilog/AhbPC
 
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/nic400/verilog/nic400_sram_chiplet.v
-$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/amib_AXI_SRAM/verilog/nic400_amib_AXI_SRAM_chan_slice_sram_chiplet.v
-$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/amib_AXI_SRAM/verilog/nic400_amib_AXI_SRAM_sram_chiplet.v
+
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/amib_AXI_SRAM_0/verilog/nic400_amib_AXI_SRAM_0_chan_slice_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/amib_AXI_SRAM_0/verilog/nic400_amib_AXI_SRAM_0_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/amib_AXI_SRAM_1/verilog/nic400_amib_AXI_SRAM_1_chan_slice_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/amib_AXI_SRAM_1/verilog/nic400_amib_AXI_SRAM_1_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/amib_AXI_SRAM_2/verilog/nic400_amib_AXI_SRAM_2_chan_slice_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/amib_AXI_SRAM_2/verilog/nic400_amib_AXI_SRAM_2_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/amib_AXI_SRAM_3/verilog/nic400_amib_AXI_SRAM_3_chan_slice_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/amib_AXI_SRAM_3/verilog/nic400_amib_AXI_SRAM_3_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/amib_AXI_TLX_OUT/verilog/nic400_amib_AXI_TLX_OUT_chan_slice_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/amib_AXI_TLX_OUT/verilog/nic400_amib_AXI_TLX_OUT_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/amib_apb_group0/verilog/nic400_amib_apb_group0_a_gen_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/amib_apb_group0/verilog/nic400_amib_apb_group0_apb_m_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/amib_apb_group0/verilog/nic400_amib_apb_group0_chan_slice_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/amib_apb_group0/verilog/nic400_amib_apb_group0_sram_chiplet.v
-$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/apb_bridge/verilog/nic400_apb_bridge_master_domain_sram_chiplet.v
-$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/apb_bridge/verilog/nic400_apb_bridge_slave_domain_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/asib_AXI_CHIPLET_IN/verilog/nic400_asib_AXI_CHIPLET_IN_chan_slice_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/asib_AXI_CHIPLET_IN/verilog/nic400_asib_AXI_CHIPLET_IN_decode_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/asib_AXI_CHIPLET_IN/verilog/nic400_asib_AXI_CHIPLET_IN_maskcntl_sram_chiplet.v
@@ -35,10 +43,16 @@ $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chip
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_add_sel_ml1_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_add_sel_ml2_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_add_sel_ml3_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_add_sel_ml4_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_add_sel_ml5_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_add_sel_ml6_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_maskcntl_ml0_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_maskcntl_ml1_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_maskcntl_ml2_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_maskcntl_ml3_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_maskcntl_ml4_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_maskcntl_ml5_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_maskcntl_ml6_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_ml_blayer_0_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_ml_build_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_ml_map_sram_chiplet.v
@@ -46,18 +60,30 @@ $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chip
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_ml_mlayer_1_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_ml_mlayer_2_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_ml_mlayer_3_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_ml_mlayer_4_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_ml_mlayer_5_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_ml_mlayer_6_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_rd_ss_tt_s0_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_rd_wr_arb_0_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_rd_wr_arb_2_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_rd_wr_arb_3_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_rd_wr_arb_4_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_rd_wr_arb_5_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_ret_sel_ml0_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_ret_sel_ml1_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_ret_sel_ml2_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_ret_sel_ml3_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_ret_sel_ml4_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_ret_sel_ml5_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_ret_sel_ml6_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_wr_sel_ml0_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_wr_sel_ml1_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_wr_sel_ml2_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_wr_sel_ml3_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_wr_sel_ml4_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_wr_sel_ml5_sram_chiplet.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_wr_sel_ml6_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/busmatrix_bm0/verilog/nic400_bm0_wr_ss_tt_s0_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/cdc_blocks/verilog/nic400_cdc_bypass_sync_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/cdc_blocks/verilog/nic400_cdc_capt_nosync_sram_chiplet.v
@@ -67,8 +93,6 @@ $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chip
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/cdc_blocks/verilog/nic400_cdc_comb_or2_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/cdc_blocks/verilog/nic400_cdc_comb_or3_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/cdc_blocks/verilog/nic400_cdc_corrupt_gry_sram_chiplet.v
-$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/cdc_blocks/verilog/nic400_cdc_corrupt_sram_chiplet.v
-$(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/cdc_blocks/verilog/nic400_cdc_launch_data_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/cdc_blocks/verilog/nic400_cdc_launch_gry_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/cdc_blocks/verilog/nic400_cdc_random_sram_chiplet.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/nic400_sram_chiplet/logical/nic400_sram_chiplet/default_slave_ds_1/verilog/nic400_default_slave_ds_1_sram_chiplet.v
diff --git a/flist/Top/sram_chiplet.flist b/flist/Top/sram_chiplet.flist
index c14ebad05a22b225151e18ea59f55c23ec0dbb07..88a17d2fc5411c9460d006d9ef7c5640793fc910 100644
--- a/flist/Top/sram_chiplet.flist
+++ b/flist/Top/sram_chiplet.flist
@@ -25,6 +25,7 @@ $(SOCLABS_SRAM_CHIPLET_DIR)/logical/SRAM/glib/verilog/SRAM.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/sram_chiplet_apb_subsystem/verilog/sram_chiplet_apb_subsystem.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/sram_chiplet_apb_subsystem/verilog/synchr_clock_mux.v
 $(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_apb_slave_mux/verilog/cmsdk_apb_slave_mux.v
+$(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_apb4_eg_slave/verilog/cmsdk_apb4_eg_slave_interface.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/synopsys_28nm_slm_integration/IP_wrappers/PLL_integration_layer.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/synopsys_28nm_slm_integration/IP_wrappers/synopsys_PD_sensor_integration.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/synopsys_28nm_slm_integration/IP_wrappers/synopsys_TS_sensor_integration.v
diff --git a/flist/Top/sram_chiplet_TSMC28nm.flist b/flist/Top/sram_chiplet_TSMC28nm.flist
index cdcc0c8d83dcd0b33fda68e1eee1f3c7670a2e68..7283bdebb0761ebc849a2453eba69808e1157626 100644
--- a/flist/Top/sram_chiplet_TSMC28nm.flist
+++ b/flist/Top/sram_chiplet_TSMC28nm.flist
@@ -21,15 +21,16 @@ $(SOCLABS_SRAM_CHIPLET_DIR)/pad_level/tsmc28nm_hpcp/SRAM_chiplet.sv
 -f $(SOCLABS_SRAM_CHIPLET_DIR)/flist/Top/sram_chiplet_sv.flist
 
 // SRAM Chiplet - SRAM
-$(SOCLABS_SRAM_CHIPLET_DIR)/logical/SRAM/TSMC28nm_hpcp/verilog/SRAM_wrapper.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/SRAM/glib/verilog/SRAM_wrapper.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/SRAM/TSMC28nm_hpcp/verilog/SRAM.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/memories/sram_32b_32k/sram_32b_32k_emulation.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/memories/sram_32b_16k/sram_32b_16k_emulation.v
 
 // SRAM Chiplet - APB subsystem
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/sram_chiplet_apb_subsystem/verilog/sram_chiplet_apb_subsystem.v
-// $(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_apb_slave_mux/verilog/cmsdk_apb_slave_mux.v
+$(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_apb_slave_mux/verilog/cmsdk_apb_slave_mux.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/sram_chiplet_apb_subsystem/verilog/synchr_clock_mux.v
+$(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_apb4_eg_slave/verilog/cmsdk_apb4_eg_slave_interface.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/synopsys_28nm_slm_integration/IP_wrappers/PLL_integration_layer.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/synopsys_28nm_slm_integration/IP_wrappers/synopsys_PD_sensor_integration.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/synopsys_28nm_slm_integration/IP_wrappers/synopsys_TS_sensor_integration.v
diff --git a/flist/Top/sram_chiplet_TSMC28nm_ASIC.flist b/flist/Top/sram_chiplet_TSMC28nm_ASIC.flist
index ec6f82a6d0e53d8252e82c7dad3518a4c669320a..fffcd3639c86f97cc06007d64e82268d8de680c5 100644
--- a/flist/Top/sram_chiplet_TSMC28nm_ASIC.flist
+++ b/flist/Top/sram_chiplet_TSMC28nm_ASIC.flist
@@ -19,13 +19,14 @@
 -f $(SOCLABS_SRAM_CHIPLET_DIR)/flist/Top/sram_chiplet_sv.flist
 
 // SRAM Chiplet - SRAM
-$(SOCLABS_SRAM_CHIPLET_DIR)/logical/SRAM/TSMC28nm_hpcp/verilog/SRAM_wrapper.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/SRAM/glib/verilog/SRAM_wrapper.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/SRAM/TSMC28nm_hpcp/verilog/SRAM.v
 
 // SRAM Chiplet - APB subsystem
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/sram_chiplet_apb_subsystem/verilog/sram_chiplet_apb_subsystem.v
 $(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_apb_slave_mux/verilog/cmsdk_apb_slave_mux.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/sram_chiplet_apb_subsystem/verilog/synchr_clock_mux.v
+$(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_apb4_eg_slave/verilog/cmsdk_apb4_eg_slave_interface.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/synopsys_28nm_slm_integration/IP_wrappers/PLL_integration_layer.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/synopsys_28nm_slm_integration/IP_wrappers/synopsys_PD_sensor_integration.v
 $(SOCLABS_SRAM_CHIPLET_DIR)/synopsys_28nm_slm_integration/IP_wrappers/synopsys_TS_sensor_integration.v
diff --git a/flist/Top/sram_chiplet_TSMC28nm_GATE.flist b/flist/Top/sram_chiplet_TSMC28nm_GATE.flist
new file mode 100644
index 0000000000000000000000000000000000000000..63c423ecec896cfa35e4582d9612c2470605042c
--- /dev/null
+++ b/flist/Top/sram_chiplet_TSMC28nm_GATE.flist
@@ -0,0 +1,17 @@
+
++incdir+$(SOCLABS_SRAM_CHIPLET_DIR)/logical/interfaces
+
+// Testbench IP
+-f $(SOCLABS_SRAM_CHIPLET_DIR)/flist/Top/sram_chiplet_vip.flist
+// Thin links
+-f $(SOCLABS_SRAM_CHIPLET_DIR)/flist/IP/TLX400.flist
+
+$(SOCLABS_SRAM_CHIPLET_DIR)/imp/ASIC/SRAM_CHIPLET/sram_chiplet_gate.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/memories/sram_32b_16k/sram_32b_16k.v
+$(SOCLABS_SRAM_CHIPLET_DIR)/memories/sram_32b_32k/sram_32b_32k.v
+/home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/sc12mcpp140z_base_svt_c35/r2p0/verilog/sc12mcpp140z_cln28ht_base_svt_c35.v
+/home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/sc12mcpp140z_pmk_svt_c35/r1p0/verilog/sc12mcpp140z_cln28ht_pmk_svt_c35.v 
+
+$(SOCLABS_SRAM_CHIPLET_DIR)/pad_level/glib/PDDW04DGZ_V_G.v
+
+/home/dwn1c21/SoC-Labs/Synopsys_ip/IP/PLL/synopsys/dwc_pll3ghz_tsmc28hpcp/1.10a/macro/behavior/dwc_z19606ts_ns_gtech.v
\ No newline at end of file
diff --git a/flist/Top/sram_chiplet_sv.flist b/flist/Top/sram_chiplet_sv.flist
index d927cfcadac20558b6c902a148f459d615484d36..e56c1d9601e8a1935423023cbfe0658a7978accc 100644
--- a/flist/Top/sram_chiplet_sv.flist
+++ b/flist/Top/sram_chiplet_sv.flist
@@ -16,3 +16,4 @@
 
 // SRAM Chiplet top level
 $(SOCLABS_SRAM_CHIPLET_DIR)/logical/top_sram_chiplet/verilog/top_sram_chiplet.sv
+$(SOCLABS_SRAM_CHIPLET_DIR)/pad_level/glib/SRAM_chiplet.sv
diff --git a/logical/SRAM/TSMC28nm_hpcp/verilog/SRAM.v b/logical/SRAM/TSMC28nm_hpcp/verilog/SRAM.v
index 6f5ce6dbc65102d7c6b59b6424ccadfcbf2a40fb..4584a3f5f49a08ff56f05b6c88f6b3f82a2c0c5f 100644
--- a/logical/SRAM/TSMC28nm_hpcp/verilog/SRAM.v
+++ b/logical/SRAM/TSMC28nm_hpcp/verilog/SRAM.v
@@ -1,26 +1,25 @@
 
 
-module SRAM (
+module SRAM #(parameter SPLIT_SRAM =0 )(
     input  wire             clk,
-    input  wire [19:0]      memaddr,
+    input  wire [18:0]      memaddr,
     input  wire [31:0]      memd,
     output reg [31:0]      memq,
     input  wire             memcen,
     input  wire [3:0]       memwen
 );
 
-localparam N_MEMS = 8;
-localparam SEL_W = 3;
+localparam N_MEMS = 4;
+localparam SEL_W = 2;
 
 reg  [N_MEMS:0]   CEN_i; //Active low chip select
+wire [31:0]         q_i[0:N_MEMS];
 wire [31:0]         wena_i; 
 wire                gwen_i;
-wire [31:0]         q_i[0:N_MEMS];
 
 assign wena_i = {{8{memwen[3]}}, {8{memwen[2]}}, {8{memwen[1]}}, {8{memwen[0]}}};
 assign gwen_i = &memwen;
 genvar i;
-
 generate for(i=0; i<N_MEMS-1; i = i + 1) begin: g_srams
     sram_32b_32k u_sram_32b_32k(
         .Q(q_i[i]), 
@@ -39,6 +38,8 @@ generate for(i=0; i<N_MEMS-1; i = i + 1) begin: g_srams
 
 end endgenerate
 
+generate if (SPLIT_SRAM == 1) begin : gen_split_sram
+
 sram_32b_16k u_sram_32b_16k_0(
     .Q(q_i[N_MEMS-1]), 
     .CLK(clk), 
@@ -76,7 +77,7 @@ always @(*) begin
         else
             CEN_i[j] = 1'b1;
     end
-    if(memaddr[SEL_W+16:17]==3'h7) begin
+    if(memaddr[SEL_W+16:17]=={SEL_W{1'b1}}) begin
         if(memaddr[16]==1'b0) begin
             CEN_i[N_MEMS-1]=memcen;
             CEN_i[N_MEMS]=1'b1;
@@ -87,7 +88,7 @@ always @(*) begin
         end
     end else
         CEN_i[N_MEMS:N_MEMS-1]=2'b11;
-    if(memaddr[19:17]==3'h7) begin
+    if(memaddr[SEL_W+16:17]=={SEL_W{1'b1}}) begin
         if(memaddr[16]==1'b1) 
             memq=q_i[N_MEMS];
         else
@@ -95,5 +96,33 @@ always @(*) begin
     end else 
         memq = q_i[memaddr[(SEL_W+17-1):17]];
 end
+end else begin: gen_sram
+
+    sram_32b_32k u_sram_32b_32k_N(
+        .Q(q_i[N_MEMS-1]), 
+        .CLK(clk), 
+        .CEN(CEN_i[N_MEMS-1]), 
+        .GWEN(gwen_i), 
+        .A(memaddr[16:2]), 
+        .D(memd), 
+        .WEN(wena_i), 
+        .STOV(1'b0), 
+        .EMA(3'b011), 
+        .EMAW(2'b01), 
+        .EMAS(1'b0), 
+        .RET1N(1'b1)
+    );
+
+integer j;
+always @(*) begin 
+    for(j=0; j<N_MEMS; j=j+1) begin
+        if(j==memaddr[(SEL_W+17-1):17])
+            CEN_i[j] = memcen;
+        else
+            CEN_i[j] = 1'b1;
+    end
+    memq = q_i[memaddr[(SEL_W+17-1):17]];
+end
+end endgenerate
 
 endmodule
diff --git a/logical/SRAM/TSMC28nm_hpcp/verilog/SRAM_wrapper.v b/logical/SRAM/TSMC28nm_hpcp/verilog/SRAM_wrapper.v
deleted file mode 100644
index 08b99b142a2666bdd88925efe64c3b59f57ce17f..0000000000000000000000000000000000000000
--- a/logical/SRAM/TSMC28nm_hpcp/verilog/SRAM_wrapper.v
+++ /dev/null
@@ -1,154 +0,0 @@
-//-----------------------------------------------------------------------------
-// Expansion Subsystem SRAM Wrapper
-// A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license.
-//
-// Contributors
-//
-// Daniel Newbrook (d.newbrook@soton.ac.uk)
-// 
-// Copyright � 2021-4, SoC Labs (www.soclabs.org)
-//-----------------------------------------------------------------------------
-// Modules instantiated:
-//  sie300_axi5_sram_ctrl_expansion_subsystem
-//  SRAM
-
-module SRAM_wrapper #(
-    parameter ID_W=12 )(
-    input  wire             ACLK,
-    input  wire             ARESETn,
-
-    input  wire             AWVALID,
-    output wire             AWREADY,
-    input  wire [ID_W-1:0]       AWID,
-    input  wire [31:0]      AWADDR,
-    input  wire [7:0]       AWLEN,
-    input  wire [2:0]       AWSIZE,
-    input  wire [1:0]       AWBURST,
-    input  wire             AWLOCK,
-    input  wire [2:0]       AWPROT,
-    input  wire [3:0]       AWQOS,
-    
-    input  wire             WVALID,
-    output wire             WREADY,
-    input  wire [31:0]      WDATA,
-    input  wire [3:0]       WSTRB,
-    input  wire             WLAST,
-    input  wire             WPOISON,
-
-    output wire             BVALID,
-    input  wire             BREADY,
-    output wire [ID_W-1:0]       BID,
-    output wire [1:0]       BRESP,
-    
-    input  wire             ARVALID,
-    output wire             ARREADY,
-    input  wire [ID_W-1:0]       ARID,
-    input  wire [31:0]      ARADDR,
-    input  wire [7:0]       ARLEN,
-    input  wire [2:0]       ARSIZE,
-    input  wire [1:0]       ARBURST,
-    input  wire             ARLOCK,
-    input  wire [2:0]       ARPROT,
-    input  wire [3:0]       ARQOS,
-    
-    output wire             RVALID,
-    input  wire             RREADY,
-    output wire [ID_W-1:0]       RID,
-    output wire [31:0]      RDATA,
-    output wire [1:0]       RRESP,
-    output wire             RLAST,
-    output wire             RPOISON,
-    input  wire             AWAKEUP,
-
-    input  wire             clk_qreqn,
-    output wire             clk_qacceptn,
-    output wire             clk_qdeny,
-    output wire             clk_qactive,
-
-    input  wire             pwr_qreqn,
-    output wire             pwr_qacceptn,
-    output wire             pwr_qdeny,
-    output wire             pwr_qactive,
-
-    input  wire             ext_gt_qreqn,
-    output wire             ext_gt_qacceptn,
-    input  wire             cfg_gate_resp
-
-);
-
-
-wire [19:0]     memaddr;
-wire [31:0]    memd;
-wire [31:0]    memq;
-wire            memcen;
-wire [3:0]     memwen;
-
-sie300_axi5_sram_ctrl_sram_chiplet u_SMC(
-    .aclk(ACLK),
-    .aresetn(ARESETn),
-    .awvalid_s(AWVALID),
-    .awready_s(AWREADY),
-    .awid_s(AWID),
-    .awaddr_s(AWADDR[19:0]),
-    .awlen_s(AWLEN),
-    .awsize_s(AWSIZE),
-    .awburst_s(AWBURST),
-    .awlock_s(AWLOCK),
-    .awprot_s(AWPROT),
-    .awqos_s(AWQOS),
-    .wvalid_s(WVALID),
-    .wready_s(WREADY),
-    .wdata_s(WDATA),
-    .wstrb_s(WSTRB),
-    .wlast_s(WLAST),
-    .wpoison_s(WPOISON),
-    .bvalid_s(BVALID),
-    .bready_s(BREADY),
-    .bid_s(BID),
-    .bresp_s(BRESP),
-    .arvalid_s(ARVALID),
-    .arready_s(ARREADY),
-    .arid_s(ARID),
-    .araddr_s(ARADDR[19:0]),
-    .arlen_s(ARLEN),
-    .arsize_s(ARSIZE),
-    .arburst_s(ARBURST),
-    .arlock_s(ARLOCK),
-    .arprot_s(ARPROT),
-    .arqos_s(ARQOS),
-    .rvalid_s(RVALID),
-    .rready_s(RREADY),
-    .rid_s(RID),
-    .rdata_s(RDATA),
-    .rresp_s(RRESP),
-    .rlast_s(RLAST),
-    .rpoison_s(RPOISON),
-    .awakeup_s(AWAKEUP),
-    .clk_qreqn(clk_qreqn),
-    .clk_qacceptn(clk_qacceptn),
-    .clk_qdeny(clk_qdeny),
-    .clk_qactive(clk_qactive),
-    .pwr_qreqn(pwr_qreqn),
-    .pwr_qacceptn(pwr_qacceptn),
-    .pwr_qdeny(pwr_qdeny),
-    .pwr_qactive(pwr_qactive),
-    .ext_gt_qreqn(ext_gt_qreqn),
-    .ext_gt_qacceptn(ext_gt_qacceptn),
-    .cfg_gate_resp(cfg_gate_resp),
-    .memaddr(memaddr),
-    .memd(memd),
-    .memq(memq),
-    .memcen(memcen),
-    .memwen(memwen)
-);
-
-SRAM u_SRAM(
-    .clk(ACLK),
-    .memaddr(memaddr),
-    .memd(memd),
-    .memq(memq),
-    .memcen(memcen),
-    .memwen(memwen)
-);
-
-endmodule
\ No newline at end of file
diff --git a/logical/SRAM/glib/verilog/SRAM.v b/logical/SRAM/glib/verilog/SRAM.v
index d3474c4565f046fb02cb8cdc26e597cced163192..b8236b8e0ce557cfa1ce55f515eea3d44250b4e3 100644
--- a/logical/SRAM/glib/verilog/SRAM.v
+++ b/logical/SRAM/glib/verilog/SRAM.v
@@ -1,17 +1,18 @@
 
 
-module SRAM (
+module SRAM #(
+  parameter SPLIT_SRAM = 0 )(
     input  wire           clk,
-    input  wire [19:0]    memaddr,
+    input  wire [18:0]    memaddr,
     input  wire [31:0]   memd,
     output wire [31:0]   memq,
     input  wire           memcen,
     input  wire [3:0]    memwen
 );
-  parameter MEM_DEPTH = 262144;
+  parameter MEM_DEPTH = 131072;
 
   wire                WriteEnable;        // Write data update
-  wire   [17:0]       Addr;
+  wire   [18:0]       Addr;
   reg    [31:0]      DataAtAddress;      // Current write-data at address
   reg    [31:0]      Mask;               // Write data-mask
   reg    [31:0]      NextData;           // Next write-data
@@ -19,7 +20,7 @@ module SRAM (
 
   integer                  i;     // Write-strobe loop variable
   integer                  j;     // Mask-bit loop variable
-  assign Addr = memaddr[19:2];
+  assign Addr = memaddr[18:2];
   // -------------
   // Memory arrays
   // -------------
diff --git a/logical/SRAM/glib/verilog/SRAM_wrapper.v b/logical/SRAM/glib/verilog/SRAM_wrapper.v
index 2df8555ed11f507b2f01c7f9efbd151e2a9f732a..a6c0770065ad1835664cb4e29ad588761968d242 100644
--- a/logical/SRAM/glib/verilog/SRAM_wrapper.v
+++ b/logical/SRAM/glib/verilog/SRAM_wrapper.v
@@ -13,7 +13,8 @@
 //  SRAM
 
 module SRAM_wrapper #(
-    parameter ID_W = 12
+    parameter ID_W = 12,
+    parameter SPLIT_SRAM = 0
 )(
     input  wire             ACLK,
     input  wire             ARESETn,
@@ -78,7 +79,7 @@ module SRAM_wrapper #(
 );
 
 
-wire [19:0]     memaddr;
+wire [18:0]     memaddr;
 wire [31:0]    memd;
 wire [31:0]    memq;
 wire            memcen;
@@ -90,7 +91,7 @@ sie300_axi5_sram_ctrl_sram_chiplet u_SMC(
     .awvalid_s(AWVALID),
     .awready_s(AWREADY),
     .awid_s(AWID),
-    .awaddr_s(AWADDR[19:0]),
+    .awaddr_s(AWADDR[18:0]),
     .awlen_s(AWLEN),
     .awsize_s(AWSIZE),
     .awburst_s(AWBURST),
@@ -110,7 +111,7 @@ sie300_axi5_sram_ctrl_sram_chiplet u_SMC(
     .arvalid_s(ARVALID),
     .arready_s(ARREADY),
     .arid_s(ARID),
-    .araddr_s(ARADDR[19:0]),
+    .araddr_s(ARADDR[18:0]),
     .arlen_s(ARLEN),
     .arsize_s(ARSIZE),
     .arburst_s(ARBURST),
@@ -143,7 +144,8 @@ sie300_axi5_sram_ctrl_sram_chiplet u_SMC(
     .memwen(memwen)
 );
 
-SRAM u_SRAM(
+SRAM #(.SPLIT_SRAM(SPLIT_SRAM)) 
+    u_SRAM(
     .clk(ACLK),
     .memaddr(memaddr),
     .memd(memd),
diff --git a/logical/sram_chiplet_apb_subsystem/verilog/sram_chiplet_apb_subsystem.v b/logical/sram_chiplet_apb_subsystem/verilog/sram_chiplet_apb_subsystem.v
index b31d6e5e52fbf9a935f1b24cf29daa61acb1208b..35fdb137333bc5915f9e5a4c0feb920d4096c416 100644
--- a/logical/sram_chiplet_apb_subsystem/verilog/sram_chiplet_apb_subsystem.v
+++ b/logical/sram_chiplet_apb_subsystem/verilog/sram_chiplet_apb_subsystem.v
@@ -258,7 +258,7 @@ generate if(SNPS_PLL_ENABLE==1)begin: gen_snps_PLL
         .out_clk2(pll_clk2_i),
 
         .PSELx(snps_PLL_psel),     
-        .PADDR(PADDR_APB_PVT[11:2]),    
+        .PADDR(PADDR_APB_PVT[11:0]),    
         .PENABLE(PENABLE_APB_PVT), 
         .PPROT(PPROT_APB_PVT), 
         .PSTRB(PSTRB_APB_PVT),
diff --git a/logical/top_sram_chiplet/verilog/top_sram_chiplet.sv b/logical/top_sram_chiplet/verilog/top_sram_chiplet.sv
index 541db653889b91019a09f6adbfa17392e3407009..d6466c371fef5bbe44fd6b7ea28c6a9cab9da0c5 100644
--- a/logical/top_sram_chiplet/verilog/top_sram_chiplet.sv
+++ b/logical/top_sram_chiplet/verilog/top_sram_chiplet.sv
@@ -18,7 +18,7 @@
 `include "tlx_interfaces.sv"
 
 module top_sram_chiplet #(
-    parameter N_ADDR_SEL_BITS = 6
+    parameter N_ADDR_SEL_BITS = 4
     )(
     // Clock and reset
     input  wire         REF_CLK,
@@ -54,41 +54,150 @@ wire SYS_CLK;
 
 // Main Bus Wires
 // - SRAM AXI wires
-wire [ID_W-1:0]  AWID_AXI_SRAM;
-wire [31:0] AWADDR_AXI_SRAM;
-wire [7:0]  AWLEN_AXI_SRAM;
-wire [2:0]  AWSIZE_AXI_SRAM;
-wire [1:0]  AWBURST_AXI_SRAM;
-wire        AWLOCK_AXI_SRAM;
-wire [3:0]  AWCACHE_AXI_SRAM;
-wire [2:0]  AWPROT_AXI_SRAM;
-wire        AWVALID_AXI_SRAM;
-wire        AWREADY_AXI_SRAM;
-wire [31:0] WDATA_AXI_SRAM;
-wire [3:0]  WSTRB_AXI_SRAM;
-wire        WLAST_AXI_SRAM;
-wire        WVALID_AXI_SRAM;
-wire        WREADY_AXI_SRAM;
-wire [ID_W-1:0]  BID_AXI_SRAM;
-wire [1:0]  BRESP_AXI_SRAM;
-wire        BVALID_AXI_SRAM;
-wire        BREADY_AXI_SRAM;
-wire [ID_W-1:0]  ARID_AXI_SRAM;
-wire [31:0] ARADDR_AXI_SRAM;
-wire [7:0]  ARLEN_AXI_SRAM;
-wire [2:0]  ARSIZE_AXI_SRAM;
-wire [1:0]  ARBURST_AXI_SRAM;
-wire        ARLOCK_AXI_SRAM;
-wire [3:0]  ARCACHE_AXI_SRAM;
-wire [2:0]  ARPROT_AXI_SRAM;
-wire        ARVALID_AXI_SRAM;
-wire        ARREADY_AXI_SRAM;
-wire [ID_W-1:0]  RID_AXI_SRAM;
-wire [31:0] RDATA_AXI_SRAM;
-wire [1:0]  RRESP_AXI_SRAM;
-wire        RLAST_AXI_SRAM;
-wire        RVALID_AXI_SRAM;
-wire        RREADY_AXI_SRAM;
+wire [ID_W-1:0]     AWID_AXI_SRAM_0;
+wire [31:0]         AWADDR_AXI_SRAM_0;
+wire [7:0]          AWLEN_AXI_SRAM_0;
+wire [2:0]          AWSIZE_AXI_SRAM_0;
+wire [1:0]          AWBURST_AXI_SRAM_0;
+wire                AWLOCK_AXI_SRAM_0;
+wire [3:0]          AWCACHE_AXI_SRAM_0;
+wire [2:0]          AWPROT_AXI_SRAM_0;
+wire                AWVALID_AXI_SRAM_0;
+wire                AWREADY_AXI_SRAM_0;
+wire [31:0]         WDATA_AXI_SRAM_0;
+wire [3:0]          WSTRB_AXI_SRAM_0;
+wire                WLAST_AXI_SRAM_0;
+wire                WVALID_AXI_SRAM_0;
+wire                WREADY_AXI_SRAM_0;
+wire [ID_W-1:0]     BID_AXI_SRAM_0;
+wire [1:0]          BRESP_AXI_SRAM_0;
+wire                BVALID_AXI_SRAM_0;
+wire                BREADY_AXI_SRAM_0;
+wire [ID_W-1:0]     ARID_AXI_SRAM_0;
+wire [31:0]         ARADDR_AXI_SRAM_0;
+wire [7:0]          ARLEN_AXI_SRAM_0;
+wire [2:0]          ARSIZE_AXI_SRAM_0;
+wire [1:0]          ARBURST_AXI_SRAM_0;
+wire                ARLOCK_AXI_SRAM_0;
+wire [3:0]          ARCACHE_AXI_SRAM_0;
+wire [2:0]          ARPROT_AXI_SRAM_0;
+wire                ARVALID_AXI_SRAM_0;
+wire                ARREADY_AXI_SRAM_0;
+wire [ID_W-1:0]     RID_AXI_SRAM_0;
+wire [31:0]         RDATA_AXI_SRAM_0;
+wire [1:0]          RRESP_AXI_SRAM_0;
+wire                RLAST_AXI_SRAM_0;
+wire                RVALID_AXI_SRAM_0;
+wire                RREADY_AXI_SRAM_0;
+
+wire [ID_W-1:0]     AWID_AXI_SRAM_1;
+wire [31:0]         AWADDR_AXI_SRAM_1;
+wire [7:0]          AWLEN_AXI_SRAM_1;
+wire [2:0]          AWSIZE_AXI_SRAM_1;
+wire [1:0]          AWBURST_AXI_SRAM_1;
+wire                AWLOCK_AXI_SRAM_1;
+wire [3:0]          AWCACHE_AXI_SRAM_1;
+wire [2:0]          AWPROT_AXI_SRAM_1;
+wire                AWVALID_AXI_SRAM_1;
+wire                AWREADY_AXI_SRAM_1;
+wire [31:0]         WDATA_AXI_SRAM_1;
+wire [3:0]          WSTRB_AXI_SRAM_1;
+wire                WLAST_AXI_SRAM_1;
+wire                WVALID_AXI_SRAM_1;
+wire                WREADY_AXI_SRAM_1;
+wire [ID_W-1:0]     BID_AXI_SRAM_1;
+wire [1:0]          BRESP_AXI_SRAM_1;
+wire                BVALID_AXI_SRAM_1;
+wire                BREADY_AXI_SRAM_1;
+wire [ID_W-1:0]     ARID_AXI_SRAM_1;
+wire [31:0]         ARADDR_AXI_SRAM_1;
+wire [7:0]          ARLEN_AXI_SRAM_1;
+wire [2:0]          ARSIZE_AXI_SRAM_1;
+wire [1:0]          ARBURST_AXI_SRAM_1;
+wire                ARLOCK_AXI_SRAM_1;
+wire [3:0]          ARCACHE_AXI_SRAM_1;
+wire [2:0]          ARPROT_AXI_SRAM_1;
+wire                ARVALID_AXI_SRAM_1;
+wire                ARREADY_AXI_SRAM_1;
+wire [ID_W-1:0]     RID_AXI_SRAM_1;
+wire [31:0]         RDATA_AXI_SRAM_1;
+wire [1:0]          RRESP_AXI_SRAM_1;
+wire                RLAST_AXI_SRAM_1;
+wire                RVALID_AXI_SRAM_1;
+wire                RREADY_AXI_SRAM_1;
+
+wire [ID_W-1:0]     AWID_AXI_SRAM_2;
+wire [31:0]         AWADDR_AXI_SRAM_2;
+wire [7:0]          AWLEN_AXI_SRAM_2;
+wire [2:0]          AWSIZE_AXI_SRAM_2;
+wire [1:0]          AWBURST_AXI_SRAM_2;
+wire                AWLOCK_AXI_SRAM_2;
+wire [3:0]          AWCACHE_AXI_SRAM_2;
+wire [2:0]          AWPROT_AXI_SRAM_2;
+wire                AWVALID_AXI_SRAM_2;
+wire                AWREADY_AXI_SRAM_2;
+wire [31:0]         WDATA_AXI_SRAM_2;
+wire [3:0]          WSTRB_AXI_SRAM_2;
+wire                WLAST_AXI_SRAM_2;
+wire                WVALID_AXI_SRAM_2;
+wire                WREADY_AXI_SRAM_2;
+wire [ID_W-1:0]     BID_AXI_SRAM_2;
+wire [1:0]          BRESP_AXI_SRAM_2;
+wire                BVALID_AXI_SRAM_2;
+wire                BREADY_AXI_SRAM_2;
+wire [ID_W-1:0]     ARID_AXI_SRAM_2;
+wire [31:0]         ARADDR_AXI_SRAM_2;
+wire [7:0]          ARLEN_AXI_SRAM_2;
+wire [2:0]          ARSIZE_AXI_SRAM_2;
+wire [1:0]          ARBURST_AXI_SRAM_2;
+wire                ARLOCK_AXI_SRAM_2;
+wire [3:0]          ARCACHE_AXI_SRAM_2;
+wire [2:0]          ARPROT_AXI_SRAM_2;
+wire                ARVALID_AXI_SRAM_2;
+wire                ARREADY_AXI_SRAM_2;
+wire [ID_W-1:0]     RID_AXI_SRAM_2;
+wire [31:0]         RDATA_AXI_SRAM_2;
+wire [1:0]          RRESP_AXI_SRAM_2;
+wire                RLAST_AXI_SRAM_2;
+wire                RVALID_AXI_SRAM_2;
+wire                RREADY_AXI_SRAM_2;
+
+wire [ID_W-1:0]     AWID_AXI_SRAM_3;
+wire [31:0]         AWADDR_AXI_SRAM_3;
+wire [7:0]          AWLEN_AXI_SRAM_3;
+wire [2:0]          AWSIZE_AXI_SRAM_3;
+wire [1:0]          AWBURST_AXI_SRAM_3;
+wire                AWLOCK_AXI_SRAM_3;
+wire [3:0]          AWCACHE_AXI_SRAM_3;
+wire [2:0]          AWPROT_AXI_SRAM_3;
+wire                AWVALID_AXI_SRAM_3;
+wire                AWREADY_AXI_SRAM_3;
+wire [31:0]         WDATA_AXI_SRAM_3;
+wire [3:0]          WSTRB_AXI_SRAM_3;
+wire                WLAST_AXI_SRAM_3;
+wire                WVALID_AXI_SRAM_3;
+wire                WREADY_AXI_SRAM_3;
+wire [ID_W-1:0]     BID_AXI_SRAM_3;
+wire [1:0]          BRESP_AXI_SRAM_3;
+wire                BVALID_AXI_SRAM_3;
+wire                BREADY_AXI_SRAM_3;
+wire [ID_W-1:0]     ARID_AXI_SRAM_3;
+wire [31:0]         ARADDR_AXI_SRAM_3;
+wire [7:0]          ARLEN_AXI_SRAM_3;
+wire [2:0]          ARSIZE_AXI_SRAM_3;
+wire [1:0]          ARBURST_AXI_SRAM_3;
+wire                ARLOCK_AXI_SRAM_3;
+wire [3:0]          ARCACHE_AXI_SRAM_3;
+wire [2:0]          ARPROT_AXI_SRAM_3;
+wire                ARVALID_AXI_SRAM_3;
+wire                ARREADY_AXI_SRAM_3;
+wire [ID_W-1:0]     RID_AXI_SRAM_3;
+wire [31:0]         RDATA_AXI_SRAM_3;
+wire [1:0]          RRESP_AXI_SRAM_3;
+wire                RLAST_AXI_SRAM_3;
+wire                RVALID_AXI_SRAM_3;
+wire                RREADY_AXI_SRAM_3;
+
 // - Thin links out wires
 wire [ID_W-1:0]  AWID_AXI_TLX_OUT;
 wire [31:0] AWADDR_AXI_TLX_OUT;
@@ -278,41 +387,149 @@ assign AWADDR_AXI_CHIPLET_IN_i = (AWADDR_AXI_CHIPLET_IN[20+:N_ADDR_SEL_BITS]==ad
 assign ARADDR_AXI_CHIPLET_IN_i = (ARADDR_AXI_CHIPLET_IN[20+:N_ADDR_SEL_BITS]==addr_sel[0+:N_ADDR_SEL_BITS]) ? {ARADDR_AXI_CHIPLET_IN[31:(20+N_ADDR_SEL_BITS)],{N_ADDR_SEL_BITS{1'b0}},ARADDR_AXI_CHIPLET_IN[19:0]} : ARADDR_AXI_CHIPLET_IN;
 
 nic400_sram_chiplet u_nic400_sram_chiplet(
-    .AWID_AXI_SRAM(AWID_AXI_SRAM),
-    .AWADDR_AXI_SRAM(AWADDR_AXI_SRAM),
-    .AWLEN_AXI_SRAM(AWLEN_AXI_SRAM),
-    .AWSIZE_AXI_SRAM(AWSIZE_AXI_SRAM),
-    .AWBURST_AXI_SRAM(AWBURST_AXI_SRAM),
-    .AWLOCK_AXI_SRAM(AWLOCK_AXI_SRAM),
-    .AWCACHE_AXI_SRAM(AWCACHE_AXI_SRAM),
-    .AWPROT_AXI_SRAM(AWPROT_AXI_SRAM),
-    .AWVALID_AXI_SRAM(AWVALID_AXI_SRAM),
-    .AWREADY_AXI_SRAM(AWREADY_AXI_SRAM),
-    .WDATA_AXI_SRAM(WDATA_AXI_SRAM),
-    .WSTRB_AXI_SRAM(WSTRB_AXI_SRAM),
-    .WLAST_AXI_SRAM(WLAST_AXI_SRAM),
-    .WVALID_AXI_SRAM(WVALID_AXI_SRAM),
-    .WREADY_AXI_SRAM(WREADY_AXI_SRAM),
-    .BID_AXI_SRAM(BID_AXI_SRAM),
-    .BRESP_AXI_SRAM(BRESP_AXI_SRAM),
-    .BVALID_AXI_SRAM(BVALID_AXI_SRAM),
-    .BREADY_AXI_SRAM(BREADY_AXI_SRAM),
-    .ARID_AXI_SRAM(ARID_AXI_SRAM),
-    .ARADDR_AXI_SRAM(ARADDR_AXI_SRAM),
-    .ARLEN_AXI_SRAM(ARLEN_AXI_SRAM),
-    .ARSIZE_AXI_SRAM(ARSIZE_AXI_SRAM),
-    .ARBURST_AXI_SRAM(ARBURST_AXI_SRAM),
-    .ARLOCK_AXI_SRAM(ARLOCK_AXI_SRAM),
-    .ARCACHE_AXI_SRAM(ARCACHE_AXI_SRAM),
-    .ARPROT_AXI_SRAM(ARPROT_AXI_SRAM),
-    .ARVALID_AXI_SRAM(ARVALID_AXI_SRAM),
-    .ARREADY_AXI_SRAM(ARREADY_AXI_SRAM),
-    .RID_AXI_SRAM(RID_AXI_SRAM),
-    .RDATA_AXI_SRAM(RDATA_AXI_SRAM),
-    .RRESP_AXI_SRAM(RRESP_AXI_SRAM),
-    .RLAST_AXI_SRAM(RLAST_AXI_SRAM),
-    .RVALID_AXI_SRAM(RVALID_AXI_SRAM),
-    .RREADY_AXI_SRAM(RREADY_AXI_SRAM),
+    .AWID_AXI_SRAM_0(AWID_AXI_SRAM_0),
+    .AWADDR_AXI_SRAM_0(AWADDR_AXI_SRAM_0),
+    .AWLEN_AXI_SRAM_0(AWLEN_AXI_SRAM_0),
+    .AWSIZE_AXI_SRAM_0(AWSIZE_AXI_SRAM_0),
+    .AWBURST_AXI_SRAM_0(AWBURST_AXI_SRAM_0),
+    .AWLOCK_AXI_SRAM_0(AWLOCK_AXI_SRAM_0),
+    .AWCACHE_AXI_SRAM_0(AWCACHE_AXI_SRAM_0),
+    .AWPROT_AXI_SRAM_0(AWPROT_AXI_SRAM_0),
+    .AWVALID_AXI_SRAM_0(AWVALID_AXI_SRAM_0),
+    .AWREADY_AXI_SRAM_0(AWREADY_AXI_SRAM_0),
+    .WDATA_AXI_SRAM_0(WDATA_AXI_SRAM_0),
+    .WSTRB_AXI_SRAM_0(WSTRB_AXI_SRAM_0),
+    .WLAST_AXI_SRAM_0(WLAST_AXI_SRAM_0),
+    .WVALID_AXI_SRAM_0(WVALID_AXI_SRAM_0),
+    .WREADY_AXI_SRAM_0(WREADY_AXI_SRAM_0),
+    .BID_AXI_SRAM_0(BID_AXI_SRAM_0),
+    .BRESP_AXI_SRAM_0(BRESP_AXI_SRAM_0),
+    .BVALID_AXI_SRAM_0(BVALID_AXI_SRAM_0),
+    .BREADY_AXI_SRAM_0(BREADY_AXI_SRAM_0),
+    .ARID_AXI_SRAM_0(ARID_AXI_SRAM_0),
+    .ARADDR_AXI_SRAM_0(ARADDR_AXI_SRAM_0),
+    .ARLEN_AXI_SRAM_0(ARLEN_AXI_SRAM_0),
+    .ARSIZE_AXI_SRAM_0(ARSIZE_AXI_SRAM_0),
+    .ARBURST_AXI_SRAM_0(ARBURST_AXI_SRAM_0),
+    .ARLOCK_AXI_SRAM_0(ARLOCK_AXI_SRAM_0),
+    .ARCACHE_AXI_SRAM_0(ARCACHE_AXI_SRAM_0),
+    .ARPROT_AXI_SRAM_0(ARPROT_AXI_SRAM_0),
+    .ARVALID_AXI_SRAM_0(ARVALID_AXI_SRAM_0),
+    .ARREADY_AXI_SRAM_0(ARREADY_AXI_SRAM_0),
+    .RID_AXI_SRAM_0(RID_AXI_SRAM_0),
+    .RDATA_AXI_SRAM_0(RDATA_AXI_SRAM_0),
+    .RRESP_AXI_SRAM_0(RRESP_AXI_SRAM_0),
+    .RLAST_AXI_SRAM_0(RLAST_AXI_SRAM_0),
+    .RVALID_AXI_SRAM_0(RVALID_AXI_SRAM_0),
+    .RREADY_AXI_SRAM_0(RREADY_AXI_SRAM_0),
+
+    .AWID_AXI_SRAM_1(AWID_AXI_SRAM_1),
+    .AWADDR_AXI_SRAM_1(AWADDR_AXI_SRAM_1),
+    .AWLEN_AXI_SRAM_1(AWLEN_AXI_SRAM_1),
+    .AWSIZE_AXI_SRAM_1(AWSIZE_AXI_SRAM_1),
+    .AWBURST_AXI_SRAM_1(AWBURST_AXI_SRAM_1),
+    .AWLOCK_AXI_SRAM_1(AWLOCK_AXI_SRAM_1),
+    .AWCACHE_AXI_SRAM_1(AWCACHE_AXI_SRAM_1),
+    .AWPROT_AXI_SRAM_1(AWPROT_AXI_SRAM_1),
+    .AWVALID_AXI_SRAM_1(AWVALID_AXI_SRAM_1),
+    .AWREADY_AXI_SRAM_1(AWREADY_AXI_SRAM_1),
+    .WDATA_AXI_SRAM_1(WDATA_AXI_SRAM_1),
+    .WSTRB_AXI_SRAM_1(WSTRB_AXI_SRAM_1),
+    .WLAST_AXI_SRAM_1(WLAST_AXI_SRAM_1),
+    .WVALID_AXI_SRAM_1(WVALID_AXI_SRAM_1),
+    .WREADY_AXI_SRAM_1(WREADY_AXI_SRAM_1),
+    .BID_AXI_SRAM_1(BID_AXI_SRAM_1),
+    .BRESP_AXI_SRAM_1(BRESP_AXI_SRAM_1),
+    .BVALID_AXI_SRAM_1(BVALID_AXI_SRAM_1),
+    .BREADY_AXI_SRAM_1(BREADY_AXI_SRAM_1),
+    .ARID_AXI_SRAM_1(ARID_AXI_SRAM_1),
+    .ARADDR_AXI_SRAM_1(ARADDR_AXI_SRAM_1),
+    .ARLEN_AXI_SRAM_1(ARLEN_AXI_SRAM_1),
+    .ARSIZE_AXI_SRAM_1(ARSIZE_AXI_SRAM_1),
+    .ARBURST_AXI_SRAM_1(ARBURST_AXI_SRAM_1),
+    .ARLOCK_AXI_SRAM_1(ARLOCK_AXI_SRAM_1),
+    .ARCACHE_AXI_SRAM_1(ARCACHE_AXI_SRAM_1),
+    .ARPROT_AXI_SRAM_1(ARPROT_AXI_SRAM_1),
+    .ARVALID_AXI_SRAM_1(ARVALID_AXI_SRAM_1),
+    .ARREADY_AXI_SRAM_1(ARREADY_AXI_SRAM_1),
+    .RID_AXI_SRAM_1(RID_AXI_SRAM_1),
+    .RDATA_AXI_SRAM_1(RDATA_AXI_SRAM_1),
+    .RRESP_AXI_SRAM_1(RRESP_AXI_SRAM_1),
+    .RLAST_AXI_SRAM_1(RLAST_AXI_SRAM_1),
+    .RVALID_AXI_SRAM_1(RVALID_AXI_SRAM_1),
+    .RREADY_AXI_SRAM_1(RREADY_AXI_SRAM_1),
+
+    .AWID_AXI_SRAM_2(AWID_AXI_SRAM_2),
+    .AWADDR_AXI_SRAM_2(AWADDR_AXI_SRAM_2),
+    .AWLEN_AXI_SRAM_2(AWLEN_AXI_SRAM_2),
+    .AWSIZE_AXI_SRAM_2(AWSIZE_AXI_SRAM_2),
+    .AWBURST_AXI_SRAM_2(AWBURST_AXI_SRAM_2),
+    .AWLOCK_AXI_SRAM_2(AWLOCK_AXI_SRAM_2),
+    .AWCACHE_AXI_SRAM_2(AWCACHE_AXI_SRAM_2),
+    .AWPROT_AXI_SRAM_2(AWPROT_AXI_SRAM_2),
+    .AWVALID_AXI_SRAM_2(AWVALID_AXI_SRAM_2),
+    .AWREADY_AXI_SRAM_2(AWREADY_AXI_SRAM_2),
+    .WDATA_AXI_SRAM_2(WDATA_AXI_SRAM_2),
+    .WSTRB_AXI_SRAM_2(WSTRB_AXI_SRAM_2),
+    .WLAST_AXI_SRAM_2(WLAST_AXI_SRAM_2),
+    .WVALID_AXI_SRAM_2(WVALID_AXI_SRAM_2),
+    .WREADY_AXI_SRAM_2(WREADY_AXI_SRAM_2),
+    .BID_AXI_SRAM_2(BID_AXI_SRAM_2),
+    .BRESP_AXI_SRAM_2(BRESP_AXI_SRAM_2),
+    .BVALID_AXI_SRAM_2(BVALID_AXI_SRAM_2),
+    .BREADY_AXI_SRAM_2(BREADY_AXI_SRAM_2),
+    .ARID_AXI_SRAM_2(ARID_AXI_SRAM_2),
+    .ARADDR_AXI_SRAM_2(ARADDR_AXI_SRAM_2),
+    .ARLEN_AXI_SRAM_2(ARLEN_AXI_SRAM_2),
+    .ARSIZE_AXI_SRAM_2(ARSIZE_AXI_SRAM_2),
+    .ARBURST_AXI_SRAM_2(ARBURST_AXI_SRAM_2),
+    .ARLOCK_AXI_SRAM_2(ARLOCK_AXI_SRAM_2),
+    .ARCACHE_AXI_SRAM_2(ARCACHE_AXI_SRAM_2),
+    .ARPROT_AXI_SRAM_2(ARPROT_AXI_SRAM_2),
+    .ARVALID_AXI_SRAM_2(ARVALID_AXI_SRAM_2),
+    .ARREADY_AXI_SRAM_2(ARREADY_AXI_SRAM_2),
+    .RID_AXI_SRAM_2(RID_AXI_SRAM_2),
+    .RDATA_AXI_SRAM_2(RDATA_AXI_SRAM_2),
+    .RRESP_AXI_SRAM_2(RRESP_AXI_SRAM_2),
+    .RLAST_AXI_SRAM_2(RLAST_AXI_SRAM_2),
+    .RVALID_AXI_SRAM_2(RVALID_AXI_SRAM_2),
+    .RREADY_AXI_SRAM_2(RREADY_AXI_SRAM_2),
+
+    .AWID_AXI_SRAM_3(AWID_AXI_SRAM_3),
+    .AWADDR_AXI_SRAM_3(AWADDR_AXI_SRAM_3),
+    .AWLEN_AXI_SRAM_3(AWLEN_AXI_SRAM_3),
+    .AWSIZE_AXI_SRAM_3(AWSIZE_AXI_SRAM_3),
+    .AWBURST_AXI_SRAM_3(AWBURST_AXI_SRAM_3),
+    .AWLOCK_AXI_SRAM_3(AWLOCK_AXI_SRAM_3),
+    .AWCACHE_AXI_SRAM_3(AWCACHE_AXI_SRAM_3),
+    .AWPROT_AXI_SRAM_3(AWPROT_AXI_SRAM_3),
+    .AWVALID_AXI_SRAM_3(AWVALID_AXI_SRAM_3),
+    .AWREADY_AXI_SRAM_3(AWREADY_AXI_SRAM_3),
+    .WDATA_AXI_SRAM_3(WDATA_AXI_SRAM_3),
+    .WSTRB_AXI_SRAM_3(WSTRB_AXI_SRAM_3),
+    .WLAST_AXI_SRAM_3(WLAST_AXI_SRAM_3),
+    .WVALID_AXI_SRAM_3(WVALID_AXI_SRAM_3),
+    .WREADY_AXI_SRAM_3(WREADY_AXI_SRAM_3),
+    .BID_AXI_SRAM_3(BID_AXI_SRAM_3),
+    .BRESP_AXI_SRAM_3(BRESP_AXI_SRAM_3),
+    .BVALID_AXI_SRAM_3(BVALID_AXI_SRAM_3),
+    .BREADY_AXI_SRAM_3(BREADY_AXI_SRAM_3),
+    .ARID_AXI_SRAM_3(ARID_AXI_SRAM_3),
+    .ARADDR_AXI_SRAM_3(ARADDR_AXI_SRAM_3),
+    .ARLEN_AXI_SRAM_3(ARLEN_AXI_SRAM_3),
+    .ARSIZE_AXI_SRAM_3(ARSIZE_AXI_SRAM_3),
+    .ARBURST_AXI_SRAM_3(ARBURST_AXI_SRAM_3),
+    .ARLOCK_AXI_SRAM_3(ARLOCK_AXI_SRAM_3),
+    .ARCACHE_AXI_SRAM_3(ARCACHE_AXI_SRAM_3),
+    .ARPROT_AXI_SRAM_3(ARPROT_AXI_SRAM_3),
+    .ARVALID_AXI_SRAM_3(ARVALID_AXI_SRAM_3),
+    .ARREADY_AXI_SRAM_3(ARREADY_AXI_SRAM_3),
+    .RID_AXI_SRAM_3(RID_AXI_SRAM_3),
+    .RDATA_AXI_SRAM_3(RDATA_AXI_SRAM_3),
+    .RRESP_AXI_SRAM_3(RRESP_AXI_SRAM_3),
+    .RLAST_AXI_SRAM_3(RLAST_AXI_SRAM_3),
+    .RVALID_AXI_SRAM_3(RVALID_AXI_SRAM_3),
+    .RREADY_AXI_SRAM_3(RREADY_AXI_SRAM_3),
 
     .AWID_AXI_TLX_OUT(AWID_AXI_TLX_OUT),
     .AWADDR_AXI_TLX_OUT(AWADDR_AXI_TLX_OUT),
@@ -398,7 +615,6 @@ nic400_sram_chiplet u_nic400_sram_chiplet(
     .RREADY_AXI_CHIPLET_IN(RREADY_AXI_CHIPLET_IN), 
 
     .clk0clk(SYS_CLK),
-    .clk0clken(1'b1),
     .clk0resetn(aRESETn),
     .refclk(SYS_CLK),
     .refclken(1'b1),
@@ -520,45 +736,222 @@ sram_chiplet_apb_subsystem u_sram_chiplet_apb_subsystem(
 
 assign PLL_LOCK_o = PLL_LOCK & PLL_LOCK_i;
 
-SRAM_wrapper u_SRAM_wrapper(
+SRAM_wrapper #(.SPLIT_SRAM(0)) u_SRAM_wrapper_0(
+    .ACLK(SYS_CLK),
+    .ARESETn(aRESETn),
+
+    .AWVALID(AWVALID_AXI_SRAM_0),
+    .AWREADY(AWREADY_AXI_SRAM_0),
+    .AWID(AWID_AXI_SRAM_0),
+    .AWADDR(AWADDR_AXI_SRAM_0),
+    .AWLEN(AWLEN_AXI_SRAM_0),
+    .AWSIZE(AWSIZE_AXI_SRAM_0),
+    .AWBURST(AWBURST_AXI_SRAM_0),
+    .AWLOCK(AWLOCK_AXI_SRAM_0),
+    .AWPROT(AWPROT_AXI_SRAM_0),
+    .AWQOS(),
+    .WVALID(WVALID_AXI_SRAM_0),
+    .WREADY(WREADY_AXI_SRAM_0),
+    .WDATA(WDATA_AXI_SRAM_0),
+    .WSTRB(WSTRB_AXI_SRAM_0),
+    .WLAST(WLAST_AXI_SRAM_0),
+    .BVALID(BVALID_AXI_SRAM_0),
+    .BREADY(BREADY_AXI_SRAM_0),
+    .BID(BID_AXI_SRAM_0),
+    .BRESP(BRESP_AXI_SRAM_0),
+    .ARVALID(ARVALID_AXI_SRAM_0),
+    .ARREADY(ARREADY_AXI_SRAM_0),
+    .ARID(ARID_AXI_SRAM_0),
+    .ARADDR(ARADDR_AXI_SRAM_0),
+    .ARLEN(ARLEN_AXI_SRAM_0),
+    .ARSIZE(ARSIZE_AXI_SRAM_0),
+    .ARBURST(ARBURST_AXI_SRAM_0),
+    .ARLOCK(ARLOCK_AXI_SRAM_0),
+    .ARPROT(ARPROT_AXI_SRAM_0),
+    .ARQOS(),
+    .RVALID(RVALID_AXI_SRAM_0),
+    .RREADY(RREADY_AXI_SRAM_0),
+    .RID(RID_AXI_SRAM_0),
+    .RDATA(RDATA_AXI_SRAM_0),
+    .RRESP(RRESP_AXI_SRAM_0),
+    .RLAST(RLAST_AXI_SRAM_0),
+    .AWAKEUP(1'b1),
+
+    .WPOISON(1'b0),
+    .RPOISON(),
+
+    .clk_qreqn(1'b1),
+    .clk_qacceptn(),
+    .clk_qdeny(),
+    .clk_qactive(),
+
+    .pwr_qreqn(1'b1),
+    .pwr_qacceptn(),
+    .pwr_qdeny(),
+    .pwr_qactive(),
+
+    .ext_gt_qreqn(1'b1),
+    .ext_gt_qacceptn(),
+    .cfg_gate_resp(1'b0)
+);
+
+SRAM_wrapper #(.SPLIT_SRAM(0)) u_SRAM_wrapper_1(
+    .ACLK(SYS_CLK),
+    .ARESETn(aRESETn),
+
+    .AWVALID(AWVALID_AXI_SRAM_1),
+    .AWREADY(AWREADY_AXI_SRAM_1),
+    .AWID(AWID_AXI_SRAM_1),
+    .AWADDR(AWADDR_AXI_SRAM_1),
+    .AWLEN(AWLEN_AXI_SRAM_1),
+    .AWSIZE(AWSIZE_AXI_SRAM_1),
+    .AWBURST(AWBURST_AXI_SRAM_1),
+    .AWLOCK(AWLOCK_AXI_SRAM_1),
+    .AWPROT(AWPROT_AXI_SRAM_1),
+    .AWQOS(),
+    .WVALID(WVALID_AXI_SRAM_1),
+    .WREADY(WREADY_AXI_SRAM_1),
+    .WDATA(WDATA_AXI_SRAM_1),
+    .WSTRB(WSTRB_AXI_SRAM_1),
+    .WLAST(WLAST_AXI_SRAM_1),
+    .BVALID(BVALID_AXI_SRAM_1),
+    .BREADY(BREADY_AXI_SRAM_1),
+    .BID(BID_AXI_SRAM_1),
+    .BRESP(BRESP_AXI_SRAM_1),
+    .ARVALID(ARVALID_AXI_SRAM_1),
+    .ARREADY(ARREADY_AXI_SRAM_1),
+    .ARID(ARID_AXI_SRAM_1),
+    .ARADDR(ARADDR_AXI_SRAM_1),
+    .ARLEN(ARLEN_AXI_SRAM_1),
+    .ARSIZE(ARSIZE_AXI_SRAM_1),
+    .ARBURST(ARBURST_AXI_SRAM_1),
+    .ARLOCK(ARLOCK_AXI_SRAM_1),
+    .ARPROT(ARPROT_AXI_SRAM_1),
+    .ARQOS(),
+    .RVALID(RVALID_AXI_SRAM_1),
+    .RREADY(RREADY_AXI_SRAM_1),
+    .RID(RID_AXI_SRAM_1),
+    .RDATA(RDATA_AXI_SRAM_1),
+    .RRESP(RRESP_AXI_SRAM_1),
+    .RLAST(RLAST_AXI_SRAM_1),
+    .AWAKEUP(1'b1),
+
+    .WPOISON(1'b0),
+    .RPOISON(),
+
+    .clk_qreqn(1'b1),
+    .clk_qacceptn(),
+    .clk_qdeny(),
+    .clk_qactive(),
+
+    .pwr_qreqn(1'b1),
+    .pwr_qacceptn(),
+    .pwr_qdeny(),
+    .pwr_qactive(),
+
+    .ext_gt_qreqn(1'b1),
+    .ext_gt_qacceptn(),
+    .cfg_gate_resp(1'b0)
+);
+
+SRAM_wrapper #(.SPLIT_SRAM(0)) u_SRAM_wrapper_2(
+    .ACLK(SYS_CLK),
+    .ARESETn(aRESETn),
+
+    .AWVALID(AWVALID_AXI_SRAM_2),
+    .AWREADY(AWREADY_AXI_SRAM_2),
+    .AWID(AWID_AXI_SRAM_2),
+    .AWADDR(AWADDR_AXI_SRAM_2),
+    .AWLEN(AWLEN_AXI_SRAM_2),
+    .AWSIZE(AWSIZE_AXI_SRAM_2),
+    .AWBURST(AWBURST_AXI_SRAM_2),
+    .AWLOCK(AWLOCK_AXI_SRAM_2),
+    .AWPROT(AWPROT_AXI_SRAM_2),
+    .AWQOS(),
+    .WVALID(WVALID_AXI_SRAM_2),
+    .WREADY(WREADY_AXI_SRAM_2),
+    .WDATA(WDATA_AXI_SRAM_2),
+    .WSTRB(WSTRB_AXI_SRAM_2),
+    .WLAST(WLAST_AXI_SRAM_2),
+    .BVALID(BVALID_AXI_SRAM_2),
+    .BREADY(BREADY_AXI_SRAM_2),
+    .BID(BID_AXI_SRAM_2),
+    .BRESP(BRESP_AXI_SRAM_2),
+    .ARVALID(ARVALID_AXI_SRAM_2),
+    .ARREADY(ARREADY_AXI_SRAM_2),
+    .ARID(ARID_AXI_SRAM_2),
+    .ARADDR(ARADDR_AXI_SRAM_2),
+    .ARLEN(ARLEN_AXI_SRAM_2),
+    .ARSIZE(ARSIZE_AXI_SRAM_2),
+    .ARBURST(ARBURST_AXI_SRAM_2),
+    .ARLOCK(ARLOCK_AXI_SRAM_2),
+    .ARPROT(ARPROT_AXI_SRAM_2),
+    .ARQOS(),
+    .RVALID(RVALID_AXI_SRAM_2),
+    .RREADY(RREADY_AXI_SRAM_2),
+    .RID(RID_AXI_SRAM_2),
+    .RDATA(RDATA_AXI_SRAM_2),
+    .RRESP(RRESP_AXI_SRAM_2),
+    .RLAST(RLAST_AXI_SRAM_2),
+    .AWAKEUP(1'b1),
+
+    .WPOISON(1'b0),
+    .RPOISON(),
+
+    .clk_qreqn(1'b1),
+    .clk_qacceptn(),
+    .clk_qdeny(),
+    .clk_qactive(),
+
+    .pwr_qreqn(1'b1),
+    .pwr_qacceptn(),
+    .pwr_qdeny(),
+    .pwr_qactive(),
+
+    .ext_gt_qreqn(1'b1),
+    .ext_gt_qacceptn(),
+    .cfg_gate_resp(1'b0)
+);
+
+SRAM_wrapper #(.SPLIT_SRAM(1)) u_SRAM_wrapper_3(
     .ACLK(SYS_CLK),
     .ARESETn(aRESETn),
 
-    .AWVALID(AWVALID_AXI_SRAM),
-    .AWREADY(AWREADY_AXI_SRAM),
-    .AWID(AWID_AXI_SRAM),
-    .AWADDR(AWADDR_AXI_SRAM),
-    .AWLEN(AWLEN_AXI_SRAM),
-    .AWSIZE(AWSIZE_AXI_SRAM),
-    .AWBURST(AWBURST_AXI_SRAM),
-    .AWLOCK(AWLOCK_AXI_SRAM),
-    .AWPROT(AWPROT_AXI_SRAM),
+    .AWVALID(AWVALID_AXI_SRAM_3),
+    .AWREADY(AWREADY_AXI_SRAM_3),
+    .AWID(AWID_AXI_SRAM_3),
+    .AWADDR(AWADDR_AXI_SRAM_3),
+    .AWLEN(AWLEN_AXI_SRAM_3),
+    .AWSIZE(AWSIZE_AXI_SRAM_3),
+    .AWBURST(AWBURST_AXI_SRAM_3),
+    .AWLOCK(AWLOCK_AXI_SRAM_3),
+    .AWPROT(AWPROT_AXI_SRAM_3),
     .AWQOS(),
-    .WVALID(WVALID_AXI_SRAM),
-    .WREADY(WREADY_AXI_SRAM),
-    .WDATA(WDATA_AXI_SRAM),
-    .WSTRB(WSTRB_AXI_SRAM),
-    .WLAST(WLAST_AXI_SRAM),
-    .BVALID(BVALID_AXI_SRAM),
-    .BREADY(BREADY_AXI_SRAM),
-    .BID(BID_AXI_SRAM),
-    .BRESP(BRESP_AXI_SRAM),
-    .ARVALID(ARVALID_AXI_SRAM),
-    .ARREADY(ARREADY_AXI_SRAM),
-    .ARID(ARID_AXI_SRAM),
-    .ARADDR(ARADDR_AXI_SRAM),
-    .ARLEN(ARLEN_AXI_SRAM),
-    .ARSIZE(ARSIZE_AXI_SRAM),
-    .ARBURST(ARBURST_AXI_SRAM),
-    .ARLOCK(ARLOCK_AXI_SRAM),
-    .ARPROT(ARPROT_AXI_SRAM),
+    .WVALID(WVALID_AXI_SRAM_3),
+    .WREADY(WREADY_AXI_SRAM_3),
+    .WDATA(WDATA_AXI_SRAM_3),
+    .WSTRB(WSTRB_AXI_SRAM_3),
+    .WLAST(WLAST_AXI_SRAM_3),
+    .BVALID(BVALID_AXI_SRAM_3),
+    .BREADY(BREADY_AXI_SRAM_3),
+    .BID(BID_AXI_SRAM_3),
+    .BRESP(BRESP_AXI_SRAM_3),
+    .ARVALID(ARVALID_AXI_SRAM_3),
+    .ARREADY(ARREADY_AXI_SRAM_3),
+    .ARID(ARID_AXI_SRAM_3),
+    .ARADDR(ARADDR_AXI_SRAM_3),
+    .ARLEN(ARLEN_AXI_SRAM_3),
+    .ARSIZE(ARSIZE_AXI_SRAM_3),
+    .ARBURST(ARBURST_AXI_SRAM_3),
+    .ARLOCK(ARLOCK_AXI_SRAM_3),
+    .ARPROT(ARPROT_AXI_SRAM_3),
     .ARQOS(),
-    .RVALID(RVALID_AXI_SRAM),
-    .RREADY(RREADY_AXI_SRAM),
-    .RID(RID_AXI_SRAM),
-    .RDATA(RDATA_AXI_SRAM),
-    .RRESP(RRESP_AXI_SRAM),
-    .RLAST(RLAST_AXI_SRAM),
+    .RVALID(RVALID_AXI_SRAM_3),
+    .RREADY(RREADY_AXI_SRAM_3),
+    .RID(RID_AXI_SRAM_3),
+    .RDATA(RDATA_AXI_SRAM_3),
+    .RRESP(RRESP_AXI_SRAM_3),
+    .RLAST(RLAST_AXI_SRAM_3),
     .AWAKEUP(1'b1),
 
     .WPOISON(1'b0),
diff --git a/makefile b/makefile
index f60a4ca91e5b87a5a1953c5f82c8001839330ca6..aef9050ef6a2164b6832317eadd2a183c0245590 100644
--- a/makefile
+++ b/makefile
@@ -7,11 +7,13 @@ include ./make.cfg
 # - Commonly Overloaded Variables
 #-------------------------------------
 # Simulator type (mti/vcs/xm)
-SIMULATOR   = mti
+SIMULATOR   = vcs
 
 # IS this for an ASIC Flow?
 ASIC ?= no
 
+GATE_SIMS ?= no
+
 build_sie300_sram_ctrl:
 	@$(SIE300_IP_LOGICAL_DIR)/generate --config ./socrates/BP301_SRAM/config/SRAM_ctrl.yaml --output ./logical/SMC
 build_nic400_sram_chiplet:
@@ -45,6 +47,8 @@ SIM_DIR ?= $(SIM_TOP_DIR)
 ifeq ($(ASIC),yes)
 	DESIGN_VC_ASIC ?= $(SOCLABS_SRAM_CHIPLET_DIR)/flist/Top/sram_chiplet_TSMC28nm_ASIC.flist
 	DESIGN_VC ?= $(SOCLABS_SRAM_CHIPLET_DIR)/flist/Top/sram_chiplet_TSMC28nm.flist
+else ifeq ($(GATE_SIMS),yes)
+	DESIGN_VC ?= $(SOCLABS_SRAM_CHIPLET_DIR)/flist/Top/sram_chiplet_TSMC28nm_GATE.flist
 else
 	DESIGN_VC ?= $(SOCLABS_SRAM_CHIPLET_DIR)/flist/Top/sram_chiplet.flist
 endif
diff --git a/pad_level/glib/SRAM_chiplet.sv b/pad_level/glib/SRAM_chiplet.sv
new file mode 100644
index 0000000000000000000000000000000000000000..7f544ecd408ee6259eb08d351232a1bf6137f7bd
--- /dev/null
+++ b/pad_level/glib/SRAM_chiplet.sv
@@ -0,0 +1,156 @@
+//-----------------------------------------------------------------------------
+// Top pad level of SRAM chiplet for TSMC 28nm HPC+
+// A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license.
+//
+// Contributors
+//
+// Daniel Newbrook (d.newbrook@soton.ac.uk)
+//
+// Copyright (C) 2021-4, SoC Labs (www.soclabs.org)
+//-----------------------------------------------------------------------------
+
+`include "tlx_interfaces.sv"
+// Total pins = 106 (excluding power)
+
+module SRAM_chiplet(
+`ifdef POWER_PINS
+    inout wire      VDDIO,
+    inout wire      VSSIO,
+    inout wire      VDD,
+    inout wire      VSS,
+`endif 
+    input  wire         PAD_REF_CLK,
+    input  wire         PAD_aRESETn,
+    input  wire         PAD_DL_FWD_RESETn,
+    input  wire         PAD_IN_FWD_CLK,
+    output wire         PAD_IN_REV_CLK,
+    output wire         PAD_OUT_FWD_CLK,
+    input  wire         PAD_OUT_REV_CLK,
+    output wire         PAD_PLL_LOCK_o,
+    input  wire         PAD_PLL_LOCK_i,
+
+    // TLX_IN_data_rev_0 tlx out
+    output wire [15:0]  PAD_TLX_IN_data_rev_0_tdata, 
+    output wire         PAD_TLX_IN_data_rev_0_tvalid,
+    input  wire         PAD_TLX_IN_data_rev_0_tready,
+
+    //TLX_IN_flow_rev_0 tlx out
+    output wire [2:0]   PAD_TLX_IN_flow_rev_0_tdata, 
+    output wire         PAD_TLX_IN_flow_rev_0_tvalid,
+    input  wire         PAD_TLX_IN_flow_rev_0_tready,
+
+    //tlx in
+    input  wire [1:0]   PAD_TLX_IN_flow_fwd_0_tdata,
+    input  wire         PAD_TLX_IN_flow_fwd_0_tvalid,
+    output wire         PAD_TLX_IN_flow_fwd_0_tready,
+
+    //tlx in
+    input  wire [15:0]  PAD_TLX_IN_data_fwd_0_tdata, 
+    input  wire         PAD_TLX_IN_data_fwd_0_tvalid,
+    output wire         PAD_TLX_IN_data_fwd_0_tready,
+
+    //tlx in
+    input  wire [15:0]  PAD_TLX_data_rev_1_tdata, 
+    input  wire         PAD_TLX_data_rev_1_tvalid,
+    output wire         PAD_TLX_data_rev_1_tready,
+
+    //tlx in
+    input  wire [2:0]   PAD_TLX_flow_rev_1_tdata, 
+    input  wire         PAD_TLX_flow_rev_1_tvalid,
+    output wire         PAD_TLX_flow_rev_1_tready,
+
+    // tlx out
+    output wire [1:0]   PAD_TLX_flow_fwd_1_tdata, 
+    output wire         PAD_TLX_flow_fwd_1_tvalid,
+    input  wire         PAD_TLX_flow_fwd_1_tready,
+
+    // tlx out
+    output wire [15:0]  PAD_TLX_data_fwd_1_tdata,
+    output wire         PAD_TLX_data_fwd_1_tvalid,
+    input  wire         PAD_TLX_data_fwd_1_tready,
+
+    input  wire [3:0]   PAD_addr_sel
+);
+
+// Thin links from NIC_TB to SRAM_chiplet_0
+TLX_AXI_stream #(.DATA_WIDTH(16))   TLX_IN_data_rev_0();
+TLX_AXI_stream #(.DATA_WIDTH(3))    TLX_IN_flow_rev_0();
+TLX_AXI_stream #(.DATA_WIDTH(2))    TLX_IN_flow_fwd_0();
+TLX_AXI_stream #(.DATA_WIDTH(16))   TLX_IN_data_fwd_0();
+
+// Thin links from SRAM_chiplet_0 to SRAM_chiplet_1
+TLX_AXI_stream #(.DATA_WIDTH(16))   TLX_data_rev_1();
+TLX_AXI_stream #(.DATA_WIDTH(3))    TLX_flow_rev_1();
+TLX_AXI_stream #(.DATA_WIDTH(2))    TLX_flow_fwd_1();
+TLX_AXI_stream #(.DATA_WIDTH(16))   TLX_data_fwd_1();
+
+    // TLX_IN_data_rev_0 tlx out
+assign PAD_TLX_IN_data_rev_0_tdata  = TLX_IN_data_rev_0.tdata;
+assign PAD_TLX_IN_data_rev_0_tvalid = TLX_IN_data_rev_0.tvalid;
+assign TLX_IN_data_rev_0.tready = PAD_TLX_IN_data_rev_0_tready;
+
+    //TLX_IN_flow_rev_0 tlx out
+assign PAD_TLX_IN_flow_rev_0_tdata  = TLX_IN_flow_rev_0.tdata;
+assign PAD_TLX_IN_flow_rev_0_tvalid = TLX_IN_flow_rev_0.tvalid;
+assign TLX_IN_flow_rev_0.tready  = PAD_TLX_IN_flow_rev_0_tready;
+
+    //tlx in
+assign TLX_IN_flow_fwd_0.tdata  = PAD_TLX_IN_flow_fwd_0_tdata;
+assign TLX_IN_flow_fwd_0.tvalid = PAD_TLX_IN_flow_fwd_0_tvalid;
+assign PAD_TLX_IN_flow_fwd_0_tready = TLX_IN_flow_fwd_0.tready;
+
+    //tlx in
+assign TLX_IN_data_fwd_0.tdata  = PAD_TLX_IN_data_fwd_0_tdata;
+assign TLX_IN_data_fwd_0.tvalid = PAD_TLX_IN_data_fwd_0_tvalid;
+assign PAD_TLX_IN_data_fwd_0_tready = TLX_IN_data_fwd_0.tready;
+
+    //tlx in
+assign TLX_data_rev_1.tdata     = PAD_TLX_data_rev_1_tdata;
+assign TLX_data_rev_1.tvalid    = PAD_TLX_data_rev_1_tvalid;
+assign PAD_TLX_data_rev_1_tready    = TLX_data_rev_1.tready;
+
+    //tlx in
+assign TLX_flow_rev_1.tdata     = PAD_TLX_flow_rev_1_tdata;
+assign TLX_flow_rev_1.tvalid    = PAD_TLX_flow_rev_1_tvalid;
+assign PAD_TLX_flow_rev_1_tready    = TLX_flow_rev_1.tready;
+
+    // tlx out
+assign PAD_TLX_flow_fwd_1_tdata     = TLX_flow_fwd_1.tdata;
+assign PAD_TLX_flow_fwd_1_tvalid    = TLX_flow_fwd_1.tvalid;
+assign TLX_flow_fwd_1.tready    = PAD_TLX_flow_fwd_1_tready;
+
+    // tlx out
+assign PAD_TLX_data_fwd_1_tdata     = TLX_data_fwd_1.tdata;
+assign PAD_TLX_data_fwd_1_tvalid    = TLX_data_fwd_1.tvalid;
+assign TLX_data_fwd_1.tready    = PAD_TLX_data_fwd_1_tready;
+
+
+
+top_sram_chiplet #(.N_ADDR_SEL_BITS(4)) u_top_sram_chiplet (
+    .REF_CLK(PAD_REF_CLK),
+    .aRESETn(PAD_aRESETn),
+    .DL_FWD_RESETn(PAD_DL_FWD_RESETn),
+
+    .IN_FWD_CLK(PAD_IN_FWD_CLK),
+    .IN_REV_CLK(PAD_IN_REV_CLK),
+    .OUT_FWD_CLK(PAD_OUT_FWD_CLK),
+    .OUT_REV_CLK(PAD_OUT_REV_CLK),
+    .PLL_LOCK_o(PAD_PLL_LOCK_o),
+    .PLL_LOCK_i(PAD_PLL_LOCK_i),
+
+    // Thin Links In
+    .TLX_IN_data_rev(TLX_IN_data_rev_0),
+    .TLX_IN_flow_rev(TLX_IN_flow_rev_0),
+    .TLX_IN_flow_fwd(TLX_IN_flow_fwd_0),
+    .TLX_IN_data_fwd(TLX_IN_data_fwd_0),
+    // Thin Links Out
+    .TLX_OUT_data_rev(TLX_data_rev_1),
+    .TLX_OUT_flow_rev(TLX_flow_rev_1),
+    .TLX_OUT_flow_fwd(TLX_flow_fwd_1),
+    .TLX_OUT_data_fwd(TLX_data_fwd_1),
+    
+    // Address Select pins
+    .addr_sel(PAD_addr_sel)
+);
+
+endmodule
\ No newline at end of file
diff --git a/pad_level/tsmc28nm_hpcp/SRAM_chiplet.sv b/pad_level/tsmc28nm_hpcp/SRAM_chiplet.sv
index 9ff678caaffab321580f3c5aea6cf6d255971ee3..8ccf07435754a7449c0bd5f7749aae550c3af805 100644
--- a/pad_level/tsmc28nm_hpcp/SRAM_chiplet.sv
+++ b/pad_level/tsmc28nm_hpcp/SRAM_chiplet.sv
@@ -10,6 +10,8 @@
 //-----------------------------------------------------------------------------
 
 `include "tlx_interfaces.sv"
+// Total pins = 106 (excluding power)
+
 module SRAM_chiplet(
 `ifdef POWER_PINS
     inout wire      VDDIO,
@@ -17,60 +19,95 @@ module SRAM_chiplet(
     inout wire      VDD,
     inout wire      VSS,
 `endif 
-    input  wire         REF_CLK,
-    input  wire         aRESETn,
-    input  wire         DL_FWD_RESETn,
-    input  wire         IN_FWD_CLK,
-    output wire         IN_REV_CLK,
-    output wire         OUT_FWD_CLK,
-    input  wire         OUT_REV_CLK,
-    output wire         OUT_CLK,
-    output wire         PLL_LOCK_o,
-    input  wire         PLL_LOCK_i,
+    input  wire         PAD_REF_CLK,
+    input  wire         PAD_aRESETn,
+    input  wire         PAD_DL_FWD_RESETn,
+    input  wire         PAD_IN_FWD_CLK,
+    output wire         PAD_IN_REV_CLK,
+    output wire         PAD_OUT_FWD_CLK,
+    input  wire         PAD_OUT_REV_CLK,
+    output wire         PAD_PLL_LOCK_o,
+    input  wire         PAD_PLL_LOCK_i,
+
+    input  wire         PAD_VPREF,
 
     // TLX_IN_data_rev_0 tlx out
-    output wire [15:0]  TLX_IN_data_rev_0_tdata, 
-    output wire         TLX_IN_data_rev_0_tvalid,
-    input  wire         TLX_IN_data_rev_0_tready,
+    output wire [15:0]  PAD_TLX_IN_data_rev_0_tdata, 
+    output wire         PAD_TLX_IN_data_rev_0_tvalid,
+    input  wire         PAD_TLX_IN_data_rev_0_tready,
 
     //TLX_IN_flow_rev_0 tlx out
-    output wire [2:0]   TLX_IN_flow_rev_0_tdata, 
-    output wire         TLX_IN_flow_rev_0_tvalid,
-    input  wire         TLX_IN_flow_rev_0_tready,
+    output wire [2:0]   PAD_TLX_IN_flow_rev_0_tdata, 
+    output wire         PAD_TLX_IN_flow_rev_0_tvalid,
+    input  wire         PAD_TLX_IN_flow_rev_0_tready,
 
     //tlx in
-    input  wire [1:0]   TLX_IN_flow_fwd_0_tdata,
-    input  wire         TLX_IN_flow_fwd_0_tvalid,
-    output wire         TLX_IN_flow_fwd_0_tready,
+    input  wire [1:0]   PAD_TLX_IN_flow_fwd_0_tdata,
+    input  wire         PAD_TLX_IN_flow_fwd_0_tvalid,
+    output wire         PAD_TLX_IN_flow_fwd_0_tready,
 
     //tlx in
-    input  wire [15:0]  TLX_IN_data_fwd_0_tdata, 
-    input  wire         TLX_IN_data_fwd_0_tvalid,
-    output wire         TLX_IN_data_fwd_0_tready,
+    input  wire [15:0]  PAD_TLX_IN_data_fwd_0_tdata, 
+    input  wire         PAD_TLX_IN_data_fwd_0_tvalid,
+    output wire         PAD_TLX_IN_data_fwd_0_tready,
 
     //tlx in
-    input  wire [15:0]  TLX_data_rev_1_tdata, 
-    input  wire         TLX_data_rev_1_tvalid,
-    output wire         TLX_data_rev_1_tready,
+    input  wire [15:0]  PAD_TLX_data_rev_1_tdata, 
+    input  wire         PAD_TLX_data_rev_1_tvalid,
+    output wire         PAD_TLX_data_rev_1_tready,
 
     //tlx in
-    input  wire [2:0]   TLX_flow_rev_1_tdata, 
-    input  wire         TLX_flow_rev_1_tvalid,
-    output wire         TLX_flow_rev_1_tready,
+    input  wire [2:0]   PAD_TLX_flow_rev_1_tdata, 
+    input  wire         PAD_TLX_flow_rev_1_tvalid,
+    output wire         PAD_TLX_flow_rev_1_tready,
 
     // tlx out
-    output wire [1:0]  TLX_flow_fwd_1_tdata, 
-    output wire         TLX_flow_fwd_1_tvalid,
-    input  wire         TLX_flow_fwd_1_tready,
+    output wire [1:0]   PAD_TLX_flow_fwd_1_tdata, 
+    output wire         PAD_TLX_flow_fwd_1_tvalid,
+    input  wire         PAD_TLX_flow_fwd_1_tready,
 
     // tlx out
-    output wire [15:0]  TLX_data_fwd_1_tdata,
-    output wire         TLX_data_fwd_1_tvalid,
-    input  wire         TLX_data_fwd_1_tready,
+    output wire [15:0]  PAD_TLX_data_fwd_1_tdata,
+    output wire         PAD_TLX_data_fwd_1_tvalid,
+    input  wire         PAD_TLX_data_fwd_1_tready,
 
-    input  wire [5:0]   addr_sel
+    input  wire [3:0]   PAD_addr_sel
 );
+wire         REF_CLK;
+wire         aRESETn;
+wire         DL_FWD_RESETn;
+wire         IN_FWD_CLK;
+wire         IN_REV_CLK;
+wire         OUT_FWD_CLK;
+wire         OUT_REV_CLK;
+wire         PLL_LOCK_o;
+wire         PLL_LOCK_i;
+wire [3:0]   addr_sel;
 
+wire [15:0]  TLX_IN_data_rev_0_tdata; 
+wire         TLX_IN_data_rev_0_tvalid;
+wire         TLX_IN_data_rev_0_tready;
+wire [2:0]   TLX_IN_flow_rev_0_tdata; 
+wire         TLX_IN_flow_rev_0_tvalid;
+wire         TLX_IN_flow_rev_0_tready;
+wire [1:0]   TLX_IN_flow_fwd_0_tdata;
+wire         TLX_IN_flow_fwd_0_tvalid;
+wire         TLX_IN_flow_fwd_0_tready;
+wire [15:0]  TLX_IN_data_fwd_0_tdata; 
+wire         TLX_IN_data_fwd_0_tvalid;
+wire         TLX_IN_data_fwd_0_tready;
+wire [15:0]  TLX_data_rev_1_tdata; 
+wire         TLX_data_rev_1_tvalid;
+wire         TLX_data_rev_1_tready;
+wire [2:0]   TLX_flow_rev_1_tdata; 
+wire         TLX_flow_rev_1_tvalid;
+wire         TLX_flow_rev_1_tready;
+wire [1:0]   TLX_flow_fwd_1_tdata; 
+wire         TLX_flow_fwd_1_tvalid;
+wire         TLX_flow_fwd_1_tready;
+wire [15:0]  TLX_data_fwd_1_tdata;
+wire         TLX_data_fwd_1_tvalid;
+wire         TLX_data_fwd_1_tready;
 
 // Thin links from NIC_TB to SRAM_chiplet_0
 TLX_AXI_stream #(.DATA_WIDTH(16))   TLX_IN_data_rev_0();
@@ -125,8 +162,416 @@ assign TLX_data_fwd_1_tvalid    = TLX_data_fwd_1.tvalid;
 assign TLX_data_fwd_1.tready    = TLX_data_fwd_1_tready;
 
 
+genvar i;
+generate 
+    for(i=0;i<16;i=i+1) begin  : TLX_data_tdata
+        PDDW04DGZ_V_G u_TLX_IN_data_rev_tdata(
+            .OEN(1'b0),
+            .REN(1'b1),
+            .I(TLX_IN_data_rev_0_tdata[i]),
+            .C(),
+            .PAD(PAD_TLX_IN_data_rev_0_tdata[i])
+        );
+        PDDW04DGZ_V_G u_TLX_IN_data_fwd_tdata(
+            .OEN(1'b1),
+            .REN(1'b1),
+            .I(1'b0),
+            .C(TLX_IN_data_fwd_0_tdata[i]),
+            .PAD(PAD_TLX_IN_data_fwd_0_tdata[i])
+        );
+        PDDW04DGZ_V_G u_TLX_data_rev_1_tdata(
+            .OEN(1'b1),
+            .REN(1'b1),
+            .I(1'b0),
+            .C(TLX_data_rev_1_tdata[i]),
+            .PAD(PAD_TLX_data_rev_1_tdata[i])
+        );
+        PDDW04DGZ_V_G u_TLX_data_fwd_1_tdata(
+            .OEN(1'b0),
+            .REN(1'b1),
+            .I(TLX_data_fwd_1_tdata[i]),
+            .C(),
+            .PAD(PAD_TLX_data_fwd_1_tdata[i])
+        );
+    end
+endgenerate
+
+// Thin Links Outputs
+PDDW04DGZ_V_G u_PAD_TLX_IN_data_rev_0_tvalid( 
+    .OEN(1'b0),
+    .REN(1'b1),
+    .I(TLX_IN_data_rev_0_tvalid),
+    .C(),
+    .PAD(PAD_TLX_IN_data_rev_0_tvalid)
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_IN_flow_rev_0_tdata_0 ( 
+    .OEN(1'b0),
+    .REN(1'b1),
+    .I(TLX_IN_flow_rev_0_tdata[0]),
+    .C(),
+    .PAD(PAD_TLX_IN_flow_rev_0_tdata[0])
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_IN_flow_rev_0_tdata_1 ( 
+    .OEN(1'b0),
+    .REN(1'b1),
+    .I(TLX_IN_flow_rev_0_tdata[1]),
+    .C(),
+    .PAD(PAD_TLX_IN_flow_rev_0_tdata[1])
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_IN_flow_rev_0_tdata_2 ( 
+    .OEN(1'b0),
+    .REN(1'b1),
+    .I(TLX_IN_flow_rev_0_tdata[2]),
+    .C(),
+    .PAD(PAD_TLX_IN_flow_rev_0_tdata[2])
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_IN_flow_rev_0_tvalid( 
+    .OEN(1'b0),
+    .REN(1'b1),
+    .I(TLX_IN_flow_rev_0_tvalid),
+    .C(),
+    .PAD(PAD_TLX_IN_flow_rev_0_tvalid)
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_IN_flow_fwd_0_tready ( 
+    .OEN(1'b0),
+    .REN(1'b1),
+    .I(TLX_IN_flow_fwd_0_tready),
+    .C(),
+    .PAD(PAD_TLX_IN_flow_fwd_0_tready)
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_IN_data_fwd_0_tready ( 
+    .OEN(1'b0),
+    .REN(1'b1),
+    .I(TLX_IN_data_fwd_0_tready),
+    .C(),
+    .PAD(PAD_TLX_IN_data_fwd_0_tready)
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_data_rev_1_tready ( 
+    .OEN(1'b0),
+    .REN(1'b1),
+    .I(TLX_data_rev_1_tready),
+    .C(),
+    .PAD(PAD_TLX_data_rev_1_tready)
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_flow_rev_1_tready ( 
+    .OEN(1'b0),
+    .REN(1'b1),
+    .I(TLX_flow_rev_1_tready),
+    .C(),
+    .PAD(PAD_TLX_flow_rev_1_tready)
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_flow_fwd_1_tdata_0 ( 
+    .OEN(1'b0),
+    .REN(1'b1),
+    .I(TLX_flow_fwd_1_tdata[0]),
+    .C(),
+    .PAD(PAD_TLX_flow_fwd_1_tdata[0])
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_flow_fwd_1_tdata_1 ( 
+    .OEN(1'b0),
+    .REN(1'b1),
+    .I(TLX_flow_fwd_1_tdata[1]),
+    .C(),
+    .PAD(PAD_TLX_flow_fwd_1_tdata[1])
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_flow_fwd_1_tvalid ( 
+    .OEN(1'b0),
+    .REN(1'b1),
+    .I(TLX_flow_fwd_1_tvalid),
+    .C(),
+    .PAD(PAD_TLX_flow_fwd_1_tvalid)
+);
+
+
+PDDW04DGZ_V_G u_PAD_TLX_data_fwd_1_tvalid ( 
+    .OEN(1'b0),
+    .REN(1'b1),
+    .I(TLX_data_fwd_1_tvalid),
+    .C(),
+    .PAD(PAD_TLX_data_fwd_1_tvalid)
+);
+
+PDDW04DGZ_V_G u_PAD_IN_REV_CLK ( 
+    .OEN(1'b0),
+    .REN(1'b1),
+    .I(IN_REV_CLK),
+    .C(),
+    .PAD(PAD_IN_REV_CLK)
+);
+
+PDDW04DGZ_V_G u_PAD_OUT_FWD_CLK ( 
+    .OEN(1'b0),
+    .REN(1'b1),
+    .I(OUT_FWD_CLK),
+    .C(),
+    .PAD(PAD_OUT_FWD_CLK)
+);
+
+PDDW04DGZ_V_G u_PAD_PLL_LOCK_o ( 
+    .OEN(1'b0),
+    .REN(1'b1),
+    .I(PLL_LOCK_o),
+    .C(),
+    .PAD(PAD_PLL_LOCK_o)
+);
+
+// inputs
+PDDW04DGZ_V_G u_PAD_REF_CLK(
+    .OEN(1'b1),
+    .REN(1'b1),
+    .I(1'b0),
+    .C(REF_CLK),
+    .PAD(PAD_REF_CLK)
+);
+
+PDDW04DGZ_V_G u_PAD_aRESETn(
+    .OEN(1'b1),
+    .REN(1'b1),
+    .I(1'b0),
+    .C(aRESETn),
+    .PAD(PAD_aRESETn)
+);
+
+PDDW04DGZ_V_G u_PAD_DL_FWD_RESETn(
+    .OEN(1'b1),
+    .REN(1'b1),
+    .I(1'b0),
+    .C(DL_FWD_RESETn),
+    .PAD(PAD_DL_FWD_RESETn)
+);
+
+PDDW04DGZ_V_G u_PAD_IN_FWD_CLK(
+    .OEN(1'b1),
+    .REN(1'b1),
+    .I(1'b0),
+    .C(IN_FWD_CLK),
+    .PAD(PAD_IN_FWD_CLK)
+);
+
+PDDW04DGZ_V_G u_PAD_OUT_REV_CLK(
+    .OEN(1'b1),
+    .REN(1'b1),
+    .I(1'b0),
+    .C(OUT_REV_CLK),
+    .PAD(PAD_OUT_REV_CLK)
+);
+
+PDDW04DGZ_V_G u_PAD_PLL_LOCK_i(
+    .OEN(1'b1),
+    .REN(1'b1),
+    .I(1'b0),
+    .C(PLL_LOCK_i),
+    .PAD(PAD_PLL_LOCK_i)
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_IN_data_rev_0_tready(
+    .OEN(1'b1),
+    .REN(1'b1),
+    .I(1'b0),
+    .C(TLX_IN_data_rev_0_tready),
+    .PAD(PAD_TLX_IN_data_rev_0_tready)
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_IN_flow_rev_0_tready(
+    .OEN(1'b1),
+    .REN(1'b1),
+    .I(1'b0),
+    .C(TLX_IN_flow_rev_0_tready),
+    .PAD(PAD_TLX_IN_flow_rev_0_tready)
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_IN_flow_fwd_0_tdata_0(
+    .OEN(1'b1),
+    .REN(1'b1),
+    .I(1'b0),
+    .C(TLX_IN_flow_fwd_0_tdata[0]),
+    .PAD(PAD_TLX_IN_flow_fwd_0_tdata[0])
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_IN_flow_fwd_0_tdata_1(
+    .OEN(1'b1),
+    .REN(1'b1),
+    .I(1'b0),
+    .C(TLX_IN_flow_fwd_0_tdata[1]),
+    .PAD(PAD_TLX_IN_flow_fwd_0_tdata[1])
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_IN_flow_fwd_0_tvalid(
+    .OEN(1'b1),
+    .REN(1'b1),
+    .I(1'b0),
+    .C(TLX_IN_flow_fwd_0_tvalid),
+    .PAD(PAD_TLX_IN_flow_fwd_0_tvalid)
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_IN_data_fwd_0_tvalid(
+    .OEN(1'b1),
+    .REN(1'b1),
+    .I(1'b0),
+    .C(TLX_IN_data_fwd_0_tvalid),
+    .PAD(PAD_TLX_IN_data_fwd_0_tvalid)
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_data_rev_1_tvalid(
+    .OEN(1'b1),
+    .REN(1'b1),
+    .I(1'b0),
+    .C(TLX_data_rev_1_tvalid),
+    .PAD(PAD_TLX_data_rev_1_tvalid)
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_flow_rev_1_tdata_0(
+    .OEN(1'b1),
+    .REN(1'b1),
+    .I(1'b0),
+    .C(TLX_flow_rev_1_tdata[0]),
+    .PAD(PAD_TLX_flow_rev_1_tdata[0])
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_flow_rev_1_tdata_1(
+    .OEN(1'b1),
+    .REN(1'b1),
+    .I(1'b0),
+    .C(TLX_flow_rev_1_tdata[1]),
+    .PAD(PAD_TLX_flow_rev_1_tdata[1])
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_flow_rev_1_tdata_2(
+    .OEN(1'b1),
+    .REN(1'b1),
+    .I(1'b0),
+    .C(TLX_flow_rev_1_tdata[2]),
+    .PAD(PAD_TLX_flow_rev_1_tdata[2])
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_flow_rev_1_tvalid(
+    .OEN(1'b1),
+    .REN(1'b1),
+    .I(1'b0),
+    .C(TLX_flow_rev_1_tvalid),
+    .PAD(PAD_TLX_flow_rev_1_tvalid)
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_flow_fwd_1_tready(
+    .OEN(1'b1),
+    .REN(1'b1),
+    .I(1'b0),
+    .C(TLX_flow_fwd_1_tready),
+    .PAD(PAD_TLX_flow_fwd_1_tready)
+);
+
+PDDW04DGZ_V_G u_PAD_TLX_data_fwd_1_tready(
+    .OEN(1'b1),
+    .REN(1'b1),
+    .I(1'b0),
+    .C(TLX_data_fwd_1_tready),
+    .PAD(PAD_TLX_data_fwd_1_tready)
+);
+
+genvar j;
+generate  
+    for(j=0;j<4;j=j+1) begin : gen_addr_sel
+        PDDW04DGZ_V_G u_PAD_addr_sel(
+            .OEN(1'b1),
+            .REN(1'b1),
+            .I(1'b0),
+            .C(addr_sel[j]),
+            .PAD(PAD_addr_sel[j])
+        );
+    end
+endgenerate
+
+// Power 
+ PVDD1DGZ_H_G u_PAD_VDD_top(
+
+ );
+ PVDD1DGZ_H_G u_PAD_VDD_left(
+
+ );
+ PVDD1DGZ_H_G u_PAD_VDD_right(
+
+ );
+ PVDD1DGZ_H_G u_PAD_VDD_top_right(
+
+ );
+
+ PVDD1DGZ_H_G u_PAD_VDD_bottom(
+
+ );
+
+ PVDD2POC_H_G u_PAD_VDDIO_POC_left(
+
+ );
+
+ PVDD2DGZ_H_G u_PAD_VDDIO_right(
+
+ );
+
+ PVDD2DGZ_H_G u_PAD_VDDIO_top(
+
+ );
+
+ PVDD2DGZ_H_G u_PAD_VDDIO_bottom(
+
+ );
+
+
+
+ PVSS2DGZ_H_G u_PAD_VSSIO_left(
+
+ );
+
+ PVSS2DGZ_H_G u_PAD_VSSIO_right(
+
+ );
+
+ PVSS2DGZ_H_G u_PAD_VSSIO_top(
+
+ );
+
+ PVSS2DGZ_H_G u_PAD_VSSIO_bottom(
+
+ );
+
+
+ PVSS1DGZ_H_G u_PAD_VSS_top(
+
+ );
+ PVSS1DGZ_H_G u_PAD_VSS_left(
+
+ );
+ PVSS1DGZ_H_G u_PAD_VSS_right(
+
+ );
+ PVSS1DGZ_H_G u_PAD_VSS_bottom(
+
+ );
+
+ PVDD1ANA_H_G u_PAD_AVDD_left(
+
+ );
+ PVDD2ANA_H_G u_PAD_AVDDHV_left(
+
+ );
+ PVSS1ANA_H_G u_PAD_AGND_left(
+
+ );
+ PVSS2ANA_H_G u_PAD_AGNDHV_left(
+
+ );
 
-top_sram_chiplet u_top_sram_chiplet(
+top_sram_chiplet #(.N_ADDR_SEL_BITS(4)) u_top_sram_chiplet (
     .REF_CLK(REF_CLK),
     .aRESETn(aRESETn),
     .DL_FWD_RESETn(DL_FWD_RESETn),
@@ -135,7 +580,6 @@ top_sram_chiplet u_top_sram_chiplet(
     .IN_REV_CLK(IN_REV_CLK),
     .OUT_FWD_CLK(OUT_FWD_CLK),
     .OUT_REV_CLK(OUT_REV_CLK),
-    .OUT_CLK(OUT_CLK),
     .PLL_LOCK_o(PLL_LOCK_o),
     .PLL_LOCK_i(PLL_LOCK_i),
 
diff --git a/socrates/BP301_SRAM/config/SRAM_ctrl.yaml b/socrates/BP301_SRAM/config/SRAM_ctrl.yaml
index 9cf86bb26a8032e22ffbec30f4234013171a47a6..d20e167e45979905defe11889c139237035c860b 100644
--- a/socrates/BP301_SRAM/config/SRAM_ctrl.yaml
+++ b/socrates/BP301_SRAM/config/SRAM_ctrl.yaml
@@ -49,7 +49,7 @@ CONFIG_NAME: sram_chiplet
 # ADDR_WIDTH: AXI5 Address Bus width
 #     Valid values:
 #         14-24
-ADDR_WIDTH: 20
+ADDR_WIDTH: 19
 
 
 #
@@ -123,14 +123,14 @@ W_BUF_SIZE: 8
 # REGISTER_AXI_AR: Enables / disables register stage at the AR FIFO
 #     Valid values:
 #         [BYPASS,FULL]
-REGISTER_AXI_AR: BYPASS
+REGISTER_AXI_AR: FULL
 
 
 #
 # REGISTER_AXI_R: Enables / disables register stage at the R FIFO
 #     Valid values:
 #         [BYPASS,FULL]
-REGISTER_AXI_R: BYPASS
+REGISTER_AXI_R: FULL
 
 
 #
diff --git a/socrates/nic400_sram_chiplet/nic400_sram_chiplet.xml b/socrates/nic400_sram_chiplet/nic400_sram_chiplet.xml
index dfaa1e18af309c64a01d7a994faae55829603368..c3232bcf67696b8ab78171fd9d13ab67532a3393 100644
--- a/socrates/nic400_sram_chiplet/nic400_sram_chiplet.xml
+++ b/socrates/nic400_sram_chiplet/nic400_sram_chiplet.xml
@@ -97,7 +97,7 @@
         <LowLatency>false</LowLatency>
       </SlaveInterface>
       <MasterInterface>
-        <Name>AXI_SRAM</Name>
+        <Name>AXI_SRAM_0</Name>
         <AXI4MasterProtocol>
           <AddressWidth>32</AddressWidth>
           <DataWidth>32</DataWidth>
@@ -143,6 +143,63 @@
           <APBGroupRef>apb_group0</APBGroupRef>
         </APB4MasterProtocol>
         <GeographicDomainRef>gd0</GeographicDomainRef>
+        <ClockRef>ref</ClockRef>
+      </MasterInterface>
+      <MasterInterface>
+        <Name>AXI_SRAM_1</Name>
+        <AXI4MasterProtocol>
+          <AddressWidth>32</AddressWidth>
+          <DataWidth>32</DataWidth>
+          <IDWidth>0</IDWidth>
+          <MultiRegion>false</MultiRegion>
+          <TrustZoneMaster>non_secure</TrustZoneMaster>
+          <ReadIssuing>8</ReadIssuing>
+          <WriteIssuing>8</WriteIssuing>
+          <TotalIssuing>8</TotalIssuing>
+          <MultiPorted>false</MultiPorted>
+          <IDWidthReduction>false</IDWidthReduction>
+          <OutputSignals>false</OutputSignals>
+          <VNExternal>false</VNExternal>
+        </AXI4MasterProtocol>
+        <GeographicDomainRef>gd0</GeographicDomainRef>
+        <ClockRef>clk0</ClockRef>
+      </MasterInterface>
+      <MasterInterface>
+        <Name>AXI_SRAM_2</Name>
+        <AXI4MasterProtocol>
+          <AddressWidth>32</AddressWidth>
+          <DataWidth>32</DataWidth>
+          <IDWidth>0</IDWidth>
+          <MultiRegion>false</MultiRegion>
+          <TrustZoneMaster>non_secure</TrustZoneMaster>
+          <ReadIssuing>8</ReadIssuing>
+          <WriteIssuing>8</WriteIssuing>
+          <TotalIssuing>8</TotalIssuing>
+          <MultiPorted>false</MultiPorted>
+          <IDWidthReduction>false</IDWidthReduction>
+          <OutputSignals>false</OutputSignals>
+          <VNExternal>false</VNExternal>
+        </AXI4MasterProtocol>
+        <GeographicDomainRef>gd0</GeographicDomainRef>
+        <ClockRef>clk0</ClockRef>
+      </MasterInterface>
+      <MasterInterface>
+        <Name>AXI_SRAM_3</Name>
+        <AXI4MasterProtocol>
+          <AddressWidth>32</AddressWidth>
+          <DataWidth>32</DataWidth>
+          <IDWidth>0</IDWidth>
+          <MultiRegion>false</MultiRegion>
+          <TrustZoneMaster>non_secure</TrustZoneMaster>
+          <ReadIssuing>8</ReadIssuing>
+          <WriteIssuing>8</WriteIssuing>
+          <TotalIssuing>8</TotalIssuing>
+          <MultiPorted>false</MultiPorted>
+          <IDWidthReduction>false</IDWidthReduction>
+          <OutputSignals>false</OutputSignals>
+          <VNExternal>false</VNExternal>
+        </AXI4MasterProtocol>
+        <GeographicDomainRef>gd0</GeographicDomainRef>
         <ClockRef>clk0</ClockRef>
       </MasterInterface>
     </Interfaces>
@@ -153,15 +210,15 @@
           <InterfaceRef>AXI_CHIPLET_IN</InterfaceRef>
         </MemoryMapSource>
         <MappedBlock>
-          <InterfaceRef>AXI_SRAM</InterfaceRef>
+          <InterfaceRef>AXI_SRAM_0</InterfaceRef>
           <Offset>0</Offset>
-          <Range>1048576</Range>
+          <Range>524288</Range>
           <Visibility>true</Visibility>
         </MappedBlock>
         <MappedBlock>
           <InterfaceRef>AXI_TLX_OUT</InterfaceRef>
-          <Offset>1048576</Offset>
-          <Range>66060288</Range>
+          <Offset>2097152</Offset>
+          <Range>65011712</Range>
           <Visibility>true</Visibility>
         </MappedBlock>
         <MappedBlock>
@@ -170,6 +227,24 @@
           <Range>67108864</Range>
           <Visibility>true</Visibility>
         </MappedBlock>
+        <MappedBlock>
+          <InterfaceRef>AXI_SRAM_1</InterfaceRef>
+          <Offset>524288</Offset>
+          <Range>524288</Range>
+          <Visibility>true</Visibility>
+        </MappedBlock>
+        <MappedBlock>
+          <InterfaceRef>AXI_SRAM_2</InterfaceRef>
+          <Offset>1048576</Offset>
+          <Range>524288</Range>
+          <Visibility>true</Visibility>
+        </MappedBlock>
+        <MappedBlock>
+          <InterfaceRef>AXI_SRAM_3</InterfaceRef>
+          <Offset>1572864</Offset>
+          <Range>524288</Range>
+          <Visibility>true</Visibility>
+        </MappedBlock>
       </MemoryMap>
     </MemoryMaps>
     <Paths>
@@ -179,7 +254,7 @@
         </Source>
         <Targets>
           <Target>
-            <InterfaceRef>AXI_SRAM</InterfaceRef>
+            <InterfaceRef>AXI_SRAM_0</InterfaceRef>
           </Target>
           <Target>
             <InterfaceRef>AXI_TLX_OUT</InterfaceRef>
@@ -187,15 +262,25 @@
           <Target>
             <InterfaceRef>APB_PVT</InterfaceRef>
           </Target>
+          <Target>
+            <InterfaceRef>AXI_SRAM_1</InterfaceRef>
+          </Target>
+          <Target>
+            <InterfaceRef>AXI_SRAM_2</InterfaceRef>
+          </Target>
+          <Target>
+            <InterfaceRef>AXI_SRAM_3</InterfaceRef>
+          </Target>
         </Targets>
       </Path>
     </Paths>
     <VirtualNetworks/>
   </Specification>
   <Architecture>
-    <NICConfigFile>&lt;periph&gt;
-    &lt;product_version_info major_group=&quot;bu&quot; major_revision=&quot;1&quot; major_version=&quot;00&quot; minor_code=&quot;50000&quot; minor_revision=&quot;2&quot; minor_version=&quot;0&quot; part_quality=&quot;rel&quot; product_code=&quot;nic400&quot; /&gt;
-    &lt;validator_version_info major_revision=&quot;22&quot; minor_revision=&quot;1&quot; /&gt;
+    <NICConfigFile>&lt;?xml version=&quot;1.0&quot; encoding=&quot;iso-8859-1&quot; ?&gt;
+&lt;periph&gt;
+    &lt;product_version_info minor_code=&quot;50000&quot; minor_version=&quot;0&quot; major_group=&quot;bu&quot; minor_revision=&quot;2&quot; major_revision=&quot;1&quot; product_code=&quot;nic400&quot; major_version=&quot;00&quot; part_quality=&quot;rel&quot;/&gt;
+    &lt;validator_version_info minor_revision=&quot;1&quot; major_revision=&quot;22&quot;/&gt;
     &lt;global&gt;
         &lt;address0x0 def=&quot;true&quot;&gt;bottom&lt;/address0x0&gt;
         &lt;aruser_width&gt;0&lt;/aruser_width&gt;
@@ -214,12 +299,12 @@
         &lt;qos_status&gt;false&lt;/qos_status&gt;
         &lt;rsb_arch_central_ring&gt;false&lt;/rsb_arch_central_ring&gt;
         &lt;ruser_width&gt;0&lt;/ruser_width&gt;
-        &lt;sas_visible def=&quot;true&quot;&gt;false&lt;/sas_visible&gt;
+        &lt;sas_visible&gt;true&lt;/sas_visible&gt;
         &lt;start_iid&gt;0&lt;/start_iid&gt;
         &lt;taxonomy&gt;masterslave&lt;/taxonomy&gt;
         &lt;thin_links_status def=&quot;true&quot;&gt;false&lt;/thin_links_status&gt;
         &lt;uppercase_ext_sig&gt;true&lt;/uppercase_ext_sig&gt;
-        &lt;virtual_networks /&gt;
+        &lt;virtual_networks/&gt;
         &lt;virtual_networks_status&gt;false&lt;/virtual_networks_status&gt;
         &lt;wuser_width&gt;0&lt;/wuser_width&gt;
     &lt;/global&gt;
@@ -236,18 +321,18 @@
         &lt;address_ranges&gt;
             &lt;name&gt;mm0&lt;/name&gt;
             &lt;range&gt;
-                &lt;addr_max&gt;0xFFFFF&lt;/addr_max&gt;
+                &lt;addr_max&gt;0x7FFFF&lt;/addr_max&gt;
                 &lt;addr_min&gt;0x0&lt;/addr_min&gt;
                 &lt;remap&gt;
                     &lt;bit&gt;default&lt;/bit&gt;
                     &lt;present&gt;true&lt;/present&gt;
                     &lt;region&gt;0&lt;/region&gt;
-                    &lt;target&gt;AXI_SRAM&lt;/target&gt;
+                    &lt;target&gt;AXI_SRAM_0&lt;/target&gt;
                 &lt;/remap&gt;
             &lt;/range&gt;
             &lt;range&gt;
                 &lt;addr_max&gt;0x3FFFFFF&lt;/addr_max&gt;
-                &lt;addr_min&gt;0x100000&lt;/addr_min&gt;
+                &lt;addr_min&gt;0x200000&lt;/addr_min&gt;
                 &lt;remap&gt;
                     &lt;bit&gt;default&lt;/bit&gt;
                     &lt;present&gt;true&lt;/present&gt;
@@ -265,6 +350,36 @@
                     &lt;target&gt;APB_PVT&lt;/target&gt;
                 &lt;/remap&gt;
             &lt;/range&gt;
+            &lt;range&gt;
+                &lt;addr_max&gt;0xFFFFF&lt;/addr_max&gt;
+                &lt;addr_min&gt;0x80000&lt;/addr_min&gt;
+                &lt;remap&gt;
+                    &lt;bit&gt;default&lt;/bit&gt;
+                    &lt;present&gt;true&lt;/present&gt;
+                    &lt;region&gt;0&lt;/region&gt;
+                    &lt;target&gt;AXI_SRAM_1&lt;/target&gt;
+                &lt;/remap&gt;
+            &lt;/range&gt;
+            &lt;range&gt;
+                &lt;addr_max&gt;0x17FFFF&lt;/addr_max&gt;
+                &lt;addr_min&gt;0x100000&lt;/addr_min&gt;
+                &lt;remap&gt;
+                    &lt;bit&gt;default&lt;/bit&gt;
+                    &lt;present&gt;true&lt;/present&gt;
+                    &lt;region&gt;0&lt;/region&gt;
+                    &lt;target&gt;AXI_SRAM_2&lt;/target&gt;
+                &lt;/remap&gt;
+            &lt;/range&gt;
+            &lt;range&gt;
+                &lt;addr_max&gt;0x1FFFFF&lt;/addr_max&gt;
+                &lt;addr_min&gt;0x180000&lt;/addr_min&gt;
+                &lt;remap&gt;
+                    &lt;bit&gt;default&lt;/bit&gt;
+                    &lt;present&gt;true&lt;/present&gt;
+                    &lt;region&gt;0&lt;/region&gt;
+                    &lt;target&gt;AXI_SRAM_3&lt;/target&gt;
+                &lt;/remap&gt;
+            &lt;/range&gt;
         &lt;/address_ranges&gt;
         &lt;apb_config&gt;false&lt;/apb_config&gt;
         &lt;apb_slave_no def=&quot;true&quot;&gt;2&lt;/apb_slave_no&gt;
@@ -336,102 +451,469 @@
             &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
             &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
             &lt;location&gt;boundary&lt;/location&gt;
-            &lt;name&gt;b&lt;/name&gt;
+            &lt;name&gt;b&lt;/name&gt;
+            &lt;type&gt;fifo&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;aw&lt;/name&gt;
+            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;ar&lt;/name&gt;
+            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;r&lt;/name&gt;
+            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;w&lt;/name&gt;
+            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;b&lt;/name&gt;
+            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;slave_port&lt;/location&gt;
+            &lt;name&gt;r&lt;/name&gt;
+            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;slave_port&lt;/location&gt;
+            &lt;name&gt;b&lt;/name&gt;
+            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;slave_if_addr_width&gt;32&lt;/slave_if_addr_width&gt;
+        &lt;slave_if_data_width&gt;32&lt;/slave_if_data_width&gt;
+        &lt;token_prerequest def=&quot;true&quot;&gt;false&lt;/token_prerequest&gt;
+        &lt;token_prerequest_bridge def=&quot;true&quot;&gt;false&lt;/token_prerequest_bridge&gt;
+        &lt;trustzone&gt;nsec&lt;/trustzone&gt;
+        &lt;vid_width&gt;12&lt;/vid_width&gt;
+        &lt;vn_external&gt;none&lt;/vn_external&gt;
+        &lt;vn_external_bridge&gt;none&lt;/vn_external_bridge&gt;
+        &lt;x&gt;110&lt;/x&gt;
+        &lt;y&gt;61&lt;/y&gt;
+        &lt;master_if_port_name&gt;AXI_CHIPLET_IN_m&lt;/master_if_port_name&gt;
+        &lt;slave_if_port_name&gt;AXI_CHIPLET_IN_s&lt;/slave_if_port_name&gt;
+    &lt;/asib&gt;
+    &lt;amib&gt;
+        &lt;apb_config&gt;false&lt;/apb_config&gt;
+        &lt;apb_slave_no&gt;65&lt;/apb_slave_no&gt;
+        &lt;clock_boundary&gt;none&lt;/clock_boundary&gt;
+        &lt;clock_domain_name_master_if&gt;clk0&lt;/clock_domain_name_master_if&gt;
+        &lt;clock_domain_name_slave_if&gt;clk0&lt;/clock_domain_name_slave_if&gt;
+        &lt;compress_id&gt;false&lt;/compress_id&gt;
+        &lt;dest_type&gt;peripheral&lt;/dest_type&gt;
+        &lt;expanded&gt;false&lt;/expanded&gt;
+        &lt;master_if_addr_width&gt;32&lt;/master_if_addr_width&gt;
+        &lt;master_if_data_width&gt;32&lt;/master_if_data_width&gt;
+        &lt;multi_ported&gt;false&lt;/multi_ported&gt;
+        &lt;multi_region&gt;false&lt;/multi_region&gt;
+        &lt;name&gt;AXI_SRAM_0&lt;/name&gt;
+        &lt;protocol&gt;axi4&lt;/protocol&gt;
+        &lt;qv_out&gt;false&lt;/qv_out&gt;
+        &lt;reg&gt;
+            &lt;impl&gt;present&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;w&lt;/name&gt;
+            &lt;type&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl&gt;present&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;b&lt;/name&gt;
+            &lt;type&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl&gt;present&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;r&lt;/name&gt;
+            &lt;type&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
+            &lt;location&gt;slave_port&lt;/location&gt;
+            &lt;name&gt;aw&lt;/name&gt;
+            &lt;type&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;boundary&lt;/location&gt;
+            &lt;name&gt;aw&lt;/name&gt;
+            &lt;type&gt;fifo&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;aw&lt;/name&gt;
+            &lt;type&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
+            &lt;location&gt;slave_port&lt;/location&gt;
+            &lt;name&gt;ar&lt;/name&gt;
+            &lt;type&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;boundary&lt;/location&gt;
+            &lt;name&gt;ar&lt;/name&gt;
+            &lt;type&gt;fifo&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;ar&lt;/name&gt;
+            &lt;type&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
+            &lt;location&gt;slave_port&lt;/location&gt;
+            &lt;name&gt;r&lt;/name&gt;
+            &lt;type&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;boundary&lt;/location&gt;
+            &lt;name&gt;r&lt;/name&gt;
+            &lt;type&gt;fifo&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
+            &lt;location&gt;slave_port&lt;/location&gt;
+            &lt;name&gt;w&lt;/name&gt;
+            &lt;type&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;boundary&lt;/location&gt;
+            &lt;name&gt;w&lt;/name&gt;
+            &lt;type&gt;fifo&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
+            &lt;location&gt;slave_port&lt;/location&gt;
+            &lt;name&gt;b&lt;/name&gt;
+            &lt;type&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;boundary&lt;/location&gt;
+            &lt;name&gt;b&lt;/name&gt;
+            &lt;type&gt;fifo&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;slave_if_data_width&gt;32&lt;/slave_if_data_width&gt;
+        &lt;token_prerequest def=&quot;true&quot;&gt;false&lt;/token_prerequest&gt;
+        &lt;token_prerequest_bridge def=&quot;true&quot;&gt;false&lt;/token_prerequest_bridge&gt;
+        &lt;trustzone&gt;nsec&lt;/trustzone&gt;
+        &lt;vn_external&gt;none&lt;/vn_external&gt;
+        &lt;vn_external_bridge&gt;none&lt;/vn_external_bridge&gt;
+        &lt;x&gt;890&lt;/x&gt;
+        &lt;y&gt;310&lt;/y&gt;
+        &lt;master_if_port_name&gt;AXI_SRAM_0_m&lt;/master_if_port_name&gt;
+        &lt;slave_if_port_name&gt;AXI_SRAM_0_s&lt;/slave_if_port_name&gt;
+    &lt;/amib&gt;
+    &lt;amib&gt;
+        &lt;apb_config&gt;false&lt;/apb_config&gt;
+        &lt;apb_slave_no&gt;64&lt;/apb_slave_no&gt;
+        &lt;clock_boundary&gt;none&lt;/clock_boundary&gt;
+        &lt;clock_domain_name_master_if&gt;clk0&lt;/clock_domain_name_master_if&gt;
+        &lt;clock_domain_name_slave_if&gt;clk0&lt;/clock_domain_name_slave_if&gt;
+        &lt;compress_id&gt;false&lt;/compress_id&gt;
+        &lt;dest_type&gt;peripheral&lt;/dest_type&gt;
+        &lt;expanded&gt;false&lt;/expanded&gt;
+        &lt;master_if_addr_width&gt;32&lt;/master_if_addr_width&gt;
+        &lt;master_if_data_width&gt;32&lt;/master_if_data_width&gt;
+        &lt;multi_ported&gt;false&lt;/multi_ported&gt;
+        &lt;multi_region&gt;false&lt;/multi_region&gt;
+        &lt;name&gt;AXI_TLX_OUT&lt;/name&gt;
+        &lt;protocol&gt;axi4&lt;/protocol&gt;
+        &lt;qv_out&gt;false&lt;/qv_out&gt;
+        &lt;reg&gt;
+            &lt;impl&gt;present&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;w&lt;/name&gt;
+            &lt;type&gt;rev&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl&gt;present&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;b&lt;/name&gt;
+            &lt;type&gt;rev&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl&gt;present&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;r&lt;/name&gt;
+            &lt;type&gt;rev&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;slave_port&lt;/location&gt;
+            &lt;name&gt;aw&lt;/name&gt;
+            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;boundary&lt;/location&gt;
+            &lt;name&gt;aw&lt;/name&gt;
+            &lt;type&gt;fifo&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;aw&lt;/name&gt;
+            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;slave_port&lt;/location&gt;
+            &lt;name&gt;ar&lt;/name&gt;
+            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;boundary&lt;/location&gt;
+            &lt;name&gt;ar&lt;/name&gt;
+            &lt;type&gt;fifo&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;ar&lt;/name&gt;
+            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;slave_port&lt;/location&gt;
+            &lt;name&gt;r&lt;/name&gt;
+            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;boundary&lt;/location&gt;
+            &lt;name&gt;r&lt;/name&gt;
+            &lt;type&gt;fifo&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;slave_port&lt;/location&gt;
+            &lt;name&gt;w&lt;/name&gt;
+            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;boundary&lt;/location&gt;
+            &lt;name&gt;w&lt;/name&gt;
+            &lt;type&gt;fifo&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;slave_port&lt;/location&gt;
+            &lt;name&gt;b&lt;/name&gt;
+            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;boundary&lt;/location&gt;
+            &lt;name&gt;b&lt;/name&gt;
+            &lt;type&gt;fifo&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;slave_if_data_width&gt;32&lt;/slave_if_data_width&gt;
+        &lt;token_prerequest def=&quot;true&quot;&gt;false&lt;/token_prerequest&gt;
+        &lt;token_prerequest_bridge def=&quot;true&quot;&gt;false&lt;/token_prerequest_bridge&gt;
+        &lt;trustzone&gt;nsec&lt;/trustzone&gt;
+        &lt;vn_external&gt;none&lt;/vn_external&gt;
+        &lt;vn_external_bridge&gt;none&lt;/vn_external_bridge&gt;
+        &lt;x&gt;890&lt;/x&gt;
+        &lt;y&gt;116&lt;/y&gt;
+        &lt;master_if_port_name&gt;AXI_TLX_OUT_m&lt;/master_if_port_name&gt;
+        &lt;slave_if_port_name&gt;AXI_TLX_OUT_s&lt;/slave_if_port_name&gt;
+    &lt;/amib&gt;
+    &lt;amib&gt;
+        &lt;apb_config&gt;false&lt;/apb_config&gt;
+        &lt;apb_slave_no&gt;63&lt;/apb_slave_no&gt;
+        &lt;clock_boundary&gt;none&lt;/clock_boundary&gt;
+        &lt;clock_domain_name_master_if&gt;clk0&lt;/clock_domain_name_master_if&gt;
+        &lt;clock_domain_name_slave_if&gt;clk0&lt;/clock_domain_name_slave_if&gt;
+        &lt;compress_id&gt;false&lt;/compress_id&gt;
+        &lt;dest_type&gt;peripheral&lt;/dest_type&gt;
+        &lt;expanded&gt;false&lt;/expanded&gt;
+        &lt;master_if_addr_width&gt;32&lt;/master_if_addr_width&gt;
+        &lt;master_if_data_width&gt;32&lt;/master_if_data_width&gt;
+        &lt;multi_ported&gt;false&lt;/multi_ported&gt;
+        &lt;multi_region&gt;false&lt;/multi_region&gt;
+        &lt;name&gt;AXI_SRAM_1&lt;/name&gt;
+        &lt;protocol&gt;axi4&lt;/protocol&gt;
+        &lt;qv_out&gt;false&lt;/qv_out&gt;
+        &lt;reg&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;w&lt;/name&gt;
+            &lt;type&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;b&lt;/name&gt;
+            &lt;type&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;r&lt;/name&gt;
+            &lt;type&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
+            &lt;location&gt;slave_port&lt;/location&gt;
+            &lt;name&gt;aw&lt;/name&gt;
+            &lt;type&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;boundary&lt;/location&gt;
+            &lt;name&gt;aw&lt;/name&gt;
+            &lt;type&gt;fifo&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;aw&lt;/name&gt;
+            &lt;type&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
+            &lt;location&gt;slave_port&lt;/location&gt;
+            &lt;name&gt;ar&lt;/name&gt;
+            &lt;type&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;boundary&lt;/location&gt;
+            &lt;name&gt;ar&lt;/name&gt;
             &lt;type&gt;fifo&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
-            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
             &lt;location&gt;master_port&lt;/location&gt;
-            &lt;name&gt;aw&lt;/name&gt;
-            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+            &lt;name&gt;ar&lt;/name&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
-            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
-            &lt;location&gt;master_port&lt;/location&gt;
-            &lt;name&gt;ar&lt;/name&gt;
-            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
+            &lt;location&gt;slave_port&lt;/location&gt;
+            &lt;name&gt;r&lt;/name&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
+            &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
             &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
-            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;location&gt;boundary&lt;/location&gt;
             &lt;name&gt;r&lt;/name&gt;
-            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+            &lt;type&gt;fifo&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
-            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
-            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
+            &lt;location&gt;slave_port&lt;/location&gt;
             &lt;name&gt;w&lt;/name&gt;
-            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
+            &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
             &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
-            &lt;location&gt;master_port&lt;/location&gt;
-            &lt;name&gt;b&lt;/name&gt;
-            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+            &lt;location&gt;boundary&lt;/location&gt;
+            &lt;name&gt;w&lt;/name&gt;
+            &lt;type&gt;fifo&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
-            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
             &lt;location&gt;slave_port&lt;/location&gt;
-            &lt;name&gt;r&lt;/name&gt;
-            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+            &lt;name&gt;b&lt;/name&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
+            &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
             &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
-            &lt;location&gt;slave_port&lt;/location&gt;
+            &lt;location&gt;boundary&lt;/location&gt;
             &lt;name&gt;b&lt;/name&gt;
-            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+            &lt;type&gt;fifo&lt;/type&gt;
         &lt;/reg&gt;
-        &lt;slave_if_addr_width&gt;32&lt;/slave_if_addr_width&gt;
         &lt;slave_if_data_width&gt;32&lt;/slave_if_data_width&gt;
         &lt;token_prerequest def=&quot;true&quot;&gt;false&lt;/token_prerequest&gt;
         &lt;token_prerequest_bridge def=&quot;true&quot;&gt;false&lt;/token_prerequest_bridge&gt;
         &lt;trustzone&gt;nsec&lt;/trustzone&gt;
-        &lt;vid_width&gt;12&lt;/vid_width&gt;
         &lt;vn_external&gt;none&lt;/vn_external&gt;
         &lt;vn_external_bridge&gt;none&lt;/vn_external_bridge&gt;
-        &lt;x&gt;0&lt;/x&gt;
-        &lt;y&gt;20&lt;/y&gt;
-        &lt;master_if_port_name&gt;AXI_CHIPLET_IN_m&lt;/master_if_port_name&gt;
-        &lt;slave_if_port_name&gt;AXI_CHIPLET_IN_s&lt;/slave_if_port_name&gt;
-    &lt;/asib&gt;
+        &lt;x&gt;890&lt;/x&gt;
+        &lt;y&gt;214&lt;/y&gt;
+        &lt;master_if_port_name&gt;AXI_SRAM_1_m&lt;/master_if_port_name&gt;
+        &lt;slave_if_port_name&gt;AXI_SRAM_1_s&lt;/slave_if_port_name&gt;
+    &lt;/amib&gt;
     &lt;amib&gt;
         &lt;apb_config&gt;false&lt;/apb_config&gt;
-        &lt;apb_slave_no&gt;65&lt;/apb_slave_no&gt;
+        &lt;apb_slave_no&gt;62&lt;/apb_slave_no&gt;
         &lt;clock_boundary&gt;none&lt;/clock_boundary&gt;
         &lt;clock_domain_name_master_if&gt;clk0&lt;/clock_domain_name_master_if&gt;
         &lt;clock_domain_name_slave_if&gt;clk0&lt;/clock_domain_name_slave_if&gt;
         &lt;compress_id&gt;false&lt;/compress_id&gt;
         &lt;dest_type&gt;peripheral&lt;/dest_type&gt;
+        &lt;expanded&gt;false&lt;/expanded&gt;
         &lt;master_if_addr_width&gt;32&lt;/master_if_addr_width&gt;
         &lt;master_if_data_width&gt;32&lt;/master_if_data_width&gt;
         &lt;multi_ported&gt;false&lt;/multi_ported&gt;
         &lt;multi_region&gt;false&lt;/multi_region&gt;
-        &lt;name&gt;AXI_SRAM&lt;/name&gt;
+        &lt;name&gt;AXI_SRAM_2&lt;/name&gt;
         &lt;protocol&gt;axi4&lt;/protocol&gt;
         &lt;qv_out&gt;false&lt;/qv_out&gt;
         &lt;reg&gt;
-            &lt;impl&gt;present&lt;/impl&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
             &lt;location&gt;master_port&lt;/location&gt;
             &lt;name&gt;w&lt;/name&gt;
-            &lt;type&gt;rev&lt;/type&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
-            &lt;impl&gt;present&lt;/impl&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
             &lt;location&gt;master_port&lt;/location&gt;
             &lt;name&gt;b&lt;/name&gt;
-            &lt;type&gt;rev&lt;/type&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
-            &lt;impl&gt;present&lt;/impl&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
             &lt;location&gt;master_port&lt;/location&gt;
             &lt;name&gt;r&lt;/name&gt;
-            &lt;type&gt;rev&lt;/type&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
-            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
             &lt;location&gt;slave_port&lt;/location&gt;
             &lt;name&gt;aw&lt;/name&gt;
-            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
             &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
@@ -441,16 +923,16 @@
             &lt;type&gt;fifo&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
-            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
             &lt;location&gt;master_port&lt;/location&gt;
             &lt;name&gt;aw&lt;/name&gt;
-            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
-            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
             &lt;location&gt;slave_port&lt;/location&gt;
             &lt;name&gt;ar&lt;/name&gt;
-            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
             &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
@@ -460,16 +942,16 @@
             &lt;type&gt;fifo&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
-            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
             &lt;location&gt;master_port&lt;/location&gt;
             &lt;name&gt;ar&lt;/name&gt;
-            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
-            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
             &lt;location&gt;slave_port&lt;/location&gt;
             &lt;name&gt;r&lt;/name&gt;
-            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
             &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
@@ -479,10 +961,10 @@
             &lt;type&gt;fifo&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
-            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
             &lt;location&gt;slave_port&lt;/location&gt;
             &lt;name&gt;w&lt;/name&gt;
-            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
             &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
@@ -492,10 +974,10 @@
             &lt;type&gt;fifo&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
-            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
             &lt;location&gt;slave_port&lt;/location&gt;
             &lt;name&gt;b&lt;/name&gt;
-            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
             &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
@@ -510,49 +992,50 @@
         &lt;trustzone&gt;nsec&lt;/trustzone&gt;
         &lt;vn_external&gt;none&lt;/vn_external&gt;
         &lt;vn_external_bridge&gt;none&lt;/vn_external_bridge&gt;
-        &lt;x&gt;0&lt;/x&gt;
-        &lt;y&gt;20&lt;/y&gt;
-        &lt;master_if_port_name&gt;AXI_SRAM_m&lt;/master_if_port_name&gt;
-        &lt;slave_if_port_name&gt;AXI_SRAM_s&lt;/slave_if_port_name&gt;
+        &lt;x&gt;890&lt;/x&gt;
+        &lt;y&gt;260&lt;/y&gt;
+        &lt;master_if_port_name&gt;AXI_SRAM_2_m&lt;/master_if_port_name&gt;
+        &lt;slave_if_port_name&gt;AXI_SRAM_2_s&lt;/slave_if_port_name&gt;
     &lt;/amib&gt;
     &lt;amib&gt;
         &lt;apb_config&gt;false&lt;/apb_config&gt;
-        &lt;apb_slave_no&gt;64&lt;/apb_slave_no&gt;
+        &lt;apb_slave_no&gt;61&lt;/apb_slave_no&gt;
         &lt;clock_boundary&gt;none&lt;/clock_boundary&gt;
         &lt;clock_domain_name_master_if&gt;clk0&lt;/clock_domain_name_master_if&gt;
         &lt;clock_domain_name_slave_if&gt;clk0&lt;/clock_domain_name_slave_if&gt;
         &lt;compress_id&gt;false&lt;/compress_id&gt;
         &lt;dest_type&gt;peripheral&lt;/dest_type&gt;
+        &lt;expanded&gt;false&lt;/expanded&gt;
         &lt;master_if_addr_width&gt;32&lt;/master_if_addr_width&gt;
         &lt;master_if_data_width&gt;32&lt;/master_if_data_width&gt;
         &lt;multi_ported&gt;false&lt;/multi_ported&gt;
         &lt;multi_region&gt;false&lt;/multi_region&gt;
-        &lt;name&gt;AXI_TLX_OUT&lt;/name&gt;
+        &lt;name&gt;AXI_SRAM_3&lt;/name&gt;
         &lt;protocol&gt;axi4&lt;/protocol&gt;
         &lt;qv_out&gt;false&lt;/qv_out&gt;
         &lt;reg&gt;
-            &lt;impl&gt;present&lt;/impl&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
             &lt;location&gt;master_port&lt;/location&gt;
             &lt;name&gt;w&lt;/name&gt;
-            &lt;type&gt;rev&lt;/type&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
-            &lt;impl&gt;present&lt;/impl&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
             &lt;location&gt;master_port&lt;/location&gt;
             &lt;name&gt;b&lt;/name&gt;
-            &lt;type&gt;rev&lt;/type&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
-            &lt;impl&gt;present&lt;/impl&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
             &lt;location&gt;master_port&lt;/location&gt;
             &lt;name&gt;r&lt;/name&gt;
-            &lt;type&gt;rev&lt;/type&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
-            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
             &lt;location&gt;slave_port&lt;/location&gt;
             &lt;name&gt;aw&lt;/name&gt;
-            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
             &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
@@ -562,16 +1045,16 @@
             &lt;type&gt;fifo&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
-            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
             &lt;location&gt;master_port&lt;/location&gt;
             &lt;name&gt;aw&lt;/name&gt;
-            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
-            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
             &lt;location&gt;slave_port&lt;/location&gt;
             &lt;name&gt;ar&lt;/name&gt;
-            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
             &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
@@ -581,16 +1064,16 @@
             &lt;type&gt;fifo&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
-            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
             &lt;location&gt;master_port&lt;/location&gt;
             &lt;name&gt;ar&lt;/name&gt;
-            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
-            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
             &lt;location&gt;slave_port&lt;/location&gt;
             &lt;name&gt;r&lt;/name&gt;
-            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
             &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
@@ -600,10 +1083,10 @@
             &lt;type&gt;fifo&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
-            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
             &lt;location&gt;slave_port&lt;/location&gt;
             &lt;name&gt;w&lt;/name&gt;
-            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
             &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
@@ -613,10 +1096,10 @@
             &lt;type&gt;fifo&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
-            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;impl&gt;time_closure&lt;/impl&gt;
             &lt;location&gt;slave_port&lt;/location&gt;
             &lt;name&gt;b&lt;/name&gt;
-            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+            &lt;type&gt;full&lt;/type&gt;
         &lt;/reg&gt;
         &lt;reg&gt;
             &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
@@ -631,26 +1114,27 @@
         &lt;trustzone&gt;nsec&lt;/trustzone&gt;
         &lt;vn_external&gt;none&lt;/vn_external&gt;
         &lt;vn_external_bridge&gt;none&lt;/vn_external_bridge&gt;
-        &lt;x&gt;0&lt;/x&gt;
-        &lt;y&gt;40&lt;/y&gt;
-        &lt;master_if_port_name&gt;AXI_TLX_OUT_m&lt;/master_if_port_name&gt;
-        &lt;slave_if_port_name&gt;AXI_TLX_OUT_s&lt;/slave_if_port_name&gt;
+        &lt;x&gt;890&lt;/x&gt;
+        &lt;y&gt;160&lt;/y&gt;
+        &lt;master_if_port_name&gt;AXI_SRAM_3_m&lt;/master_if_port_name&gt;
+        &lt;slave_if_port_name&gt;AXI_SRAM_3_s&lt;/slave_if_port_name&gt;
     &lt;/amib&gt;
     &lt;amib&gt;
         &lt;apb_config&gt;false&lt;/apb_config&gt;
         &lt;apb_port&gt;
-            &lt;clock_domain&gt;clk0&lt;/clock_domain&gt;
+            &lt;clock_domain&gt;ref&lt;/clock_domain&gt;
             &lt;name&gt;APB_PVT&lt;/name&gt;
             &lt;trustzone&gt;nsec&lt;/trustzone&gt;
-            &lt;x&gt;0&lt;/x&gt;
-            &lt;y&gt;0&lt;/y&gt;
+            &lt;x&gt;902&lt;/x&gt;
+            &lt;y&gt;61&lt;/y&gt;
         &lt;/apb_port&gt;
-        &lt;apb_slave_no&gt;63&lt;/apb_slave_no&gt;
+        &lt;apb_slave_no&gt;60&lt;/apb_slave_no&gt;
         &lt;clock_boundary&gt;async&lt;/clock_boundary&gt;
         &lt;clock_domain_name_master_if&gt;ref&lt;/clock_domain_name_master_if&gt;
         &lt;clock_domain_name_slave_if&gt;clk0&lt;/clock_domain_name_slave_if&gt;
         &lt;compress_id def=&quot;true&quot;&gt;false&lt;/compress_id&gt;
         &lt;dest_type&gt;peripheral&lt;/dest_type&gt;
+        &lt;expanded&gt;true&lt;/expanded&gt;
         &lt;master_if_addr_width&gt;32&lt;/master_if_addr_width&gt;
         &lt;master_if_data_width&gt;32&lt;/master_if_data_width&gt;
         &lt;multi_ported&gt;false&lt;/multi_ported&gt;
@@ -734,47 +1218,65 @@
         &lt;trustzone&gt;nsec&lt;/trustzone&gt;
         &lt;vn_external def=&quot;true&quot;&gt;none&lt;/vn_external&gt;
         &lt;vn_external_bridge def=&quot;true&quot;&gt;none&lt;/vn_external_bridge&gt;
-        &lt;x&gt;0&lt;/x&gt;
-        &lt;y&gt;60&lt;/y&gt;
+        &lt;x&gt;890&lt;/x&gt;
+        &lt;y&gt;61&lt;/y&gt;
         &lt;master_if_port_name&gt;APB_PVT&lt;/master_if_port_name&gt;
         &lt;slave_if_port_name&gt;apb_group0_s&lt;/slave_if_port_name&gt;
     &lt;/amib&gt;
     &lt;inter&gt;
         &lt;clock_domain&gt;clk0&lt;/clock_domain&gt;
         &lt;data_width&gt;32&lt;/data_width&gt;
-        &lt;expanded&gt;false&lt;/expanded&gt;
-        &lt;height&gt;60&lt;/height&gt;
+        &lt;expanded&gt;true&lt;/expanded&gt;
+        &lt;height&gt;320&lt;/height&gt;
         &lt;impl&gt;mlayer&lt;/impl&gt;
         &lt;master_if&gt;
             &lt;name&gt;axi_m_0&lt;/name&gt;
             &lt;post_arb_reg&gt;absent&lt;/post_arb_reg&gt;
-            &lt;x&gt;0&lt;/x&gt;
-            &lt;y&gt;63&lt;/y&gt;
+            &lt;x&gt;547&lt;/x&gt;
+            &lt;y&gt;116&lt;/y&gt;
         &lt;/master_if&gt;
         &lt;master_if&gt;
             &lt;name&gt;axi_m_1&lt;/name&gt;
             &lt;post_arb_reg&gt;absent&lt;/post_arb_reg&gt;
-            &lt;x&gt;0&lt;/x&gt;
-            &lt;y&gt;83&lt;/y&gt;
+            &lt;x&gt;547&lt;/x&gt;
+            &lt;y&gt;61&lt;/y&gt;
         &lt;/master_if&gt;
         &lt;master_if&gt;
             &lt;name&gt;axi_m_2&lt;/name&gt;
             &lt;post_arb_reg&gt;absent&lt;/post_arb_reg&gt;
-            &lt;x&gt;0&lt;/x&gt;
-            &lt;y&gt;103&lt;/y&gt;
+            &lt;x&gt;547&lt;/x&gt;
+            &lt;y&gt;162&lt;/y&gt;
         &lt;/master_if&gt;
         &lt;master_if&gt;
             &lt;name&gt;axi_m_3&lt;/name&gt;
             &lt;post_arb_reg&gt;absent&lt;/post_arb_reg&gt;
-            &lt;x&gt;0&lt;/x&gt;
-            &lt;y&gt;123&lt;/y&gt;
+            &lt;x&gt;547&lt;/x&gt;
+            &lt;y&gt;208&lt;/y&gt;
+        &lt;/master_if&gt;
+        &lt;master_if&gt;
+            &lt;name&gt;axi_m_4&lt;/name&gt;
+            &lt;post_arb_reg&gt;absent&lt;/post_arb_reg&gt;
+            &lt;x&gt;547&lt;/x&gt;
+            &lt;y&gt;254&lt;/y&gt;
+        &lt;/master_if&gt;
+        &lt;master_if&gt;
+            &lt;name&gt;axi_m_5&lt;/name&gt;
+            &lt;post_arb_reg&gt;absent&lt;/post_arb_reg&gt;
+            &lt;x&gt;547&lt;/x&gt;
+            &lt;y&gt;300&lt;/y&gt;
+        &lt;/master_if&gt;
+        &lt;master_if&gt;
+            &lt;name&gt;axi_m_6&lt;/name&gt;
+            &lt;post_arb_reg&gt;absent&lt;/post_arb_reg&gt;
+            &lt;x&gt;547&lt;/x&gt;
+            &lt;y&gt;346&lt;/y&gt;
         &lt;/master_if&gt;
         &lt;name&gt;bm0&lt;/name&gt;
         &lt;protocol&gt;axi4&lt;/protocol&gt;
         &lt;slave_if&gt;
             &lt;name&gt;axi_s_0&lt;/name&gt;
-            &lt;x&gt;0&lt;/x&gt;
-            &lt;y&gt;63&lt;/y&gt;
+            &lt;x&gt;454&lt;/x&gt;
+            &lt;y&gt;61&lt;/y&gt;
         &lt;/slave_if&gt;
         &lt;sparse&gt;
             &lt;cds&gt;singleslave&lt;/cds&gt;
@@ -892,25 +1394,109 @@
                     &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
                 &lt;/reg&gt;
             &lt;/master_if_port&gt;
+            &lt;master_if_port&gt;
+                &lt;name&gt;axi_m_4&lt;/name&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;aw&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;ar&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;r&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;w&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;b&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+            &lt;/master_if_port&gt;
+            &lt;master_if_port&gt;
+                &lt;name&gt;axi_m_5&lt;/name&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;aw&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;ar&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;r&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;w&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;b&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+            &lt;/master_if_port&gt;
+            &lt;master_if_port&gt;
+                &lt;name&gt;axi_m_6&lt;/name&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;aw&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;ar&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;r&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;w&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;b&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+            &lt;/master_if_port&gt;
         &lt;/sparse&gt;
         &lt;type&gt;busmatrix&lt;/type&gt;
-        &lt;width&gt;0&lt;/width&gt;
+        &lt;width&gt;94&lt;/width&gt;
         &lt;x&gt;500&lt;/x&gt;
-        &lt;y&gt;45&lt;/y&gt;
-        &lt;master_if_port_name&gt;axi_m_0,axi_m_1,axi_m_2,axi_m_3&lt;/master_if_port_name&gt;
+        &lt;y&gt;203&lt;/y&gt;
+        &lt;master_if_port_name&gt;axi_m_0,axi_m_1,axi_m_2,axi_m_3,axi_m_4,axi_m_5,axi_m_6&lt;/master_if_port_name&gt;
         &lt;slave_if_port_name&gt;axi_s_0&lt;/slave_if_port_name&gt;
     &lt;/inter&gt;
     &lt;inter&gt;
         &lt;name&gt;ds_1&lt;/name&gt;
         &lt;slave_if&gt;
             &lt;name&gt;axi_s_0&lt;/name&gt;
-            &lt;x&gt;0&lt;/x&gt;
-            &lt;y&gt;0&lt;/y&gt;
+            &lt;x&gt;563&lt;/x&gt;
+            &lt;y&gt;356&lt;/y&gt;
         &lt;/slave_if&gt;
         &lt;type&gt;default_slave&lt;/type&gt;
-        &lt;x&gt;500&lt;/x&gt;
-        &lt;y&gt;500&lt;/y&gt;
-        &lt;master_if_port_name /&gt;
+        &lt;x&gt;577&lt;/x&gt;
+        &lt;y&gt;356&lt;/y&gt;
+        &lt;master_if_port_name&gt;&lt;/master_if_port_name&gt;
         &lt;slave_if_port_name&gt;axi_s_0&lt;/slave_if_port_name&gt;
     &lt;/inter&gt;
     &lt;connect&gt;
@@ -934,15 +1520,15 @@
         &lt;awuser&gt;false&lt;/awuser&gt;
         &lt;buser&gt;false&lt;/buser&gt;
         &lt;dest&gt;external&lt;/dest&gt;
-        &lt;dest_port&gt;AXI_SRAM&lt;/dest_port&gt;
+        &lt;dest_port&gt;AXI_SRAM_0&lt;/dest_port&gt;
         &lt;lock&gt;false&lt;/lock&gt;
         &lt;out_reads&gt;8&lt;/out_reads&gt;
         &lt;out_trans&gt;8&lt;/out_trans&gt;
         &lt;out_writes&gt;8&lt;/out_writes&gt;
         &lt;protocol&gt;axi4&lt;/protocol&gt;
         &lt;ruser&gt;false&lt;/ruser&gt;
-        &lt;src&gt;AXI_SRAM&lt;/src&gt;
-        &lt;src_port&gt;AXI_SRAM_m&lt;/src_port&gt;
+        &lt;src&gt;AXI_SRAM_0&lt;/src&gt;
+        &lt;src_port&gt;AXI_SRAM_0_m&lt;/src_port&gt;
         &lt;wuser&gt;false&lt;/wuser&gt;
     &lt;/connect&gt;
     &lt;connect&gt;
@@ -961,6 +1547,54 @@
         &lt;src_port&gt;AXI_TLX_OUT_m&lt;/src_port&gt;
         &lt;wuser&gt;false&lt;/wuser&gt;
     &lt;/connect&gt;
+    &lt;connect&gt;
+        &lt;aruser&gt;false&lt;/aruser&gt;
+        &lt;awuser&gt;false&lt;/awuser&gt;
+        &lt;buser&gt;false&lt;/buser&gt;
+        &lt;dest&gt;external&lt;/dest&gt;
+        &lt;dest_port&gt;AXI_SRAM_1&lt;/dest_port&gt;
+        &lt;lock&gt;false&lt;/lock&gt;
+        &lt;out_reads&gt;8&lt;/out_reads&gt;
+        &lt;out_trans&gt;8&lt;/out_trans&gt;
+        &lt;out_writes&gt;8&lt;/out_writes&gt;
+        &lt;protocol&gt;axi4&lt;/protocol&gt;
+        &lt;ruser&gt;false&lt;/ruser&gt;
+        &lt;src&gt;AXI_SRAM_1&lt;/src&gt;
+        &lt;src_port&gt;AXI_SRAM_1_m&lt;/src_port&gt;
+        &lt;wuser&gt;false&lt;/wuser&gt;
+    &lt;/connect&gt;
+    &lt;connect&gt;
+        &lt;aruser&gt;false&lt;/aruser&gt;
+        &lt;awuser&gt;false&lt;/awuser&gt;
+        &lt;buser&gt;false&lt;/buser&gt;
+        &lt;dest&gt;external&lt;/dest&gt;
+        &lt;dest_port&gt;AXI_SRAM_2&lt;/dest_port&gt;
+        &lt;lock&gt;false&lt;/lock&gt;
+        &lt;out_reads&gt;8&lt;/out_reads&gt;
+        &lt;out_trans&gt;8&lt;/out_trans&gt;
+        &lt;out_writes&gt;8&lt;/out_writes&gt;
+        &lt;protocol&gt;axi4&lt;/protocol&gt;
+        &lt;ruser&gt;false&lt;/ruser&gt;
+        &lt;src&gt;AXI_SRAM_2&lt;/src&gt;
+        &lt;src_port&gt;AXI_SRAM_2_m&lt;/src_port&gt;
+        &lt;wuser&gt;false&lt;/wuser&gt;
+    &lt;/connect&gt;
+    &lt;connect&gt;
+        &lt;aruser&gt;false&lt;/aruser&gt;
+        &lt;awuser&gt;false&lt;/awuser&gt;
+        &lt;buser&gt;false&lt;/buser&gt;
+        &lt;dest&gt;external&lt;/dest&gt;
+        &lt;dest_port&gt;AXI_SRAM_3&lt;/dest_port&gt;
+        &lt;lock&gt;false&lt;/lock&gt;
+        &lt;out_reads&gt;8&lt;/out_reads&gt;
+        &lt;out_trans&gt;8&lt;/out_trans&gt;
+        &lt;out_writes&gt;8&lt;/out_writes&gt;
+        &lt;protocol&gt;axi4&lt;/protocol&gt;
+        &lt;ruser&gt;false&lt;/ruser&gt;
+        &lt;src&gt;AXI_SRAM_3&lt;/src&gt;
+        &lt;src_port&gt;AXI_SRAM_3_m&lt;/src_port&gt;
+        &lt;wuser&gt;false&lt;/wuser&gt;
+    &lt;/connect&gt;
     &lt;connect&gt;
         &lt;aruser&gt;false&lt;/aruser&gt;
         &lt;awuser&gt;false&lt;/awuser&gt;
@@ -1011,8 +1645,8 @@
         &lt;src_port&gt;axi_m_1&lt;/src_port&gt;
     &lt;/connect&gt;
     &lt;connect&gt;
-        &lt;dest&gt;AXI_SRAM&lt;/dest&gt;
-        &lt;dest_port&gt;AXI_SRAM_s&lt;/dest_port&gt;
+        &lt;dest&gt;AXI_SRAM_3&lt;/dest&gt;
+        &lt;dest_port&gt;AXI_SRAM_3_s&lt;/dest_port&gt;
         &lt;lock&gt;false&lt;/lock&gt;
         &lt;out_reads&gt;8&lt;/out_reads&gt;
         &lt;out_trans&gt;8&lt;/out_trans&gt;
@@ -1021,6 +1655,39 @@
         &lt;src&gt;bm0&lt;/src&gt;
         &lt;src_port&gt;axi_m_2&lt;/src_port&gt;
     &lt;/connect&gt;
+    &lt;connect&gt;
+        &lt;dest&gt;AXI_SRAM_1&lt;/dest&gt;
+        &lt;dest_port&gt;AXI_SRAM_1_s&lt;/dest_port&gt;
+        &lt;lock&gt;false&lt;/lock&gt;
+        &lt;out_reads&gt;8&lt;/out_reads&gt;
+        &lt;out_trans&gt;8&lt;/out_trans&gt;
+        &lt;out_writes&gt;8&lt;/out_writes&gt;
+        &lt;protocol&gt;axi4&lt;/protocol&gt;
+        &lt;src&gt;bm0&lt;/src&gt;
+        &lt;src_port&gt;axi_m_3&lt;/src_port&gt;
+    &lt;/connect&gt;
+    &lt;connect&gt;
+        &lt;dest&gt;AXI_SRAM_2&lt;/dest&gt;
+        &lt;dest_port&gt;AXI_SRAM_2_s&lt;/dest_port&gt;
+        &lt;lock&gt;false&lt;/lock&gt;
+        &lt;out_reads&gt;8&lt;/out_reads&gt;
+        &lt;out_trans&gt;8&lt;/out_trans&gt;
+        &lt;out_writes&gt;8&lt;/out_writes&gt;
+        &lt;protocol&gt;axi4&lt;/protocol&gt;
+        &lt;src&gt;bm0&lt;/src&gt;
+        &lt;src_port&gt;axi_m_4&lt;/src_port&gt;
+    &lt;/connect&gt;
+    &lt;connect&gt;
+        &lt;dest&gt;AXI_SRAM_0&lt;/dest&gt;
+        &lt;dest_port&gt;AXI_SRAM_0_s&lt;/dest_port&gt;
+        &lt;lock&gt;false&lt;/lock&gt;
+        &lt;out_reads&gt;8&lt;/out_reads&gt;
+        &lt;out_trans&gt;8&lt;/out_trans&gt;
+        &lt;out_writes&gt;8&lt;/out_writes&gt;
+        &lt;protocol&gt;axi4&lt;/protocol&gt;
+        &lt;src&gt;bm0&lt;/src&gt;
+        &lt;src_port&gt;axi_m_5&lt;/src_port&gt;
+    &lt;/connect&gt;
     &lt;connect&gt;
         &lt;dest&gt;ds_1&lt;/dest&gt;
         &lt;dest_port&gt;axi_s_0&lt;/dest_port&gt;
@@ -1030,16 +1697,19 @@
         &lt;out_writes&gt;1&lt;/out_writes&gt;
         &lt;protocol&gt;axi4&lt;/protocol&gt;
         &lt;src&gt;bm0&lt;/src&gt;
-        &lt;src_port&gt;axi_m_3&lt;/src_port&gt;
+        &lt;src_port&gt;axi_m_6&lt;/src_port&gt;
     &lt;/connect&gt;
     &lt;architecture&gt;
         &lt;link&gt;
             &lt;slave_if&gt;
                 &lt;name&gt;AXI_CHIPLET_IN&lt;/name&gt;
-                &lt;master_if&gt;AXI_SRAM&lt;/master_if&gt;
-                &lt;master_if&gt;AXI_TLX_OUT&lt;/master_if&gt;
+                &lt;master_if&gt;AXI_SRAM_1&lt;/master_if&gt;
+                &lt;master_if&gt;AXI_SRAM_0&lt;/master_if&gt;
                 &lt;master_if&gt;APB_PVT&lt;parent&gt;apb_group0&lt;/parent&gt;
                 &lt;/master_if&gt;
+                &lt;master_if&gt;AXI_TLX_OUT&lt;/master_if&gt;
+                &lt;master_if&gt;AXI_SRAM_2&lt;/master_if&gt;
+                &lt;master_if&gt;AXI_SRAM_3&lt;/master_if&gt;
                 &lt;master_if&gt;apb_group0&lt;/master_if&gt;
             &lt;/slave_if&gt;
         &lt;/link&gt;
diff --git a/socrates/nic400_tlx_sram_chiplet/nic400_tlx_sram_chiplet.xml b/socrates/nic400_tlx_sram_chiplet/nic400_tlx_sram_chiplet.xml
index 6c1054168258368d0353dad6554bcd6b9539747b..13366f41af4ae4a72c51a82a6a794e8dead3c975 100644
--- a/socrates/nic400_tlx_sram_chiplet/nic400_tlx_sram_chiplet.xml
+++ b/socrates/nic400_tlx_sram_chiplet/nic400_tlx_sram_chiplet.xml
@@ -34,10 +34,10 @@
       <MASTER_CLOCK>clk_m</MASTER_CLOCK>
       <FW_USER_DEFINED_WIDTH>16</FW_USER_DEFINED_WIDTH>
       <FW_PACKING_STRATEGY>user_def_bytes</FW_PACKING_STRATEGY>
-      <FW_TLX_TIMING_CLOSURE>false</FW_TLX_TIMING_CLOSURE>
+      <FW_TLX_TIMING_CLOSURE>true</FW_TLX_TIMING_CLOSURE>
       <REV_PACKING_STRATEGY>widest_div_4</REV_PACKING_STRATEGY>
       <REV_USER_DEFINED_WIDTH>8</REV_USER_DEFINED_WIDTH>
-      <REV_TLX_TIMING_CLOSURE>false</REV_TLX_TIMING_CLOSURE>
+      <REV_TLX_TIMING_CLOSURE>true</REV_TLX_TIMING_CLOSURE>
       <AWSlavePortRegister>present</AWSlavePortRegister>
       <AWSlavePortRegisterType>rev</AWSlavePortRegisterType>
       <AWMasterPortRegister>absent</AWMasterPortRegister>
@@ -87,8 +87,8 @@
       <DBoundaryBuffering>absent</DBoundaryBuffering>
       <DBoundaryBufferingDepth>2</DBoundaryBufferingDepth>
       <DCreditBuffers>6</DCreditBuffers>
-      <FwdChannelPLRegisterSlices>0</FwdChannelPLRegisterSlices>
-      <RevChannelPLRegisterSlices>0</RevChannelPLRegisterSlices>
+      <FwdChannelPLRegisterSlices>4</FwdChannelPLRegisterSlices>
+      <RevChannelPLRegisterSlices>4</RevChannelPLRegisterSlices>
       <POWER_DOMAIN_CROSSING>false</POWER_DOMAIN_CROSSING>
       <HierarchicalClockGating>false</HierarchicalClockGating>
       <ClockControllerImplementation>asynchronous</ClockControllerImplementation>
@@ -239,13 +239,13 @@
          &lt;fwd_tlx&gt;
             &lt;pl_clock_ratio&gt;1&lt;/pl_clock_ratio&gt;
             &lt;dll_link_user_def_width&gt;16&lt;/dll_link_user_def_width&gt;
-            &lt;pl_reg_stages&gt;0&lt;/pl_reg_stages&gt;
+            &lt;pl_reg_stages&gt;4&lt;/pl_reg_stages&gt;
             &lt;dll_link_width_option&gt;user_def_bytes&lt;/dll_link_width_option&gt;
          &lt;/fwd_tlx&gt;
          &lt;rev_tlx&gt;
             &lt;pl_clock_ratio&gt;1&lt;/pl_clock_ratio&gt;
             &lt;dll_link_user_def_width&gt;8&lt;/dll_link_user_def_width&gt;
-            &lt;pl_reg_stages&gt;0&lt;/pl_reg_stages&gt;
+            &lt;pl_reg_stages&gt;4&lt;/pl_reg_stages&gt;
             &lt;dll_link_width_option&gt;widest_div_4&lt;/dll_link_width_option&gt;
          &lt;/rev_tlx&gt;
          &lt;tlx_enable&gt;true&lt;/tlx_enable&gt;
@@ -287,13 +287,13 @@
          &lt;/reg&gt;
          &lt;reg&gt;
             &lt;type&gt;fwd&lt;/type&gt;
-            &lt;impl&gt;absent&lt;/impl&gt;
+            &lt;impl&gt;present&lt;/impl&gt;
             &lt;name&gt;d&lt;/name&gt;
             &lt;location&gt;tlx_fwd&lt;/location&gt;
          &lt;/reg&gt;
          &lt;reg&gt;
             &lt;type&gt;fwd&lt;/type&gt;
-            &lt;impl&gt;absent&lt;/impl&gt;
+            &lt;impl&gt;present&lt;/impl&gt;
             &lt;name&gt;d&lt;/name&gt;
             &lt;location&gt;tlx_rev&lt;/location&gt;
          &lt;/reg&gt;
diff --git a/synopsys_28nm_slm_integration b/synopsys_28nm_slm_integration
index e88b3d4335b8416b5d78322f45e099ac9a12a1d0..9ba8cbc74e043ec6571d3ec491ce02de37264e2b 160000
--- a/synopsys_28nm_slm_integration
+++ b/synopsys_28nm_slm_integration
@@ -1 +1 @@
-Subproject commit e88b3d4335b8416b5d78322f45e099ac9a12a1d0
+Subproject commit 9ba8cbc74e043ec6571d3ec491ce02de37264e2b
diff --git a/verif/cocotb/makefile b/verif/cocotb/makefile
index 3a69115a41290fb292b02c6df5955e351995ff80..6238f03fbceeed09945ba409fb8383bd36482be6 100644
--- a/verif/cocotb/makefile
+++ b/verif/cocotb/makefile
@@ -31,9 +31,10 @@ DUT      = sram_chiplet_cocotb
 TOPLEVEL = sram_chiplet_cocotb
 MODULE   = sram_chiplet_tests
 
-VERILOG_SOURCES += ./sram_chiplet_cocotb.sv
+VERILOG_SOURCES += $(SOCLABS_SRAM_CHIPLET_DIR)/verif/cocotb/sram_chiplet_cocotb.sv
 EXTRA_ARGS += +define+BEHAVIOURAL_SIM
 EXTRA_ARGS += +define+INITIALIZE_MEMORY
+# EXTRA_ARGS += +define+ARM_UD_MODEL
 
 ifeq ($(SIM), icarus)
 	PLUSARGS += -fst
@@ -54,6 +55,8 @@ else ifeq ($(SIM), verilator)
 	endif
 else ifeq ($(SIM), questa)
 	COMPILE_ARGS += +acc
+else ifeq ($(SIM), vcs)
+	COMPILE_ARGS += -kdb
 endif
 include $(SOCLABS_SRAM_CHIPLET_DIR)/simulate/sim/cocotb/makefile.flist
 include $(shell cocotb-config --makefiles)/Makefile.sim
diff --git a/verif/cocotb/sram_chiplet_cocotb.sv b/verif/cocotb/sram_chiplet_cocotb.sv
index d21548a8a9592148843082e939060ac068c08c8d..374e0d26d892882c45a3c3bdcbe25b8c0a32453a 100644
--- a/verif/cocotb/sram_chiplet_cocotb.sv
+++ b/verif/cocotb/sram_chiplet_cocotb.sv
@@ -3,8 +3,6 @@
 `include "tlx_interfaces.sv"
 
 module sram_chiplet_cocotb(
-    input  wire         clk_in,
-    input  wire         aresetn,
 
     input  wire [11:0]   cocotb_awid,
     input  wire [31:0]  cocotb_awaddr,
@@ -42,8 +40,34 @@ module sram_chiplet_cocotb(
     output wire         cocotb_rvalid,
     input  wire         cocotb_rready  
 );
-parameter N_ADDR_SEL_BITS=6;
-parameter N_CHIPLETS=8;
+
+
+wire         clk_in;
+wire         aresetn;
+
+reg clock_q;
+reg [32:0] shifter;
+
+initial begin 
+    clock_q <= 1'b0;
+    shifter <= 32'd0;
+    #40 clock_q <= 1'b1;
+end
+
+always @(clock_q)
+    #1 clock_q <= !clock_q;
+
+assign clk_in = clock_q;
+
+always @(posedge clock_q) begin 
+    if(!(&shifter))
+        shifter <= {shifter[30:0],1'b1};
+end
+
+assign aresetn = shifter[31];
+
+parameter N_ADDR_SEL_BITS=4;
+parameter N_CHIPLETS=2;
 
 wire DL_REV_CLK[N_CHIPLETS+1];
 wire DL_FWD_CLK[N_CHIPLETS+1];
@@ -54,7 +78,6 @@ TLX_AXI_stream #(.DATA_WIDTH(3))    TLX_flow_rev[N_CHIPLETS+1]();
 TLX_AXI_stream #(.DATA_WIDTH(2))    TLX_flow_fwd[N_CHIPLETS+1]();
 TLX_AXI_stream #(.DATA_WIDTH(16))   TLX_data_fwd[N_CHIPLETS+1]();
 
-
 wire [11:0]  AWID_AXI_CHIPLET_OUT;
 wire [31:0] AWADDR_AXI_CHIPLET_OUT;
 wire [7:0]  AWLEN_AXI_CHIPLET_OUT;
@@ -277,35 +300,57 @@ assign ref_clk[0] = clock_div[1];
 
 wire [N_CHIPLETS:0] PLL_LOCK;
 assign DL_FWD_CLK[0] = clk_in;
-
+initial begin 
+    $sdf_annotate("/home/dwn1c21/SoC-Labs/TAPEOUT/jan2025/sram_chiplet/imp/ASIC/SRAM_CHIPLET/sram_chiplet_gate.sdf", gen_chiplets[0].u_top_sram_chiplet);
+end
 genvar i;
 generate
     for(i=0; i<N_CHIPLETS;i=i+1) begin: gen_chiplets
-        top_sram_chiplet u_top_sram_chiplet(
-            .REF_CLK(ref_clk[0]),
-
-            .aRESETn(aresetn),
-            .DL_FWD_RESETn(aresetn),
-            .OUT_CLK(ref_clk[i+1]),
-            .PLL_LOCK_o(PLL_LOCK[i]),
-            .PLL_LOCK_i(PLL_LOCK[i+1]),
-            .IN_FWD_CLK(DL_FWD_CLK[i]),
-            .IN_REV_CLK(DL_REV_CLK[i]),
-            .OUT_FWD_CLK(DL_FWD_CLK[i+1]),
-            .OUT_REV_CLK(DL_REV_CLK[i+1]),
-            // Thin Links In
-            .TLX_IN_data_rev(TLX_data_rev[i]),
-            .TLX_IN_flow_rev(TLX_flow_rev[i]),
-            .TLX_IN_flow_fwd(TLX_flow_fwd[i]),
-            .TLX_IN_data_fwd(TLX_data_fwd[i]),
-            // Thin Links Out
-            .TLX_OUT_data_rev(TLX_data_rev[i+1]),
-            .TLX_OUT_flow_rev(TLX_flow_rev[i+1]),
-            .TLX_OUT_flow_fwd(TLX_flow_fwd[i+1]),
-            .TLX_OUT_data_fwd(TLX_data_fwd[i+1]),
+        SRAM_chiplet u_top_sram_chiplet(
+            .PAD_REF_CLK(ref_clk[0]),
+
+            .PAD_aRESETn(aresetn),
+            .PAD_DL_FWD_RESETn(aresetn),
+            .PAD_PLL_LOCK_o(PLL_LOCK[i]),
+            .PAD_PLL_LOCK_i(PLL_LOCK[i+1]),
+            .PAD_IN_FWD_CLK(DL_FWD_CLK[i]),
+            .PAD_IN_REV_CLK(DL_REV_CLK[i]),
+            .PAD_OUT_FWD_CLK(DL_FWD_CLK[i+1]),
+            .PAD_OUT_REV_CLK(DL_REV_CLK[i+1]),
+
+            .PAD_TLX_IN_data_rev_0_tdata    (TLX_data_rev[i].tdata),
+            .PAD_TLX_IN_data_rev_0_tvalid   (TLX_data_rev[i].tvalid),
+            .PAD_TLX_IN_data_rev_0_tready   (TLX_data_rev[i].tready),
+
+            .PAD_TLX_IN_flow_rev_0_tdata    (TLX_flow_rev[i].tdata),
+            .PAD_TLX_IN_flow_rev_0_tvalid   (TLX_flow_rev[i].tvalid),
+            .PAD_TLX_IN_flow_rev_0_tready   (TLX_flow_rev[i].tready),
+
+            .PAD_TLX_IN_flow_fwd_0_tdata    (TLX_flow_fwd[i].tdata),
+            .PAD_TLX_IN_flow_fwd_0_tvalid   (TLX_flow_fwd[i].tvalid),
+            .PAD_TLX_IN_flow_fwd_0_tready   (TLX_flow_fwd[i].tready),
+
+            .PAD_TLX_IN_data_fwd_0_tdata    (TLX_data_fwd[i].tdata),
+            .PAD_TLX_IN_data_fwd_0_tvalid   (TLX_data_fwd[i].tvalid),
+            .PAD_TLX_IN_data_fwd_0_tready   (TLX_data_fwd[i].tready),
+
+            .PAD_TLX_data_rev_1_tdata   (TLX_data_rev[i+1].tdata),
+            .PAD_TLX_data_rev_1_tvalid  (TLX_data_rev[i+1].tvalid),
+            .PAD_TLX_data_rev_1_tready  (TLX_data_rev[i+1].tready),
+
+            .PAD_TLX_flow_rev_1_tdata   (TLX_flow_rev[i+1].tdata),
+            .PAD_TLX_flow_rev_1_tvalid  (TLX_flow_rev[i+1].tvalid),
+            .PAD_TLX_flow_rev_1_tready  (TLX_flow_rev[i+1].tready),
+
+            .PAD_TLX_flow_fwd_1_tdata   (TLX_flow_fwd[i+1].tdata),
+            .PAD_TLX_flow_fwd_1_tvalid  (TLX_flow_fwd[i+1].tvalid),
+            .PAD_TLX_flow_fwd_1_tready  (TLX_flow_fwd[i+1].tready),
 
+            .PAD_TLX_data_fwd_1_tdata   (TLX_data_fwd[i+1].tdata),
+            .PAD_TLX_data_fwd_1_tvalid  (TLX_data_fwd[i+1].tvalid),
+            .PAD_TLX_data_fwd_1_tready  (TLX_data_fwd[i+1].tready),
             // Address select
-            .addr_sel(i[N_ADDR_SEL_BITS-1:0])  
+            .PAD_addr_sel(i[N_ADDR_SEL_BITS-1:0])  
  
         );
     end
diff --git a/verif/cocotb/sram_chiplet_tests.py b/verif/cocotb/sram_chiplet_tests.py
index e58ea83b3ed21edb035cbf139aed2695a9339a46..621fd0fc85d85dd0261248566d01c1f2476610ea 100644
--- a/verif/cocotb/sram_chiplet_tests.py
+++ b/verif/cocotb/sram_chiplet_tests.py
@@ -33,7 +33,7 @@ CHIPLET_0_PD_BASE = CHIPLET_0_APB_BASE + 6*0x1000
 CHIPLET_0_VM_BASE = CHIPLET_0_APB_BASE + 7*0x1000 
 CHIPLET_0_PLL_BASE = CHIPLET_0_APB_BASE + 8*0x1000
 
-CHIPLET_0_SRAM_MAX_ADDR = 0x100000
+CHIPLET_0_SRAM_MAX_ADDR = 0x200000
 
 class TB:
     def __init__(self,dut):
@@ -42,7 +42,6 @@ class TB:
         self.log = logging.getLogger("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.start_soon(Clock(dut.clk_in, 1, units="ns").start())
         self.axi_master = AxiMaster(AxiBus.from_prefix(dut,"cocotb"), dut.clk_in, dut.aresetn, reset_active_level=False)
     def set_idle_generator(self, generator=None):
         if generator:
@@ -59,10 +58,7 @@ class TB:
             self.axi_ram.write_if.w_channel.set_pause_generator(generator())
             self.axi_ram.read_if.ar_channel.set_pause_generator(generator())
     async def cycle_reset(self):
-        self.dut.aresetn.setimmediatevalue(0)
-        await Timer(time=4,units='us')
-        self.dut.aresetn.value = 1
-        await RisingEdge(self.dut.clk_in)
+        await RisingEdge(self.dut.aresetn)
     async def delay(self, cycle):
         for i in range(cycle):
             await RisingEdge(self.dut.clk_in)
@@ -99,7 +95,34 @@ async def wait_for_PLL(dut, tb):
     await RisingEdge(dut.PLL_LOCK[0])
     await ClockCycles(dut.clk_in,20)
 
- 
+async def PLL_enable(dut, tb):
+    tb.log.info("Set pwron and gear shift reg")
+    tmp = 1<<8
+    tmp += 1<<7
+    await tb.axi_master.write(CHIPLET_0_PLL_BASE, tmp.to_bytes(4,'little'))
+
+    tb.log.info("Wait before releasing reset...")
+    await ClockCycles(dut.clk_in, 4000)
+    tb.log.info("...release reset")
+    tmp += 1<<9
+    await tb.axi_master.write(CHIPLET_0_PLL_BASE, tmp.to_bytes(4,'little'))
+
+    tb.log.info("Wait to enable PLL")
+    await ClockCycles(dut.clk_in,4000)
+    tb.log.info("... enabling PLL")
+    tmp += 1<<4
+    tmp += 1<<5
+    await tb.axi_master.write(CHIPLET_0_PLL_BASE, tmp.to_bytes(4,'little'))
+
+    tb.log.info("Wait for PLL lock...")
+    PLL_LOCK = await tb.axi_master.read(CHIPLET_0_PLL_BASE+24,1)
+
+    tb.log.info(PLL_LOCK.data)
+    while (PLL_LOCK.data == b'\x00'):
+        await Timer(time=100, units='ns')
+        PLL_LOCK = await tb.axi_master.read(CHIPLET_0_PLL_BASE+24,1)
+
+
 @cocotb.test()
 async def PLL_TEST(dut,idle_inserter=None, backpressure_inserter=None, size=None):
     tb = TB(dut) 
@@ -107,27 +130,13 @@ async def PLL_TEST(dut,idle_inserter=None, backpressure_inserter=None, size=None
     await tb.cycle_reset()
     tb.set_idle_generator(idle_inserter)
     tb.set_backpressure_generator(backpressure_inserter)
-    
-    #await wait_for_PLL(dut,tb)
-    
+        
     # Test ID of PLL Intergration layer
     PLL_ID = await tb.axi_master.read(CHIPLET_0_PLL_BASE+20,4)
     assert PLL_ID.data == b'LPNS'
     
-    # Wait for PLL Lock 
-    PLL_LOCK = await tb.axi_master.read(CHIPLET_0_PLL_BASE+24,1)
-    tb.log.info(PLL_LOCK.data)
-    while (PLL_LOCK.data == b'\x00'):
-        await Timer(time=100, units='ns')
-        PLL_LOCK = await tb.axi_master.read(CHIPLET_0_PLL_BASE+24,1)
-    # Read write to register
-    PLL_0 = await tb.axi_master.read(CHIPLET_0_PLL_BASE,4)
-    tb.log.info(PLL_0.data)
-    await tb.axi_master.write(CHIPLET_0_PLL_BASE, bytearray(b'\x31\x00\x00\x00'), 4)
-    # Read write to PLL internal register
-    PLL_800 = await tb.axi_master.read(CHIPLET_0_PLL_BASE + 0x800, 4)
-    await tb.axi_master.write(CHIPLET_0_PLL_BASE + 0x800, bytearray(b'\x31\x00\x00\x00'), 4)
-    
+    await PLL_enable(dut, tb)
+        
 
 @cocotb.test()
 async def PD_TEST(dut,idle_insterter=None, backpressure_inserter=None, size=None):