full chip sta clean-up: cpu,spi,rtc clock generation moved from glbl_cfg to wb_host
diff --git a/openlane/glbl_cfg/pin_order.cfg b/openlane/glbl_cfg/pin_order.cfg
index 022eda4..770b1f7 100644
--- a/openlane/glbl_cfg/pin_order.cfg
+++ b/openlane/glbl_cfg/pin_order.cfg
@@ -1,54 +1,16 @@
 #BUS_SORT
 
 #MANUAL_PLACE
-#E
-cpu_clk                0000 0
-rtc_clk                
 
 #N
 mclk                   0000 0
 reset_n                
-user_clock1            
-user_clock2            
 user_irq\[2\]          
 user_irq\[1\]          
 user_irq\[0\]          
-device_idcode\[31\]    
-device_idcode\[30\]    
-device_idcode\[29\]    
-device_idcode\[28\]    
-device_idcode\[27\]    
-device_idcode\[26\]    
-device_idcode\[25\]    
-device_idcode\[24\]    
-device_idcode\[23\]    
-device_idcode\[22\]    
-device_idcode\[21\]    
-device_idcode\[20\]    
-device_idcode\[19\]    
-device_idcode\[18\]    
-device_idcode\[17\]    
-device_idcode\[16\]    
-device_idcode\[15\]    
-device_idcode\[14\]    
-device_idcode\[13\]    
-device_idcode\[12\]    
-device_idcode\[11\]    
-device_idcode\[10\]    
-device_idcode\[9\]     
-device_idcode\[8\]     
-device_idcode\[7\]     
-device_idcode\[6\]     
-device_idcode\[5\]     
-device_idcode\[4\]     
-device_idcode\[3\]     
-device_idcode\[2\]     
-device_idcode\[1\]     
-device_idcode\[0\]     
 
 #W
-sdram_clk              0000 0
-sdr_init_done          
+sdr_init_done          0000 0
 cfg_sdr_width\[1]      
 cfg_sdr_width\[0]      
 cfg_colbits\[1\]       
diff --git a/openlane/wb_host/config.tcl b/openlane/wb_host/config.tcl
index 6c17252..0c6de99 100755
--- a/openlane/wb_host/config.tcl
+++ b/openlane/wb_host/config.tcl
@@ -42,6 +42,7 @@
      $script_dir/../../verilog/rtl/lib/clk_ctl.v          \
      $script_dir/../../verilog/rtl/lib/registers.v"
 
+set ::env(SYNTH_READ_BLACKBOX_LIB) 1
 set ::env(SDC_FILE) "$script_dir/base.sdc"
 set ::env(BASE_SDC_FILE) "$script_dir/base.sdc"
 
@@ -57,7 +58,7 @@
 set ::env(FP_PIN_ORDER_CFG) $::env(DESIGN_DIR)/pin_order.cfg
 
 set ::env(FP_SIZING) absolute
-set ::env(DIE_AREA) "0 0 400 200"
+set ::env(DIE_AREA) "0 0 500 200"
 
 
 # If you're going to use multiple power domains, then keep this disabled.
diff --git a/openlane/wb_host/pin_order.cfg b/openlane/wb_host/pin_order.cfg
index db8f388..d0b09f1 100644
--- a/openlane/wb_host/pin_order.cfg
+++ b/openlane/wb_host/pin_order.cfg
@@ -5,12 +5,36 @@
 #E
 wbs_clk_i     0000 0 2   
 wbs_clk_out   
+cpu_clk
+rtc_clk
+wbd_int_rst_n
+cpu_rst_n
+spi_rst_n
+sdram_rst_n
+cfg_clk_ctrl1\[27\]
+cfg_clk_ctrl1\[26\]
+cfg_clk_ctrl1\[25\]
+cfg_clk_ctrl1\[24\]
+cfg_clk_ctrl1\[11\]
+cfg_clk_ctrl1\[10\]
+cfg_clk_ctrl1\[9\]
+cfg_clk_ctrl1\[8\]
+
+
+#W
+cfg_clk_ctrl1\[15\]
+cfg_clk_ctrl1\[14\]
+cfg_clk_ctrl1\[13\]
+cfg_clk_ctrl1\[12\]
+sdram_clk
 
 
 
 
 #S
-wbm_clk_i       0000 0  2
+user_clock2     0000 0  2
+user_clock1  
+wbm_clk_i       
 wbm_rst_i        
 wbm_ack_o       
 wbm_cyc_i        
@@ -226,22 +250,10 @@
 wbs_err_i        
 wbs_cyc_o      
 
-cfg_glb_ctrl\[7\]
-cfg_glb_ctrl\[6\]
-cfg_glb_ctrl\[5\]
-cfg_glb_ctrl\[4\]
-cfg_glb_ctrl\[3\]
-cfg_glb_ctrl\[2\]
-cfg_glb_ctrl\[1\]
-cfg_glb_ctrl\[0\]
 cfg_clk_ctrl1\[31\]
 cfg_clk_ctrl1\[30\]
 cfg_clk_ctrl1\[29\]
 cfg_clk_ctrl1\[28\]
-cfg_clk_ctrl1\[27\]
-cfg_clk_ctrl1\[26\]
-cfg_clk_ctrl1\[25\]
-cfg_clk_ctrl1\[24\]
 cfg_clk_ctrl1\[23\]
 cfg_clk_ctrl1\[22\]
 cfg_clk_ctrl1\[21\]
@@ -250,14 +262,6 @@
 cfg_clk_ctrl1\[18\]
 cfg_clk_ctrl1\[17\]
 cfg_clk_ctrl1\[16\]
-cfg_clk_ctrl1\[15\]
-cfg_clk_ctrl1\[14\]
-cfg_clk_ctrl1\[13\]
-cfg_clk_ctrl1\[12\]
-cfg_clk_ctrl1\[11\]
-cfg_clk_ctrl1\[10\]
-cfg_clk_ctrl1\[9\]
-cfg_clk_ctrl1\[8\]
 cfg_clk_ctrl1\[7\]
 cfg_clk_ctrl1\[6\]
 cfg_clk_ctrl1\[5\]
diff --git a/signoff/glbl_cfg/final_summary_report.csv b/signoff/glbl_cfg/final_summary_report.csv
index 7678a6e..359db11 100644
--- a/signoff/glbl_cfg/final_summary_report.csv
+++ b/signoff/glbl_cfg/final_summary_report.csv
@@ -1,2 +1,2 @@
 ,design,design_name,config,flow_status,total_runtime,routed_runtime,(Cell/mm^2)/Core_Util,DIEAREA_mm^2,CellPer_mm^2,OpenDP_Util,Peak_Memory_Usage_MB,cell_count,tritonRoute_violations,Short_violations,MetSpc_violations,OffGrid_violations,MinHole_violations,Other_violations,Magic_violations,antenna_violations,lvs_total_errors,cvc_total_errors,klayout_violations,wire_length,vias,wns,pl_wns,optimized_wns,fastroute_wns,spef_wns,tns,pl_tns,optimized_tns,fastroute_tns,spef_tns,HPWL,routing_layer1_pct,routing_layer2_pct,routing_layer3_pct,routing_layer4_pct,routing_layer5_pct,routing_layer6_pct,wires_count,wire_bits,public_wires_count,public_wire_bits,memories_count,memory_bits,processes_count,cells_pre_abc,AND,DFF,NAND,NOR,OR,XOR,XNOR,MUX,inputs,outputs,level,EndCaps,TapCells,Diodes,Total_Physical_Cells,suggested_clock_frequency,suggested_clock_period,CLOCK_PERIOD,SYNTH_STRATEGY,SYNTH_MAX_FANOUT,FP_CORE_UTIL,FP_ASPECT_RATIO,FP_PDN_VPITCH,FP_PDN_HPITCH,PL_TARGET_DENSITY,GLB_RT_ADJUSTMENT,STD_CELL_LIBRARY,CELL_PAD,DIODE_INSERTION_STRATEGY
-0,/project/openlane/glbl_cfg,glbl_cfg,glbl_cfg,Flow_completed,0h5m17s,0h3m22s,47033.33333333334,0.12,23516.66666666667,41,563.02,2822,0,0,0,0,0,0,0,5,0,-1,0,155613,24467,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,112650425,0.0,31.24,31.63,0.44,-1,-1,2677,2873,477,673,0,0,0,2822,1,0,3,9,474,0,3,571,588,548,10,278,1410,0,1688,100.0,10.0,10,AREA 0,4,50,1,153.6,153.18,0.55,0,sky130_fd_sc_hd,4,4
+0,/project/openlane/glbl_cfg,glbl_cfg,glbl_cfg,Flow_completed,0h5m23s,0h3m25s,45883.33333333334,0.12,22941.66666666667,40,553.93,2753,0,0,0,0,0,0,0,4,0,-1,0,141562,23694,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,98863982,0.0,29.06,28.48,0.34,-1,-1,2637,2802,459,624,0,0,0,2753,1,0,3,0,471,0,0,562,577,533,10,278,1410,0,1688,100.0,10.0,10,AREA 0,4,50,1,153.6,153.18,0.55,0,sky130_fd_sc_hd,4,4
diff --git a/signoff/user_project_wrapper/final_summary_report.csv b/signoff/user_project_wrapper/final_summary_report.csv
index 7d44fb6..cd729d9 100644
--- a/signoff/user_project_wrapper/final_summary_report.csv
+++ b/signoff/user_project_wrapper/final_summary_report.csv
@@ -1,2 +1,2 @@
 ,design,design_name,config,flow_status,total_runtime,routed_runtime,(Cell/mm^2)/Core_Util,DIEAREA_mm^2,CellPer_mm^2,OpenDP_Util,Peak_Memory_Usage_MB,cell_count,tritonRoute_violations,Short_violations,MetSpc_violations,OffGrid_violations,MinHole_violations,Other_violations,Magic_violations,antenna_violations,lvs_total_errors,cvc_total_errors,klayout_violations,wire_length,vias,wns,pl_wns,optimized_wns,fastroute_wns,spef_wns,tns,pl_tns,optimized_tns,fastroute_tns,spef_tns,HPWL,routing_layer1_pct,routing_layer2_pct,routing_layer3_pct,routing_layer4_pct,routing_layer5_pct,routing_layer6_pct,wires_count,wire_bits,public_wires_count,public_wire_bits,memories_count,memory_bits,processes_count,cells_pre_abc,AND,DFF,NAND,NOR,OR,XOR,XNOR,MUX,inputs,outputs,level,EndCaps,TapCells,Diodes,Total_Physical_Cells,suggested_clock_frequency,suggested_clock_period,CLOCK_PERIOD,SYNTH_STRATEGY,SYNTH_MAX_FANOUT,FP_CORE_UTIL,FP_ASPECT_RATIO,FP_PDN_VPITCH,FP_PDN_HPITCH,PL_TARGET_DENSITY,GLB_RT_ADJUSTMENT,STD_CELL_LIBRARY,CELL_PAD,DIODE_INSERTION_STRATEGY
-0,/project/openlane/user_project_wrapper,user_project_wrapper,user_project_wrapper,Flow_completed,0h39m34s,0h4m46s,3.3079078455790785,10.2784,1.6539539227895392,0,569.55,17,0,0,0,0,0,0,0,0,24,-1,-1,1188369,4056,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-1,0.0,1.3,4.07,0.96,2.29,-1,852,1470,852,1470,0,0,0,17,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,100.0,10.0,10,AREA 0,5,50,1,180,180,0.55,0,sky130_fd_sc_hd,4,0
+0,/project/openlane/user_project_wrapper,user_project_wrapper,user_project_wrapper,Flow_completed,0h40m38s,0h4m51s,3.3079078455790785,10.2784,1.6539539227895392,0,568.44,17,0,0,0,0,0,0,0,0,24,-1,-1,1182176,4163,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-1,0.0,1.24,4.03,1.04,2.32,-1,848,1466,848,1466,0,0,0,17,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,100.0,10.0,10,AREA 0,5,50,1,180,180,0.55,0,sky130_fd_sc_hd,4,0
diff --git a/signoff/wb_host/final_summary_report.csv b/signoff/wb_host/final_summary_report.csv
index d6c67a7..2cc30c1 100644
--- a/signoff/wb_host/final_summary_report.csv
+++ b/signoff/wb_host/final_summary_report.csv
@@ -1,2 +1,2 @@
 ,design,design_name,config,flow_status,total_runtime,routed_runtime,(Cell/mm^2)/Core_Util,DIEAREA_mm^2,CellPer_mm^2,OpenDP_Util,Peak_Memory_Usage_MB,cell_count,tritonRoute_violations,Short_violations,MetSpc_violations,OffGrid_violations,MinHole_violations,Other_violations,Magic_violations,antenna_violations,lvs_total_errors,cvc_total_errors,klayout_violations,wire_length,vias,wns,pl_wns,optimized_wns,fastroute_wns,spef_wns,tns,pl_tns,optimized_tns,fastroute_tns,spef_tns,HPWL,routing_layer1_pct,routing_layer2_pct,routing_layer3_pct,routing_layer4_pct,routing_layer5_pct,routing_layer6_pct,wires_count,wire_bits,public_wires_count,public_wire_bits,memories_count,memory_bits,processes_count,cells_pre_abc,AND,DFF,NAND,NOR,OR,XOR,XNOR,MUX,inputs,outputs,level,EndCaps,TapCells,Diodes,Total_Physical_Cells,suggested_clock_frequency,suggested_clock_period,CLOCK_PERIOD,SYNTH_STRATEGY,SYNTH_MAX_FANOUT,FP_CORE_UTIL,FP_ASPECT_RATIO,FP_PDN_VPITCH,FP_PDN_HPITCH,PL_TARGET_DENSITY,GLB_RT_ADJUSTMENT,STD_CELL_LIBRARY,CELL_PAD,DIODE_INSERTION_STRATEGY
-0,/project/openlane/wb_host,wb_host,wb_host,Flow_completed,0h5m32s,0h3m51s,72650.0,0.08,36325.0,58,563.27,2906,0,0,0,0,0,0,0,3,0,-1,0,155769,24752,-2.71,-2.71,-2.68,-2.68,-2.73,-85.53,-85.53,-84.64,-84.64,-87.05,121784250,0.0,55.83,29.09,15.64,-1,-1,2753,3014,454,715,0,0,0,2906,77,0,2,14,32,25,10,769,589,744,14,130,905,0,1035,78.55459544383346,12.73,10,AREA 0,4,50,1,153.6,153.18,0.55,0,sky130_fd_sc_hd,4,5
+0,/project/openlane/wb_host,wb_host,wb_host,Flow_completed,0h5m36s,0h3m45s,61400.0,0.1,30700.0,49,587.03,3070,0,0,0,0,0,0,0,1,0,-1,0,173130,26433,-2.81,-2.81,-2.74,-2.74,-2.73,-85.26,-85.26,-84.77,-84.77,-85.68,139031696,0.0,48.06,23.93,17.81,-1,-1,2926,3180,551,805,0,0,0,3070,78,0,3,11,50,27,10,799,605,775,14,130,1139,0,1269,78.55459544383346,12.73,10,AREA 0,4,50,1,153.6,153.18,0.55,0,sky130_fd_sc_hd,4,5
diff --git a/verilog/dv/risc_boot/risc_boot_tb.v b/verilog/dv/risc_boot/risc_boot_tb.v
index 26eeaf8..2cb80c3 100644
--- a/verilog/dv/risc_boot/risc_boot_tb.v
+++ b/verilog/dv/risc_boot/risc_boot_tb.v
@@ -440,6 +440,42 @@
 	force uut.mprj.u_uart_core.u_lineclk_buf.VPB  =USER_VDD1V8;
 	force uut.mprj.u_uart_core.u_lineclk_buf.VGND =VSS;
 	force uut.mprj.u_uart_core.u_lineclk_buf.VNB = VSS;
+
+	force uut.mprj.u_wb_host.u_buf_wb_rst.VPWR =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_buf_wb_rst.VPB  =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_buf_wb_rst.VGND =VSS;
+	force uut.mprj.u_wb_host.u_buf_wb_rst.VNB = VSS;
+
+	force uut.mprj.u_wb_host.u_buf_cpu_rst.VPWR =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_buf_cpu_rst.VPB  =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_buf_cpu_rst.VGND =VSS;
+	force uut.mprj.u_wb_host.u_buf_cpu_rst.VNB = VSS;
+
+	force uut.mprj.u_wb_host.u_buf_spi_rst.VPWR =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_buf_spi_rst.VPB  =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_buf_spi_rst.VGND =VSS;
+	force uut.mprj.u_wb_host.u_buf_spi_rst.VNB = VSS;
+
+	force uut.mprj.u_wb_host.u_buf_sdram_rst.VPWR =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_buf_sdram_rst.VPB  =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_buf_sdram_rst.VGND =VSS;
+	force uut.mprj.u_wb_host.u_buf_sdram_rst.VNB = VSS;
+
+	force uut.mprj.u_wb_host.u_clkbuf_sdram.VPWR =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_clkbuf_sdram.VPB  =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_clkbuf_sdram.VGND =VSS;
+	force uut.mprj.u_wb_host.u_clkbuf_sdram.VNB = VSS;
+
+	force uut.mprj.u_wb_host.u_clkbuf_cpu.VPWR =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_clkbuf_cpu.VPB  =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_clkbuf_cpu.VGND =VSS;
+	force uut.mprj.u_wb_host.u_clkbuf_cpu.VNB = VSS;
+
+	force uut.mprj.u_wb_host.u_clkbuf_rtc.VPWR =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_clkbuf_rtc.VPB  =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_clkbuf_rtc.VGND =VSS;
+	force uut.mprj.u_wb_host.u_clkbuf_rtc.VNB = VSS;
+
     end
 `endif    
 
diff --git a/verilog/dv/user_risc_boot/user_risc_boot_tb.v b/verilog/dv/user_risc_boot/user_risc_boot_tb.v
index bb63a42..aa4c71a 100644
--- a/verilog/dv/user_risc_boot/user_risc_boot_tb.v
+++ b/verilog/dv/user_risc_boot/user_risc_boot_tb.v
@@ -311,6 +311,41 @@
 	force u_top.u_uart_core.u_lineclk_buf.VPB  =USER_VDD1V8;
 	force u_top.u_uart_core.u_lineclk_buf.VGND =VSS;
 	force u_top.u_uart_core.u_lineclk_buf.VNB = VSS;
+
+	force u_top.u_wb_host.u_buf_wb_rst.VPWR =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_wb_rst.VPB  =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_wb_rst.VGND =VSS;
+	force u_top.u_wb_host.u_buf_wb_rst.VNB = VSS;
+
+	force u_top.u_wb_host.u_buf_cpu_rst.VPWR =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_cpu_rst.VPB  =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_cpu_rst.VGND =VSS;
+	force u_top.u_wb_host.u_buf_cpu_rst.VNB = VSS;
+
+	force u_top.u_wb_host.u_buf_spi_rst.VPWR =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_spi_rst.VPB  =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_spi_rst.VGND =VSS;
+	force u_top.u_wb_host.u_buf_spi_rst.VNB = VSS;
+
+	force u_top.u_wb_host.u_buf_sdram_rst.VPWR =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_sdram_rst.VPB  =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_sdram_rst.VGND =VSS;
+	force u_top.u_wb_host.u_buf_sdram_rst.VNB = VSS;
+
+	force u_top.u_wb_host.u_clkbuf_sdram.VPWR =USER_VDD1V8;
+	force u_top.u_wb_host.u_clkbuf_sdram.VPB  =USER_VDD1V8;
+	force u_top.u_wb_host.u_clkbuf_sdram.VGND =VSS;
+	force u_top.u_wb_host.u_clkbuf_sdram.VNB = VSS;
+
+	force u_top.u_wb_host.u_clkbuf_cpu.VPWR =USER_VDD1V8;
+	force u_top.u_wb_host.u_clkbuf_cpu.VPB  =USER_VDD1V8;
+	force u_top.u_wb_host.u_clkbuf_cpu.VGND =VSS;
+	force u_top.u_wb_host.u_clkbuf_cpu.VNB = VSS;
+
+	force u_top.u_wb_host.u_clkbuf_rtc.VPWR =USER_VDD1V8;
+	force u_top.u_wb_host.u_clkbuf_rtc.VPB  =USER_VDD1V8;
+	force u_top.u_wb_host.u_clkbuf_rtc.VGND =VSS;
+	force u_top.u_wb_host.u_clkbuf_rtc.VNB = VSS;
     end
 `endif    
 
diff --git a/verilog/dv/user_spi/user_spi_tb.v b/verilog/dv/user_spi/user_spi_tb.v
index 0489af7..60ad1f9 100644
--- a/verilog/dv/user_spi/user_spi_tb.v
+++ b/verilog/dv/user_spi/user_spi_tb.v
@@ -445,6 +445,41 @@
 	force u_top.u_uart_core.u_lineclk_buf.VPB  =USER_VDD1V8;
 	force u_top.u_uart_core.u_lineclk_buf.VGND =VSS;
 	force u_top.u_uart_core.u_lineclk_buf.VNB = VSS;
+
+	force u_top.u_wb_host.u_buf_wb_rst.VPWR =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_wb_rst.VPB  =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_wb_rst.VGND =VSS;
+	force u_top.u_wb_host.u_buf_wb_rst.VNB = VSS;
+
+	force u_top.u_wb_host.u_buf_cpu_rst.VPWR =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_cpu_rst.VPB  =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_cpu_rst.VGND =VSS;
+	force u_top.u_wb_host.u_buf_cpu_rst.VNB = VSS;
+
+	force u_top.u_wb_host.u_buf_spi_rst.VPWR =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_spi_rst.VPB  =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_spi_rst.VGND =VSS;
+	force u_top.u_wb_host.u_buf_spi_rst.VNB = VSS;
+
+	force u_top.u_wb_host.u_buf_sdram_rst.VPWR =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_sdram_rst.VPB  =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_sdram_rst.VGND =VSS;
+	force u_top.u_wb_host.u_buf_sdram_rst.VNB = VSS;
+
+	force u_top.u_wb_host.u_clkbuf_sdram.VPWR =USER_VDD1V8;
+	force u_top.u_wb_host.u_clkbuf_sdram.VPB  =USER_VDD1V8;
+	force u_top.u_wb_host.u_clkbuf_sdram.VGND =VSS;
+	force u_top.u_wb_host.u_clkbuf_sdram.VNB = VSS;
+
+	force u_top.u_wb_host.u_clkbuf_cpu.VPWR =USER_VDD1V8;
+	force u_top.u_wb_host.u_clkbuf_cpu.VPB  =USER_VDD1V8;
+	force u_top.u_wb_host.u_clkbuf_cpu.VGND =VSS;
+	force u_top.u_wb_host.u_clkbuf_cpu.VNB = VSS;
+
+	force u_top.u_wb_host.u_clkbuf_rtc.VPWR =USER_VDD1V8;
+	force u_top.u_wb_host.u_clkbuf_rtc.VPB  =USER_VDD1V8;
+	force u_top.u_wb_host.u_clkbuf_rtc.VGND =VSS;
+	force u_top.u_wb_host.u_clkbuf_rtc.VNB = VSS;
     end
 `endif    
 
diff --git a/verilog/dv/user_uart/user_uart_tb.v b/verilog/dv/user_uart/user_uart_tb.v
index 9f3e22c..d6fb8a0 100644
--- a/verilog/dv/user_uart/user_uart_tb.v
+++ b/verilog/dv/user_uart/user_uart_tb.v
@@ -149,7 +149,7 @@
 	`ifdef WFDUMP
 	   initial begin
 	   	$dumpfile("risc_boot.vcd");
-	   	$dumpvars(3, user_uart_tb);
+	   	$dumpvars(4, user_uart_tb);
 	   end
        `endif
 
@@ -350,6 +350,41 @@
 	force u_top.u_uart_core.u_lineclk_buf.VPB  =USER_VDD1V8;
 	force u_top.u_uart_core.u_lineclk_buf.VGND =VSS;
 	force u_top.u_uart_core.u_lineclk_buf.VNB = VSS;
+
+	force u_top.u_wb_host.u_buf_wb_rst.VPWR =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_wb_rst.VPB  =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_wb_rst.VGND =VSS;
+	force u_top.u_wb_host.u_buf_wb_rst.VNB = VSS;
+
+	force u_top.u_wb_host.u_buf_cpu_rst.VPWR =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_cpu_rst.VPB  =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_cpu_rst.VGND =VSS;
+	force u_top.u_wb_host.u_buf_cpu_rst.VNB = VSS;
+
+	force u_top.u_wb_host.u_buf_spi_rst.VPWR =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_spi_rst.VPB  =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_spi_rst.VGND =VSS;
+	force u_top.u_wb_host.u_buf_spi_rst.VNB = VSS;
+
+	force u_top.u_wb_host.u_buf_sdram_rst.VPWR =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_sdram_rst.VPB  =USER_VDD1V8;
+	force u_top.u_wb_host.u_buf_sdram_rst.VGND =VSS;
+	force u_top.u_wb_host.u_buf_sdram_rst.VNB = VSS;
+
+	force u_top.u_wb_host.u_clkbuf_sdram.VPWR =USER_VDD1V8;
+	force u_top.u_wb_host.u_clkbuf_sdram.VPB  =USER_VDD1V8;
+	force u_top.u_wb_host.u_clkbuf_sdram.VGND =VSS;
+	force u_top.u_wb_host.u_clkbuf_sdram.VNB = VSS;
+
+	force u_top.u_wb_host.u_clkbuf_cpu.VPWR =USER_VDD1V8;
+	force u_top.u_wb_host.u_clkbuf_cpu.VPB  =USER_VDD1V8;
+	force u_top.u_wb_host.u_clkbuf_cpu.VGND =VSS;
+	force u_top.u_wb_host.u_clkbuf_cpu.VNB = VSS;
+
+	force u_top.u_wb_host.u_clkbuf_rtc.VPWR =USER_VDD1V8;
+	force u_top.u_wb_host.u_clkbuf_rtc.VPB  =USER_VDD1V8;
+	force u_top.u_wb_host.u_clkbuf_rtc.VGND =VSS;
+	force u_top.u_wb_host.u_clkbuf_rtc.VNB = VSS;
     end
 `endif    
 //------------------------------------------------------
diff --git a/verilog/dv/wb_port/wb_port_tb.v b/verilog/dv/wb_port/wb_port_tb.v
index 1ea0baa..7b12e0e 100644
--- a/verilog/dv/wb_port/wb_port_tb.v
+++ b/verilog/dv/wb_port/wb_port_tb.v
@@ -225,6 +225,42 @@
 	force uut.mprj.u_uart_core.u_lineclk_buf.VPB  =USER_VDD1V8;
 	force uut.mprj.u_uart_core.u_lineclk_buf.VGND =VSS;
 	force uut.mprj.u_uart_core.u_lineclk_buf.VNB = VSS;
+
+	force uut.mprj.u_wb_host.u_buf_wb_rst.VPWR =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_buf_wb_rst.VPB  =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_buf_wb_rst.VGND =VSS;
+	force uut.mprj.u_wb_host.u_buf_wb_rst.VNB = VSS;
+
+	force uut.mprj.u_wb_host.u_buf_cpu_rst.VPWR =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_buf_cpu_rst.VPB  =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_buf_cpu_rst.VGND =VSS;
+	force uut.mprj.u_wb_host.u_buf_cpu_rst.VNB = VSS;
+
+	force uut.mprj.u_wb_host.u_buf_spi_rst.VPWR =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_buf_spi_rst.VPB  =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_buf_spi_rst.VGND =VSS;
+	force uut.mprj.u_wb_host.u_buf_spi_rst.VNB = VSS;
+
+	force uut.mprj.u_wb_host.u_buf_sdram_rst.VPWR =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_buf_sdram_rst.VPB  =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_buf_sdram_rst.VGND =VSS;
+	force uut.mprj.u_wb_host.u_buf_sdram_rst.VNB = VSS;
+
+	force uut.mprj.u_wb_host.u_clkbuf_sdram.VPWR =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_clkbuf_sdram.VPB  =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_clkbuf_sdram.VGND =VSS;
+	force uut.mprj.u_wb_host.u_clkbuf_sdram.VNB = VSS;
+
+	force uut.mprj.u_wb_host.u_clkbuf_cpu.VPWR =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_clkbuf_cpu.VPB  =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_clkbuf_cpu.VGND =VSS;
+	force uut.mprj.u_wb_host.u_clkbuf_cpu.VNB = VSS;
+
+	force uut.mprj.u_wb_host.u_clkbuf_rtc.VPWR =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_clkbuf_rtc.VPB  =USER_VDD1V8;
+	force uut.mprj.u_wb_host.u_clkbuf_rtc.VGND =VSS;
+	force uut.mprj.u_wb_host.u_clkbuf_rtc.VNB = VSS;
+
     end
 `endif    
 endmodule
diff --git a/verilog/rtl/digital_core/src/glbl_cfg.sv b/verilog/rtl/digital_core/src/glbl_cfg.sv
index 74557e7..a14597f 100644
--- a/verilog/rtl/digital_core/src/glbl_cfg.sv
+++ b/verilog/rtl/digital_core/src/glbl_cfg.sv
@@ -66,10 +66,7 @@
 module glbl_cfg (
 
         input logic             mclk,
-        input logic             user_clock1,
-        input logic             user_clock2,
         input logic             reset_n,
-        output logic [31:0]     device_idcode,
 
         // Reg Bus Interface Signal
         input logic             reg_cs,
@@ -82,13 +79,6 @@
         output logic [31:0]     reg_rdata,
         output logic            reg_ack,
 
-       // SDRAM Clock
-
-       output  logic           sdram_clk,
-       output  logic           cpu_clk,
-       output  logic           rtc_clk,
-
-
        // Risc configuration
        output logic [31:0]     fuse_mhartid,
        output logic [15:0]     irq_lines,
@@ -270,22 +260,8 @@
 //   -----------------------------------------------------------------
 
 
-// SDRAM Clock source & div selection
-wire       cfg_sdram_clk_src_sel   = reg_0[4];
-wire       cfg_sdram_clk_div       = reg_0[5];
-wire [1:0] cfg_sdram_clk_ratio     = reg_0[7:6];
 
-// Core Clock source & div selection
-wire       cfg_cpu_clk_src_sel   = reg_0[8];
-wire       cfg_cpu_clk_div       = reg_0[9];
-wire [1:0] cfg_cpu_clk_ratio     = reg_0[11:10];
-
-// RTC Clock source & div selection
-wire       cfg_rtc_clk_src_sel   = reg_0[12];
-wire       cfg_rtc_clk_div       = reg_0[13];
-wire [1:0] cfg_rtc_clk_ratio     = reg_0[15:14];
-
-generic_register #(8,0  ) u_reg0_be0 (
+generic_register #(8,8'hAA  ) u_reg0_be0 (
 	      .we            ({8{sw_wr_en_0 & 
                                  wr_be[0]   }}  ),		 
 	      .data_in       (sw_reg_wdata[7:0]    ),
@@ -296,7 +272,7 @@
 	      .data_out      (reg_0[7:0]        )
           );
 
-generic_register #(8,0  ) u_reg0_be1 (
+generic_register #(8,8'hBB  ) u_reg0_be1 (
 	      .we            ({8{sw_wr_en_0 & 
                                  wr_be[1]   }}  ),		 
 	      .data_in       (sw_reg_wdata[15:8]    ),
@@ -306,7 +282,7 @@
 	      //List of Outs
 	      .data_out      (reg_0[15:8]        )
           );
-generic_register #(8,0  ) u_reg0_be2 (
+generic_register #(8,8'hCC  ) u_reg0_be2 (
 	      .we            ({8{sw_wr_en_0 & 
                                  wr_be[2]   }}  ),		 
 	      .data_in       (sw_reg_wdata[23:16]    ),
@@ -317,7 +293,7 @@
 	      .data_out      (reg_0[23:16]        )
           );
 
-generic_register #(8,0  ) u_reg0_be3 (
+generic_register #(8,8'hDD  ) u_reg0_be3 (
 	      .we            ({8{sw_wr_en_0 & 
                                  wr_be[3]   }}  ),		 
 	      .data_in       (sw_reg_wdata[31:24]    ),
@@ -333,7 +309,6 @@
 //-----------------------------------------------------------------------
 //   reg-1, reset value = 32'hA55A_A55A
 //   -----------------------------------------------------------------
-assign  device_idcode     = reg_1[31:0]; 
 
 generic_register #(.WD(8),.RESET_DEFAULT(8'h5A)) u_reg1_be0 (
 	      .we            ({8{sw_wr_en_1 & 
@@ -1062,66 +1037,5 @@
 
 
 
-//----------------------------------
-// Generate SDRAM Clock Generation
-//----------------------------------
-wire   sdram_clk_div;
-wire   sdram_ref_clk;
-
-assign sdram_ref_clk = (cfg_sdram_clk_src_sel) ? user_clock2 :user_clock1;
-
-
-
-assign sdram_clk = (cfg_sdram_clk_div) ? sdram_clk_div : sdram_ref_clk;
-
-
-clk_ctl #(1) u_sdramclk (
-   // Outputs
-       .clk_o         (sdram_clk_div      ),
-   // Inputs
-       .mclk          (sdram_ref_clk      ),
-       .reset_n       (reset_n            ), 
-       .clk_div_ratio (cfg_sdram_clk_ratio)
-   );
-
-
-//----------------------------------
-// Generate CORE Clock Generation
-//----------------------------------
-wire   cpu_clk_div;
-wire   cpu_ref_clk;
-
-assign cpu_ref_clk = (cfg_cpu_clk_src_sel) ? user_clock2 : user_clock1;
-assign cpu_clk     = (cfg_cpu_clk_div)     ? cpu_clk_div : cpu_ref_clk;
-
-
-clk_ctl #(1) u_cpuclk (
-   // Outputs
-       .clk_o         (cpu_clk_div      ),
-   // Inputs
-       .mclk          (cpu_ref_clk      ),
-       .reset_n       (reset_n          ), 
-       .clk_div_ratio (cfg_cpu_clk_ratio)
-   );
-
-//----------------------------------
-// Generate RTC Clock Generation
-//----------------------------------
-wire   rtc_clk_div;
-wire   rtc_ref_clk;
-
-assign rtc_ref_clk = (cfg_rtc_clk_src_sel) ? user_clock2 : user_clock1;
-assign rtc_clk     = (cfg_rtc_clk_div)     ? rtc_clk_div : rtc_ref_clk;
-
-
-clk_ctl #(1) u_rtcclk (
-   // Outputs
-       .clk_o         (rtc_clk_div      ),
-   // Inputs
-       .mclk          (rtc_ref_clk      ),
-       .reset_n       (reset_n          ), 
-       .clk_div_ratio (cfg_rtc_clk_ratio)
-   );
-
 
 endmodule
diff --git a/verilog/rtl/lib/async_wb.sv b/verilog/rtl/lib/async_wb.sv
index dac5928..ecad725 100644
--- a/verilog/rtl/lib/async_wb.sv
+++ b/verilog/rtl/lib/async_wb.sv
@@ -150,7 +150,7 @@
 // Slave Interface
 //-------------------------------
 
-logic [70:0] s_cmd_rd_data      ;
+logic [68:0] s_cmd_rd_data      ;
 logic        s_cmd_rd_empty     ;
 logic        s_cmd_rd_aempty    ;
 logic        s_cmd_rd_en        ;
diff --git a/verilog/rtl/user_project_wrapper.v b/verilog/rtl/user_project_wrapper.v
index d5665d0..bb9c9b2 100644
--- a/verilog/rtl/user_project_wrapper.v
+++ b/verilog/rtl/user_project_wrapper.v
@@ -330,12 +330,8 @@
 
 
 /////////////////////////////////////////////////////////
-// Generating acive low wishbone reset                 
-// //////////////////////////////////////////////////////
-assign wbd_int_rst_n  = cfg_glb_ctrl[0];
-assign cpu_rst_n      = cfg_glb_ctrl[1];
-assign spi_rst_n      = cfg_glb_ctrl[2];
-assign sdram_rst_n    = cfg_glb_ctrl[3];
+// Clock Skew Ctrl
+////////////////////////////////////////////////////////
 
 assign cfg_cska_wi    = cfg_clk_ctrl1[3:0];
 assign cfg_cska_riscv = cfg_clk_ctrl1[7:4];
@@ -354,6 +350,17 @@
 
 
 wb_host u_wb_host(
+       .user_clock1      (wb_clk_i             ),
+       .user_clock2      (user_clock2          ),
+
+       .sdram_clk        (sdram_clk            ),
+       .cpu_clk          (cpu_clk              ),
+       .rtc_clk          (rtc_clk              ),
+
+       .wbd_int_rst_n    (wbd_int_rst_n        ),
+       .cpu_rst_n        (cpu_rst_n            ),
+       .spi_rst_n        (spi_rst_n            ),
+       .sdram_rst_n      (sdram_rst_n          ),
 
     // Master Port
        .wbm_rst_i        (wb_rst_i             ),  
@@ -381,7 +388,6 @@
        .wbs_ack_i        (wbd_int_ack_o        ),  
        .wbs_err_i        (wbd_int_err_o        ),  
 
-       .cfg_glb_ctrl     (cfg_glb_ctrl         ),
        .cfg_clk_ctrl1    (cfg_clk_ctrl1        ),
        .cfg_clk_ctrl2    (cfg_clk_ctrl2        )
 
@@ -614,9 +620,6 @@
 
        .mclk                   (wbd_clk_glbl              ),
        .reset_n                (wbd_int_rst_n             ),
-       .user_clock1            (wb_clk_i                  ),
-       .user_clock2            (user_clock2               ),
-       .device_idcode          (                          ),
 
         // Reg Bus Interface Signal
        .reg_cs                 (wbd_glbl_stb_o            ),
@@ -629,12 +632,6 @@
        .reg_rdata              (wbd_glbl_dat_i            ),
        .reg_ack                (wbd_glbl_ack_i            ),
 
-       // SDRAM Clock
-
-       .sdram_clk              (sdram_clk                 ),
-       .cpu_clk                (cpu_clk                   ),
-       .rtc_clk                (rtc_clk                   ),
-
        // Risc configuration
        .fuse_mhartid           (fuse_mhartid              ),
        .irq_lines              (irq_lines                 ), 
diff --git a/verilog/rtl/wb_host/src/wb_host.sv b/verilog/rtl/wb_host/src/wb_host.sv
index 8f9a6dd..e91913b 100644
--- a/verilog/rtl/wb_host/src/wb_host.sv
+++ b/verilog/rtl/wb_host/src/wb_host.sv
@@ -69,6 +69,17 @@
     inout vccd1,	// User area 1 1.8V supply
     inout vssd1,	// User area 1 digital ground
 `endif
+       input logic                 user_clock1      ,
+       input logic                 user_clock2      ,
+
+       output logic                sdram_clk        ,
+       output logic                cpu_clk          ,
+       output logic                rtc_clk          ,
+       // Global Reset control
+       output logic                wbd_int_rst_n    ,
+       output logic                cpu_rst_n        ,
+       output logic                spi_rst_n        ,
+       output logic                sdram_rst_n      ,
 
     // Master Port
        input   logic               wbm_rst_i        ,  // Regular Reset signal
@@ -96,7 +107,6 @@
        input   logic               wbs_ack_i        ,  // acknowlegement
        input   logic               wbs_err_i        ,  // error
 
-       output logic [7:0]          cfg_glb_ctrl     ,
        output logic [31:0]         cfg_clk_ctrl1    ,
        output logic [31:0]         cfg_clk_ctrl2    
 
@@ -130,14 +140,33 @@
 logic [7:0]         cfg_bank_sel;
 logic [31:0]        wbm_adr_int;
 logic               wbm_stb_int;
+logic [23:0]        reg_0;  // Software_Reg_0
 
-logic [2:0]         cfg_wb_clk_ctr;
-
+logic  [2:0]        cfg_wb_clk_ctrl;
+logic  [2:0]        cfg_sdram_clk_ctrl;
+logic  [2:0]        cfg_cpu_clk_ctrl;
+logic  [2:0]        cfg_rtc_clk_ctrl;
+logic  [7:0]        cfg_glb_ctrl;
 
 
 assign wbm_rst_n = !wbm_rst_i;
 assign wbs_rst_n = !wbm_rst_i;
 
+sky130_fd_sc_hd__bufbuf_16 u_buf_wb_rst     (.A(cfg_glb_ctrl[0]),.X(wbd_int_rst_n));
+sky130_fd_sc_hd__bufbuf_16 u_buf_cpu_rst    (.A(cfg_glb_ctrl[1]),.X(cpu_rst_n));
+sky130_fd_sc_hd__bufbuf_16 u_buf_spi_rst    (.A(cfg_glb_ctrl[2]),.X(spi_rst_n));
+sky130_fd_sc_hd__bufbuf_16 u_buf_sdram_rst  (.A(cfg_glb_ctrl[3]),.X(sdram_rst_n));
+
+// To reduce the load/Timing Wishbone I/F, Strobe is register to create
+// multi-cycle
+logic wb_req;
+always_ff @(negedge wbm_rst_n or posedge wbm_clk_i) begin
+    if ( wbm_rst_n == 1'b0 ) begin
+        wb_req   <= '0;
+   end else begin
+       wb_req   <= wbm_stb_i && (wbm_ack_o == 0) ;
+   end
+end
 
 assign  wbm_dat_o   = (reg_sel) ? reg_rdata : wbm_dat_int;  // data input
 assign  wbm_ack_o   = (reg_sel) ? reg_ack   : wbm_ack_int; // acknowlegement
@@ -156,7 +185,7 @@
 // added indirect MSB 8 bit address select option
 // So Address will be {Bank_Sel[7:0], wbm_adr_i[23:0}
 // ---------------------------------------------------------------------
-assign reg_sel       = wbm_stb_i & (wbm_adr_i[23] == 1'b1);
+assign reg_sel       = wb_req & (wbm_adr_i[23] == 1'b1);
 
 assign sw_addr       = wbm_adr_i [3:2];
 assign sw_rd_en      = reg_sel & !wbm_we_i;
@@ -187,12 +216,22 @@
    end
 end
 
+
+//-------------------------------------
+// Global + Clock Control
+// -------------------------------------
+assign cfg_glb_ctrl         = reg_0[7:0];
+assign cfg_wb_clk_ctrl      = reg_0[10:8];
+assign cfg_sdram_clk_ctrl   = reg_0[15:12];
+assign cfg_cpu_clk_ctrl     = reg_0[19:16];
+assign cfg_rtc_clk_ctrl     = reg_0[23:20];
+
 always @( *)
 begin 
   reg_out [31:0] = 8'd0;
 
   case (sw_addr [1:0])
-    2'b00 :   reg_out [31:0] = {21'h0,cfg_wb_clk_ctr[2:0],cfg_glb_ctrl [7:0]};     
+    2'b00 :   reg_out [31:0] = {8'h0, reg_0[23:0]};
     2'b01 :   reg_out [31:0] = {24'h0,cfg_bank_sel [7:0]};     
     2'b10 :   reg_out [31:0] = cfg_clk_ctrl1 [31:0];    
     2'b11 :   reg_out [31:0] = cfg_clk_ctrl2 [31:0];     
@@ -202,15 +241,14 @@
 
 
 
-generic_register #(11,0  ) u_glb_ctrl (
-	      .we            ({11{sw_wr_en_0}}   ),		 
-	      .data_in       (wbm_dat_i[10:0]    ),
+generic_register #(24,0  ) u_glb_ctrl (
+	      .we            ({24{sw_wr_en_0}}   ),		 
+	      .data_in       (wbm_dat_i[23:0]    ),
 	      .reset_n       (wbm_rst_n         ),
 	      .clk           (wbm_clk_i         ),
 	      
 	      //List of Outs
-	      .data_out      ({cfg_wb_clk_ctr[2:0],
-		               cfg_glb_ctrl[7:0]} )
+	      .data_out      (reg_0[23:0])
           );
 
 generic_register #(8,8'h30 ) u_bank_sel (
@@ -245,7 +283,7 @@
           );
 
 
-assign wbm_stb_int = wbm_stb_i & !reg_sel;
+assign wbm_stb_int = wb_req & !reg_sel;
 
 // Since design need more than 16MB address space, we have implemented
 // indirect access
@@ -288,8 +326,8 @@
 logic       cfg_wb_clk_div;
 logic [1:0] cfg_wb_clk_ratio;
 
-assign    cfg_wb_clk_ratio =  cfg_wb_clk_ctr[1:0];
-assign    cfg_wb_clk_div   =  cfg_wb_clk_ctr[2];
+assign    cfg_wb_clk_ratio =  cfg_wb_clk_ctrl[1:0];
+assign    cfg_wb_clk_div   =  cfg_wb_clk_ctrl[2];
 
 
 assign wbs_clk_out  = (cfg_wb_clk_div)  ? wb_clk_div : wbm_clk_i;
@@ -304,5 +342,82 @@
        .clk_div_ratio (cfg_wb_clk_ratio )
    );
 
+//----------------------------------
+// Generate SDRAM Clock Generation
+//----------------------------------
+wire   sdram_clk_div;
+wire   sdram_ref_clk;
+wire   sdram_clk_int;
+
+wire       cfg_sdram_clk_src_sel   = cfg_sdram_clk_ctrl[0];
+wire       cfg_sdram_clk_div       = cfg_sdram_clk_ctrl[1];
+wire [1:0] cfg_sdram_clk_ratio     = cfg_sdram_clk_ctrl[3:2];
+assign sdram_ref_clk = (cfg_sdram_clk_src_sel) ? user_clock2 :user_clock1;
+assign sdram_clk_int = (cfg_sdram_clk_div) ? sdram_clk_div : sdram_ref_clk;
+
+sky130_fd_sc_hd__clkbuf_16 u_clkbuf_sdram (.A (sdram_clk_int), . X(sdram_clk));
+
+clk_ctl #(1) u_sdramclk (
+   // Outputs
+       .clk_o         (sdram_clk_div      ),
+   // Inputs
+       .mclk          (sdram_ref_clk      ),
+       .reset_n       (reset_n            ), 
+       .clk_div_ratio (cfg_sdram_clk_ratio)
+   );
+
+
+//----------------------------------
+// Generate CORE Clock Generation
+//----------------------------------
+wire   cpu_clk_div;
+wire   cpu_ref_clk;
+wire   cpu_clk_int;
+
+wire       cfg_cpu_clk_src_sel   = cfg_cpu_clk_ctrl[0];
+wire       cfg_cpu_clk_div       = cfg_cpu_clk_ctrl[1];
+wire [1:0] cfg_cpu_clk_ratio     = cfg_cpu_clk_ctrl[3:2];
+
+assign cpu_ref_clk = (cfg_cpu_clk_src_sel) ? user_clock2 : user_clock1;
+assign cpu_clk_int = (cfg_cpu_clk_div)     ? cpu_clk_div : cpu_ref_clk;
+
+
+sky130_fd_sc_hd__clkbuf_16 u_clkbuf_cpu (.A (cpu_clk_int), . X(cpu_clk));
+
+clk_ctl #(1) u_cpuclk (
+   // Outputs
+       .clk_o         (cpu_clk_div      ),
+   // Inputs
+       .mclk          (cpu_ref_clk      ),
+       .reset_n       (reset_n          ), 
+       .clk_div_ratio (cfg_cpu_clk_ratio)
+   );
+
+//----------------------------------
+// Generate RTC Clock Generation
+//----------------------------------
+wire   rtc_clk_div;
+wire   rtc_ref_clk;
+wire   rtc_clk_int;
+wire       cfg_rtc_clk_src_sel   = cfg_rtc_clk_ctrl[0];
+wire       cfg_rtc_clk_div       = cfg_rtc_clk_ctrl[1];
+wire [1:0] cfg_rtc_clk_ratio     = cfg_rtc_clk_ctrl[3:2];
+
+assign rtc_ref_clk = (cfg_rtc_clk_src_sel) ? user_clock2 : user_clock1;
+assign rtc_clk_int = (cfg_rtc_clk_div)     ? rtc_clk_div : rtc_ref_clk;
+
+
+sky130_fd_sc_hd__clkbuf_16 u_clkbuf_rtc (.A (rtc_clk_int), . X(rtc_clk));
+
+clk_ctl #(1) u_rtcclk (
+   // Outputs
+       .clk_o         (rtc_clk_div      ),
+   // Inputs
+       .mclk          (rtc_ref_clk      ),
+       .reset_n       (reset_n          ), 
+       .clk_div_ratio (cfg_rtc_clk_ratio)
+   );
+
+
 
 endmodule