backand cleanup
diff --git a/openlane/glbl_cfg/config.tcl b/openlane/glbl_cfg/config.tcl
index fd5bda6..7040413 100755
--- a/openlane/glbl_cfg/config.tcl
+++ b/openlane/glbl_cfg/config.tcl
@@ -29,6 +29,10 @@
 
 set ::env(LEC_ENABLE) 0
 
+set ::env(VDD_PIN) [list {vccd1}]
+set ::env(GND_PIN) [list {vssd1}]
+
+
 
 # Floorplanning
 # -------------
@@ -41,7 +45,7 @@
 
 
 set ::env(FP_PDN_VPITCH) 50
-set ::env(PDN_CFG) $script_dir/pdn.tcl
+#set ::env(PDN_CFG) $script_dir/pdn.tcl
 
 set ::env(FP_VERTICAL_HALO) 6
 set ::env(PL_TARGET_DENSITY) 0.52
diff --git a/openlane/glbl_cfg/pin_order.cfg b/openlane/glbl_cfg/pin_order.cfg
index 8f9547a..5867718 100644
--- a/openlane/glbl_cfg/pin_order.cfg
+++ b/openlane/glbl_cfg/pin_order.cfg
@@ -3,240 +3,237 @@
 #MANUAL_PLACE
 #E
 cpu_clk                0000 0
-rtc_clk                0000 1
-cpu_rst_n              0000 2
-irq_lines\[15\]        0000 3
-irq_lines\[14\]        0000 4
-irq_lines\[13\]        0000 5
-irq_lines\[12\]        0000 6
-irq_lines\[11\]        0000 7
-irq_lines\[10\]        0000 8
-irq_lines\[9\]         0000 9
-irq_lines\[8\]         0000 10
-irq_lines\[7\]         0000 11
-irq_lines\[6\]         0000 12
-irq_lines\[5\]         0000 13
-irq_lines\[4\]         0000 14
-irq_lines\[3\]         0000 15
-irq_lines\[2\]         0000 16
-irq_lines\[1\]         0000 17
-irq_lines\[0\]         0000 18
-soft_irq               0000 19
-fuse_mhartid\[31\]     0000 20
-fuse_mhartid\[30\]     0000 21
-fuse_mhartid\[29\]     0000 22
-fuse_mhartid\[28\]     0000 23
-fuse_mhartid\[27\]     0000 24
-fuse_mhartid\[26\]     0000 25
-fuse_mhartid\[25\]     0000 26
-fuse_mhartid\[24\]     0000 27
-fuse_mhartid\[23\]     0000 28
-fuse_mhartid\[22\]     0000 29
-fuse_mhartid\[21\]     0000 30
-fuse_mhartid\[20\]     0000 31
-fuse_mhartid\[19\]     0000 32
-fuse_mhartid\[18\]     0000 33
-fuse_mhartid\[17\]     0000 34
-fuse_mhartid\[16\]     0000 35
-fuse_mhartid\[15\]     0000 36
-fuse_mhartid\[14\]     0000 37
-fuse_mhartid\[13\]     0000 38
-fuse_mhartid\[12\]     0000 39
-fuse_mhartid\[11\]     0000 40
-fuse_mhartid\[10\]     0000 41
-fuse_mhartid\[9\]      0000 42
-fuse_mhartid\[8\]      0000 43
-fuse_mhartid\[7\]      0000 44
-fuse_mhartid\[6\]      0000 45
-fuse_mhartid\[5\]      0000 46
-fuse_mhartid\[4\]      0000 47
-fuse_mhartid\[3\]      0000 48
-fuse_mhartid\[2\]      0000 49
-fuse_mhartid\[1\]      0000 50
-fuse_mhartid\[0\]      0000 51
+rtc_clk                
+irq_lines\[15\]        
+irq_lines\[14\]        
+irq_lines\[13\]        
+irq_lines\[12\]        
+irq_lines\[11\]        
+irq_lines\[10\]        
+irq_lines\[9\]         
+irq_lines\[8\]         
+irq_lines\[7\]         
+irq_lines\[6\]         
+irq_lines\[5\]         
+irq_lines\[4\]         
+irq_lines\[3\]         
+irq_lines\[2\]         
+irq_lines\[1\]         
+irq_lines\[0\]         
+soft_irq               
+fuse_mhartid\[31\]     
+fuse_mhartid\[30\]     
+fuse_mhartid\[29\]     
+fuse_mhartid\[28\]     
+fuse_mhartid\[27\]     
+fuse_mhartid\[26\]     
+fuse_mhartid\[25\]     
+fuse_mhartid\[24\]     
+fuse_mhartid\[23\]     
+fuse_mhartid\[22\]     
+fuse_mhartid\[21\]     
+fuse_mhartid\[20\]     
+fuse_mhartid\[19\]     
+fuse_mhartid\[18\]     
+fuse_mhartid\[17\]     
+fuse_mhartid\[16\]     
+fuse_mhartid\[15\]     
+fuse_mhartid\[14\]     
+fuse_mhartid\[13\]     
+fuse_mhartid\[12\]     
+fuse_mhartid\[11\]     
+fuse_mhartid\[10\]     
+fuse_mhartid\[9\]      
+fuse_mhartid\[8\]      
+fuse_mhartid\[7\]      
+fuse_mhartid\[6\]      
+fuse_mhartid\[5\]      
+fuse_mhartid\[4\]      
+fuse_mhartid\[3\]      
+fuse_mhartid\[2\]      
+fuse_mhartid\[1\]      
+fuse_mhartid\[0\]      
 
 #N
 mclk                   0000 0
-reset_n                0000 1
-user_clock2            0000 2
-spi_rst_n              0000 3
-user_irq\[2\]          0000 4
-user_irq\[1\]          0000 5
-user_irq\[0\]          0000 6
-device_idcode\[31\]    0000 7
-device_idcode\[30\]    0000 8
-device_idcode\[29\]    0000 9
-device_idcode\[28\]    0000 10
-device_idcode\[27\]    0000 11
-device_idcode\[26\]    0000 12
-device_idcode\[25\]    0000 13
-device_idcode\[24\]    0000 14
-device_idcode\[23\]    0000 15
-device_idcode\[22\]    0000 16
-device_idcode\[21\]    0000 17
-device_idcode\[20\]    0000 18
-device_idcode\[19\]    0000 19
-device_idcode\[18\]    0000 20
-device_idcode\[17\]    0000 21
-device_idcode\[16\]    0000 22
-device_idcode\[15\]    0000 23
-device_idcode\[14\]    0000 24
-device_idcode\[13\]    0000 25
-device_idcode\[12\]    0000 26
-device_idcode\[11\]    0000 27
-device_idcode\[10\]    0000 28
-device_idcode\[9\]     0000 29
-device_idcode\[8\]     0000 30
-device_idcode\[7\]     0000 31
-device_idcode\[6\]     0000 32
-device_idcode\[5\]     0000 33
-device_idcode\[4\]     0000 34
-device_idcode\[3\]     0000 35
-device_idcode\[2\]     0000 36
-device_idcode\[1\]     0000 37
-device_idcode\[0\]     0000 38
+reset_n                
+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
-sdram_rst_n            0000 1
-sdr_init_done          0000 2
-cfg_sdr_width\[1]      0000 3
-cfg_sdr_width\[0]      0000 4
-cfg_colbits\[1\]       0000 5
-cfg_colbits\[0\]       0000 6
-cfg_sdr_tras_d\[3\]    0000 7
-cfg_sdr_tras_d\[2\]    0000 8
-cfg_sdr_tras_d\[1\]    0000 9
-cfg_sdr_tras_d\[0\]    0000 10
-cfg_sdr_trp_d\[3\]     0000 11
-cfg_sdr_trp_d\[2\]     0000 12
-cfg_sdr_trp_d\[1\]     0000 13
-cfg_sdr_trp_d\[0\]     0000 14
-cfg_sdr_trcd_d\[3\]    0000 15
-cfg_sdr_trcd_d\[2\]    0000 16
-cfg_sdr_trcd_d\[1\]    0000 17
-cfg_sdr_trcd_d\[0\]    0000 18
-cfg_sdr_en             0000 19
-cfg_req_depth\[1\]     0000 20
-cfg_req_depth\[0\]     0000 21
-cfg_sdr_mode_reg\[12\] 0000 22
-cfg_sdr_mode_reg\[11\] 0000 23
-cfg_sdr_mode_reg\[10\] 0000 24
-cfg_sdr_mode_reg\[9\] 0000 25
-cfg_sdr_mode_reg\[8\] 0000 26
-cfg_sdr_mode_reg\[7\] 0000 27
-cfg_sdr_mode_reg\[6\] 0000 28
-cfg_sdr_mode_reg\[5\] 0000 29
-cfg_sdr_mode_reg\[4\] 0000 30
-cfg_sdr_mode_reg\[3\] 0000 31
-cfg_sdr_mode_reg\[2\] 0000 32
-cfg_sdr_mode_reg\[1\] 0000 33
-cfg_sdr_mode_reg\[0\] 0000 34
-cfg_sdr_cas\[2\]      0000 35
-cfg_sdr_cas\[1\]      0000 36
-cfg_sdr_cas\[0\]      0000 37
-cfg_sdr_trcar_d\[3\]  0000 38
-cfg_sdr_trcar_d\[2\]  0000 39
-cfg_sdr_trcar_d\[1\]  0000 40
-cfg_sdr_trcar_d\[0\]  0000 41
-cfg_sdr_twr_d\[3\]    0000 42
-cfg_sdr_twr_d\[2\]    0000 43
-cfg_sdr_twr_d\[1\]    0000 44
-cfg_sdr_twr_d\[0\]    0000 45
-cfg_sdr_rfsh\[11\]    0000 46
-cfg_sdr_rfsh\[10\]    0000 47
-cfg_sdr_rfsh\[9\]    0000 48
-cfg_sdr_rfsh\[8\]    0000 49
-cfg_sdr_rfsh\[7\]    0000 50
-cfg_sdr_rfsh\[6\]    0000 51
-cfg_sdr_rfsh\[5\]    0000 52
-cfg_sdr_rfsh\[4\]    0000 53
-cfg_sdr_rfsh\[3\]    0000 54
-cfg_sdr_rfsh\[2\]    0000 55
-cfg_sdr_rfsh\[1\]    0000 56
-cfg_sdr_rfsh\[0\]    0000 57
-cfg_sdr_rfmax\[2\]   0000 58
-cfg_sdr_rfmax\[1\]   0000 59
-cfg_sdr_rfmax\[0\]   0000 60
+sdr_init_done          
+cfg_sdr_width\[1]      
+cfg_sdr_width\[0]      
+cfg_colbits\[1\]       
+cfg_colbits\[0\]       
+cfg_sdr_tras_d\[3\]    
+cfg_sdr_tras_d\[2\]    
+cfg_sdr_tras_d\[1\]    
+cfg_sdr_tras_d\[0\]    
+cfg_sdr_trp_d\[3\]     
+cfg_sdr_trp_d\[2\]     
+cfg_sdr_trp_d\[1\]     
+cfg_sdr_trp_d\[0\]     
+cfg_sdr_trcd_d\[3\]    
+cfg_sdr_trcd_d\[2\]    
+cfg_sdr_trcd_d\[1\]    
+cfg_sdr_trcd_d\[0\]    
+cfg_sdr_en             
+cfg_req_depth\[1\]     
+cfg_req_depth\[0\]     
+cfg_sdr_mode_reg\[12\] 
+cfg_sdr_mode_reg\[11\] 
+cfg_sdr_mode_reg\[10\] 
+cfg_sdr_mode_reg\[9\] 
+cfg_sdr_mode_reg\[8\] 
+cfg_sdr_mode_reg\[7\] 
+cfg_sdr_mode_reg\[6\] 
+cfg_sdr_mode_reg\[5\] 
+cfg_sdr_mode_reg\[4\] 
+cfg_sdr_mode_reg\[3\] 
+cfg_sdr_mode_reg\[2\] 
+cfg_sdr_mode_reg\[1\] 
+cfg_sdr_mode_reg\[0\] 
+cfg_sdr_cas\[2\]      
+cfg_sdr_cas\[1\]      
+cfg_sdr_cas\[0\]      
+cfg_sdr_trcar_d\[3\]  
+cfg_sdr_trcar_d\[2\]  
+cfg_sdr_trcar_d\[1\]  
+cfg_sdr_trcar_d\[0\]  
+cfg_sdr_twr_d\[3\]    
+cfg_sdr_twr_d\[2\]    
+cfg_sdr_twr_d\[1\]    
+cfg_sdr_twr_d\[0\]    
+cfg_sdr_rfsh\[11\]    
+cfg_sdr_rfsh\[10\]    
+cfg_sdr_rfsh\[9\]    
+cfg_sdr_rfsh\[8\]    
+cfg_sdr_rfsh\[7\]    
+cfg_sdr_rfsh\[6\]    
+cfg_sdr_rfsh\[5\]    
+cfg_sdr_rfsh\[4\]    
+cfg_sdr_rfsh\[3\]    
+cfg_sdr_rfsh\[2\]    
+cfg_sdr_rfsh\[1\]    
+cfg_sdr_rfsh\[0\]    
+cfg_sdr_rfmax\[2\]   
+cfg_sdr_rfmax\[1\]   
+cfg_sdr_rfmax\[0\]   
 
 
 #S
 reg_cs               0000 0
-reg_wr               0000 1
-reg_addr\[7\]        0000 2
-reg_addr\[6\]        0000 3
-reg_addr\[5\]        0000 4
-reg_addr\[4\]        0000 5
-reg_addr\[3\]        0000 6
-reg_addr\[2\]        0000 7
-reg_addr\[1\]        0000 8
-reg_addr\[0\]        0000 9
-reg_be\[3\]          0000 10
-reg_be\[2\]          0000 11
-reg_be\[1\]          0000 12
-reg_be\[0\]          0000 13
-reg_wdata\[31\]      0000 14
-reg_wdata\[30\]      0000 15
-reg_wdata\[29\]      0000 16
-reg_wdata\[28\]      0000 17
-reg_wdata\[27\]      0000 18
-reg_wdata\[26\]      0000 19
-reg_wdata\[25\]      0000 20
-reg_wdata\[24\]      0000 21
-reg_wdata\[23\]      0000 22
-reg_wdata\[22\]      0000 23
-reg_wdata\[21\]      0000 24
-reg_wdata\[20\]      0000 25
-reg_wdata\[19\]      0000 26
-reg_wdata\[18\]      0000 27
-reg_wdata\[17\]      0000 28
-reg_wdata\[16\]      0000 29
-reg_wdata\[15\]      0000 30
-reg_wdata\[14\]      0000 31
-reg_wdata\[13\]      0000 32
-reg_wdata\[12\]      0000 33
-reg_wdata\[11\]      0000 34
-reg_wdata\[10\]      0000 35
-reg_wdata\[9\]      0000 36
-reg_wdata\[8\]      0000 37
-reg_wdata\[7\]      0000 38
-reg_wdata\[6\]      0000 39
-reg_wdata\[5\]      0000 40
-reg_wdata\[4\]      0000 41
-reg_wdata\[3\]      0000 42
-reg_wdata\[2\]      0000 43
-reg_wdata\[1\]      0000 44
-reg_wdata\[0\]      0000 45
-reg_rdata\[31\]     0000 46
-reg_rdata\[30\]     0000 47
-reg_rdata\[29\]     0000 48
-reg_rdata\[28\]     0000 49
-reg_rdata\[27\]     0000 50
-reg_rdata\[26\]     0000 51
-reg_rdata\[25\]     0000 52
-reg_rdata\[24\]     0000 53
-reg_rdata\[23\]     0000 54
-reg_rdata\[22\]     0000 55
-reg_rdata\[21\]     0000 56
-reg_rdata\[20\]     0000 57
-reg_rdata\[19\]     0000 58
-reg_rdata\[18\]     0000 59
-reg_rdata\[17\]     0000 60
-reg_rdata\[16\]     0000 61
-reg_rdata\[15\]     0000 62
-reg_rdata\[14\]     0000 63
-reg_rdata\[13\]     0000 64
-reg_rdata\[12\]     0000 65
-reg_rdata\[11\]     0000 66
-reg_rdata\[10\]     0000 67
-reg_rdata\[9\]     0000 68
-reg_rdata\[8\]     0000 69
-reg_rdata\[7\]     0000 70
-reg_rdata\[6\]     0000 71
-reg_rdata\[5\]     0000 72
-reg_rdata\[4\]     0000 73
-reg_rdata\[3\]     0000 74
-reg_rdata\[2\]     0000 75
-reg_rdata\[1\]     0000 76
-reg_rdata\[0\]     0000 77
-reg_ack            0000 78
+reg_wr               
+reg_addr\[7\]        
+reg_addr\[6\]        
+reg_addr\[5\]        
+reg_addr\[4\]        
+reg_addr\[3\]        
+reg_addr\[2\]        
+reg_addr\[1\]        
+reg_addr\[0\]        
+reg_be\[3\]          
+reg_be\[2\]          
+reg_be\[1\]          
+reg_be\[0\]          
+reg_wdata\[31\]      
+reg_wdata\[30\]      
+reg_wdata\[29\]      
+reg_wdata\[28\]      
+reg_wdata\[27\]      
+reg_wdata\[26\]      
+reg_wdata\[25\]      
+reg_wdata\[24\]      
+reg_wdata\[23\]      
+reg_wdata\[22\]      
+reg_wdata\[21\]      
+reg_wdata\[20\]      
+reg_wdata\[19\]      
+reg_wdata\[18\]      
+reg_wdata\[17\]      
+reg_wdata\[16\]      
+reg_wdata\[15\]      
+reg_wdata\[14\]      
+reg_wdata\[13\]      
+reg_wdata\[12\]      
+reg_wdata\[11\]      
+reg_wdata\[10\]      
+reg_wdata\[9\]      
+reg_wdata\[8\]      
+reg_wdata\[7\]      
+reg_wdata\[6\]      
+reg_wdata\[5\]      
+reg_wdata\[4\]      
+reg_wdata\[3\]      
+reg_wdata\[2\]      
+reg_wdata\[1\]      
+reg_wdata\[0\]      
+reg_rdata\[31\]     
+reg_rdata\[30\]     
+reg_rdata\[29\]     
+reg_rdata\[28\]     
+reg_rdata\[27\]     
+reg_rdata\[26\]     
+reg_rdata\[25\]     
+reg_rdata\[24\]     
+reg_rdata\[23\]     
+reg_rdata\[22\]     
+reg_rdata\[21\]     
+reg_rdata\[20\]     
+reg_rdata\[19\]     
+reg_rdata\[18\]     
+reg_rdata\[17\]     
+reg_rdata\[16\]     
+reg_rdata\[15\]     
+reg_rdata\[14\]     
+reg_rdata\[13\]     
+reg_rdata\[12\]     
+reg_rdata\[11\]     
+reg_rdata\[10\]     
+reg_rdata\[9\]      
+reg_rdata\[8\]      
+reg_rdata\[7\]      
+reg_rdata\[6\]      
+reg_rdata\[5\]      
+reg_rdata\[4\]      
+reg_rdata\[3\]      
+reg_rdata\[2\]      
+reg_rdata\[1\]      
+reg_rdata\[0\]      
+reg_ack             
diff --git a/openlane/sdram/base.sdc b/openlane/sdram/base.sdc
index 0b59edd..117c0f4 100644
--- a/openlane/sdram/base.sdc
+++ b/openlane/sdram/base.sdc
@@ -6,7 +6,7 @@
 set ::env(SDRAM_CLOCK_PORT)   "sdram_clk"
 
 set ::env(PAD_SDRAM_CLOCK_PERIOD) "20"
-set ::env(PAD_SDRAM_CLOCK_PORT)   "sdram_pad_clk"
+set ::env(PAD_SDRAM_CLOCK_PORT)   "io_in\[29\]"
 ######################################
 # WB Clock domain input output
 ######################################
@@ -17,7 +17,7 @@
 puts "\[INFO\]: Setting wb input delay to: $wb_input_delay_value"
 
 
-set_input_delay 2.0 -clock [get_clocks $::env(WB_CLOCK_PORT)] {wb_rst_i}
+set_input_delay 2.0 -clock [get_clocks $::env(WB_CLOCK_PORT)] {wb_rst_n}
 
 set_input_delay  3.0                     -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port wb_stb_i*]
 set_input_delay  $wb_input_delay_value   -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port wb_addr_i*]
@@ -52,16 +52,8 @@
 puts "\[INFO\]: Setting wb output delay to:$wb_output_delay_value"
 puts "\[INFO\]: Setting wb input delay to: $wb_input_delay_value"
 
-set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port sdr_cke*]
-set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port sdr_cs_n*]
-set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port sdr_ras_n*]
-set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port sdr_cas_n*]
-set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port sdr_we_n*]
-set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port sdr_dqm*]
-set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port sdr_ba*]
-set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port sdr_addr*]
-set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port sdr_dout*]
-set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port sdr_den_n*]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out*]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_oeb*]
 
 ################################################
 # PAD SDRAM Clock domain input output
@@ -70,7 +62,7 @@
 ################################################
 
 create_clock [get_ports $::env(PAD_SDRAM_CLOCK_PORT)]  -name $::env(PAD_SDRAM_CLOCK_PORT)  -period $::env(SDRAM_CLOCK_PERIOD)
-set_input_delay  $sdram_input_delay_value   -clock [get_clocks $::env(PAD_SDRAM_CLOCK_PORT)] [get_port pad_sdr_din*]
+set_input_delay  $sdram_input_delay_value   -clock [get_clocks $::env(PAD_SDRAM_CLOCK_PORT)] [get_port io_in*]
 
 
 set_clock_groups -name async_clock -asynchronous -comment "Async Clock group" -group [get_clocks $::env(WB_CLOCK_PORT)] -group [get_clocks $::env(SDRAM_CLOCK_PORT)]
diff --git a/openlane/sdram/config.tcl b/openlane/sdram/config.tcl
index 879a9ae..6d25773 100755
--- a/openlane/sdram/config.tcl
+++ b/openlane/sdram/config.tcl
@@ -9,7 +9,7 @@
 
 # Timing configuration
 set ::env(CLOCK_PERIOD) "10"
-set ::env(CLOCK_PORT) "wb_clk_i sdram_clk sdram_pad_clk"
+set ::env(CLOCK_PORT) "wb_clk_i sdram_clk"
 
 
 # Sources
@@ -34,6 +34,10 @@
 
 set ::env(LEC_ENABLE) 0
 
+set ::env(VDD_PIN) [list {vccd1}]
+set ::env(GND_PIN) [list {vssd1}]
+
+
 # Floorplanning
 # -------------
 
@@ -45,7 +49,7 @@
 
 
 set ::env(FP_PDN_VPITCH) 50
-set ::env(PDN_CFG) $script_dir/pdn.tcl
+#set ::env(PDN_CFG) $script_dir/pdn.tcl
 
 set ::env(FP_VERTICAL_HALO) 6
 set ::env(PL_TARGET_DENSITY) 0.52
diff --git a/openlane/sdram/pin_order.cfg b/openlane/sdram/pin_order.cfg
index 08d9668..8f3bcb1 100644
--- a/openlane/sdram/pin_order.cfg
+++ b/openlane/sdram/pin_order.cfg
@@ -3,50 +3,101 @@
 
 #W
 wb_clk_i            0000 0
-wb_rst_i            0000 1
+wb_rst_n            0000 1
 
 
 
 #N
-sdr_cas_n           0000 0
-sdr_cke             0000 1
-sdr_cs_n            0000 2
-sdr_dqm             0000 3
-sdr_ras_n           0000 4
-sdr_we_n            0000 5
-sdr_addr\[12\]      0000 6
-sdr_addr\[11\]      0000 7
-sdr_addr\[10\]      0000 8
-sdr_addr\[9\]      0000 9
-sdr_addr\[8\]      0000 10
-sdr_addr\[7\]      0000 11
-sdr_addr\[6\]      0000 12
-sdr_addr\[5\]      0000 13
-sdr_addr\[4\]      0000 14
-sdr_addr\[3\]      0000 15
-sdr_addr\[2\]      0000 16
-sdr_addr\[1\]      0000 17
-sdr_addr\[0\]      0000 18
-sdr_ba\[1\]        0000 19
-sdr_ba\[0\]        0000 20
-pad_sdr_din\[7\]   0000 21
-pad_sdr_din\[6\]   0000 22
-pad_sdr_din\[5\]   0000 23
-pad_sdr_din\[4\]   0000 24
-pad_sdr_din\[3\]   0000 25
-pad_sdr_din\[2\]   0000 26
-pad_sdr_din\[1\]   0000 27
-pad_sdr_din\[0\]   0000 28
-sdr_dout\[7\]      0000 29
-sdr_dout\[6\]      0000 30
-sdr_dout\[5\]      0000 31
-sdr_dout\[4\]      0000 32
-sdr_dout\[3\]      0000 33
-sdr_dout\[2\]      0000 34
-sdr_dout\[1\]      0000 35
-sdr_dout\[0\]      0000 36
-sdr_den_n          0000 37 
-sdram_pad_clk      0000 38
+io_oeb\[29\]  
+io_out\[29\]        
+io_in\[29\]         
+io_oeb\[28\]  
+io_out\[28\]        
+io_in\[28\]         
+io_oeb\[27\]  
+io_out\[27\]        
+io_in\[27\]         
+io_oeb\[26\]  
+io_out\[26\]        
+io_in\[26\]         
+io_oeb\[25\]  
+io_out\[25\]        
+io_in\[25\]         
+io_oeb\[24\]  
+io_out\[24\]        
+io_in\[24\]         
+io_oeb\[23\]  
+io_out\[23\]        
+io_in\[23\]         
+io_oeb\[22\]  
+io_out\[22\]        
+io_in\[22\]         
+io_oeb\[21\]  
+io_out\[21\]        
+io_in\[21\]         
+io_oeb\[20\]  
+io_out\[20\]        
+io_in\[20\]         
+io_oeb\[19\]  
+io_out\[19\]        
+io_in\[19\]         
+io_oeb\[18\]  
+io_out\[18\]        
+io_in\[18\]         
+io_oeb\[17\]  
+io_out\[17\]        
+io_in\[17\]         
+io_oeb\[16\]  
+io_out\[16\]        
+io_in\[16\]         
+io_oeb\[15\]  
+io_out\[15\]        
+io_in\[15\]         
+io_oeb\[14\]  
+io_out\[14\]        
+io_in\[14\]         
+io_oeb\[13\]  
+io_out\[13\]        
+io_in\[13\]         
+io_oeb\[12\]  
+io_out\[12\]        
+io_in\[12\]         
+io_oeb\[11\]  
+io_out\[11\]        
+io_in\[11\]         
+io_oeb\[10\]  
+io_out\[10\]        
+io_in\[10\]         
+io_oeb\[9\]  
+io_out\[9\]        
+io_in\[9\]         
+io_oeb\[8\]  
+io_out\[8\]        
+io_in\[8\]         
+io_oeb\[7\]  
+io_out\[7\]        
+io_in\[7\]         
+io_oeb\[6\]  
+io_out\[6\]        
+io_in\[6\]         
+io_oeb\[5\]  
+io_out\[5\]        
+io_in\[5\]         
+io_oeb\[4\]  
+io_out\[4\]        
+io_in\[4\]         
+io_oeb\[3\]  
+io_out\[3\]        
+io_in\[3\]         
+io_oeb\[2\]  
+io_out\[2\]        
+io_in\[2\]         
+io_oeb\[1\]  
+io_out\[1\]        
+io_in\[1\]         
+io_oeb\[0\]  
+io_out\[0\]        
+io_in\[0\]         
 
 
 #E
@@ -218,6 +269,3 @@
 wb_dat_o\[0\]     0000 101
 wb_ack_o          0000 102
 wb_cyc_i          0000 103
-wb_cti_i\[2]      0000 104
-wb_cti_i\[1]      0000 105
-wb_cti_i\[0]      0000 106
diff --git a/openlane/spi_master/config.tcl b/openlane/spi_master/config.tcl
index 4308ae6..c7cb2cb 100755
--- a/openlane/spi_master/config.tcl
+++ b/openlane/spi_master/config.tcl
@@ -29,6 +29,10 @@
 
 set ::env(LEC_ENABLE) 0
 
+set ::env(VDD_PIN) [list {vccd1}]
+set ::env(GND_PIN) [list {vssd1}]
+
+
 # Floorplanning
 # -------------
 
@@ -40,7 +44,7 @@
 
 
 set ::env(FP_PDN_VPITCH) 50
-set ::env(PDN_CFG) $script_dir/pdn.tcl
+#set ::env(PDN_CFG) $script_dir/pdn.tcl
 
 set ::env(FP_VERTICAL_HALO) 6
 set ::env(PL_TARGET_DENSITY) 0.52
diff --git a/openlane/spi_master/pin_order.cfg b/openlane/spi_master/pin_order.cfg
index 99a192d..6d3c721 100644
--- a/openlane/spi_master/pin_order.cfg
+++ b/openlane/spi_master/pin_order.cfg
@@ -1,7 +1,7 @@
 #BUS_SORT
 #MANUAL_PLACE
 
-#E
+#W
 mclk                   0000 0
 rst_n                  0000 1
 events_o\[1\]          0000 2
@@ -9,22 +9,24 @@
 
 
 #N
-spi_mode\[1\]          0000 0
-spi_mode\[0\]          0000 1
-spi_clk                0000 2
-spi_csn0               0000 3
-spi_csn1               0000 4
-spi_csn2               0000 5
-spi_csn3               0000 6
-spi_en_tx              0000 7
-spi_sdi0               0000 8
-spi_sdi1               0000 9
-spi_sdi2               0000 10
-spi_sdi3               0000 11
-spi_sdo0               0000 12
-spi_sdo1               0000 13
-spi_sdo2               0000 14
-spi_sdo3               0000 15
+io_in\[5\]             0000 0
+io_out\[5\]        
+io_oeb\[5\]  
+io_in\[4\]         
+io_out\[4\]        
+io_oeb\[4\]  
+io_in\[3\]         
+io_out\[3\]        
+io_oeb\[3\]  
+io_in\[2\]         
+io_out\[2\]        
+io_oeb\[2\]  
+io_in\[1\]         
+io_out\[1\]        
+io_oeb\[1\]  
+io_in\[0\]         
+io_out\[0\]        
+io_oeb\[0\]  
 
 
 #S
diff --git a/openlane/syntacore/config.tcl b/openlane/syntacore/config.tcl
index 1b74046..1b4c673 100755
--- a/openlane/syntacore/config.tcl
+++ b/openlane/syntacore/config.tcl
@@ -55,6 +55,10 @@
 
 set ::env(LEC_ENABLE) 0
 
+set ::env(VDD_PIN) [list {vccd1}]
+set ::env(GND_PIN) [list {vssd1}]
+
+
 # --------
 # Floorplanning
 # -------------
@@ -68,7 +72,7 @@
 
 
 set ::env(FP_PDN_VPITCH) 50
-set ::env(PDN_CFG) $script_dir/pdn.tcl
+#set ::env(PDN_CFG) $script_dir/pdn.tcl
 
 set ::env(FP_VERTICAL_HALO) 6
 set ::env(PL_TARGET_DENSITY) 0.52
diff --git a/openlane/syntacore/pin_order.cfg b/openlane/syntacore/pin_order.cfg
index 9a84238..5f52899 100644
--- a/openlane/syntacore/pin_order.cfg
+++ b/openlane/syntacore/pin_order.cfg
@@ -60,8 +60,6 @@
 wb_rst_n          0000 1
 pwrup_rst_n       0000 2
 rst_n             0000 3
-test_mode         0000 4
-test_rst_n        0000 5
 
 #N
 wbd_imem_stb_o    0000 0
diff --git a/openlane/uart/config.tcl b/openlane/uart/config.tcl
index fd726c7..b0d2b84 100644
--- a/openlane/uart/config.tcl
+++ b/openlane/uart/config.tcl
@@ -35,6 +35,10 @@
 
 set ::env(LEC_ENABLE) 0
 
+set ::env(VDD_PIN) [list {vccd1}]
+set ::env(GND_PIN) [list {vssd1}]
+
+
 # Floorplanning
 # -------------
 
@@ -46,7 +50,7 @@
 
 
 set ::env(FP_PDN_VPITCH) 50
-set ::env(PDN_CFG) $script_dir/pdn.tcl
+#set ::env(PDN_CFG) $script_dir/pdn.tcl
 
 set ::env(FP_VERTICAL_HALO) 6
 set ::env(PL_TARGET_DENSITY) 0.52
diff --git a/openlane/uart/pin_order.cfg b/openlane/uart/pin_order.cfg
index 218a647..248595c 100644
--- a/openlane/uart/pin_order.cfg
+++ b/openlane/uart/pin_order.cfg
@@ -3,9 +3,13 @@
 
 #S
 app_clk                0000 0
-arst_n                 0000 1
-si                     0000 2
-so                     0000 3
+arst_n                 
+io_in\[1\]             
+io_out\[1\]             
+io_oeb\[1\]             
+io_in\[0\]             
+io_out\[0\]             
+io_oeb\[0\]             
 
 #N
 reg_cs                 0000 0
diff --git a/openlane/user_project_wrapper/config.tcl b/openlane/user_project_wrapper/config.tcl
index 5a67c33..eee22e7 100644
--- a/openlane/user_project_wrapper/config.tcl
+++ b/openlane/user_project_wrapper/config.tcl
@@ -55,6 +55,7 @@
         $script_dir/../../verilog/gl/glbl_cfg.v     \
         $script_dir/../../verilog/gl/uart.v     \
 	$script_dir/../../verilog/gl/sdram.v \
+	$script_dir/../../verilog/gl/wb_host.v \
 	$script_dir/../../verilog/gl/syntacore.v \
 	"
 
@@ -64,6 +65,7 @@
 	$lef_root/wb_interconnect.lef \
 	$lef_root/sdram.lef \
 	$lef_root/uart.lef \
+	$lef_root/wb_host.lef \
 	$lef_root/syntacore.lef \
 	"
 
@@ -73,6 +75,7 @@
 	$gds_root/wb_interconnect.gds \
 	$gds_root/uart.gds \
 	$gds_root/sdram.gds \
+	$gds_root/wb_host.gds \
 	$gds_root/syntacore.gds \
 	"
 
@@ -80,67 +83,26 @@
 
 set ::env(VERILOG_INCLUDE_DIRS) [glob $script_dir/../../verilog/rtl/syntacore/scr1/src/includes $script_dir/../../verilog/rtl/sdram_ctrl/src/defs ]
 
+set ::env(GLB_RT_MAXLAYER) 4
+
+set ::env(FP_PDN_CHECK_NODES) 0
+
+set ::env(VDD_PIN) [list {vccd1}]
+set ::env(GND_PIN) [list {vssd1}]
 
 
 # The following is because there are no std cells in the example wrapper project.
 #set ::env(SYNTH_TOP_LEVEL) 1
-set ::env(PL_BASIC_PLACEMENT) 1
+set ::env(PL_RANDOM_GLB_PLACEMENT) 1
 
-# Important for large macro placement
-set ::env(PL_DIAMOND_SEARCH_HEIGHT) "400"
-set ::env(ROUTING_OPT_ITERS) "20"
-
-set ::env(GLB_RT_ALLOW_CONGESTION) 1
-set ::env(GLB_RT_MAXLAYER) 5
-set ::env(GLB_RT_MINLAYER) 2
-set ::env(GLB_RT_ADJUSTMENT) 0.45
-set ::env(GENERATE_FINAL_SUMMARY_REPORT) 1
-set ::env(SYNTH_READ_BLACKBOX_LIB) 1
-set ::env(FP_PDN_CHECK_NODES) 0
-# This makes sure that the core rings are outside the boundaries
-# of your block.
-set ::env(MAGIC_ZEROIZE_ORIGIN) 0
-
-# Area Configurations. DON'T TOUCH.
-set ::env(FP_SIZING) absolute
-set ::env(DIE_AREA) "0 0 2920 3520"
-
-set ::env(RUN_CVC) 0
-
-# Pin Configurations. DON'T TOUCH
-set ::env(FP_PIN_ORDER_CFG) $script_dir/pin_order.cfg
-
-set ::unit 2.4
-set ::env(FP_IO_VEXTEND) [expr 2*$::unit]
-set ::env(FP_IO_HEXTEND) [expr 2*$::unit]
-set ::env(FP_IO_VLENGTH) $::unit
-set ::env(FP_IO_HLENGTH) $::unit
-
-set ::env(FP_IO_VTHICKNESS_MULT) 4
-set ::env(FP_IO_HTHICKNESS_MULT) 4
-
-# Power & Pin Configurations. DON'T TOUCH.
-set ::env(FP_PDN_CORE_RING) 1
-set ::env(FP_PDN_CORE_RING_VWIDTH) 3
-set ::env(FP_PDN_CORE_RING_HWIDTH) $::env(FP_PDN_CORE_RING_VWIDTH)
-set ::env(FP_PDN_CORE_RING_VOFFSET) 14
-set ::env(FP_PDN_CORE_RING_HOFFSET) $::env(FP_PDN_CORE_RING_VOFFSET)
-set ::env(FP_PDN_CORE_RING_VSPACING) 1.7
-set ::env(FP_PDN_CORE_RING_HSPACING) $::env(FP_PDN_CORE_RING_VSPACING)
-
-set ::env(FP_PDN_VWIDTH) 3
-set ::env(FP_PDN_HWIDTH) 3
-set ::env(FP_PDN_VOFFSET) 5
-set ::env(FP_PDN_HOFFSET) $::env(FP_PDN_VOFFSET)
-set ::env(FP_PDN_VPITCH) 180
-set ::env(FP_PDN_HPITCH) $::env(FP_PDN_VPITCH)
-set ::env(FP_PDN_VSPACING) [expr 5*$::env(FP_PDN_CORE_RING_VWIDTH)]
-set ::env(FP_PDN_HSPACING) [expr 5*$::env(FP_PDN_CORE_RING_HWIDTH)]
-set ::env(VDD_NETS) [list {vccd1} {vccd2} {vdda1} {vdda2}]
-set ::env(GND_NETS) [list {vssd1} {vssd2} {vssa1} {vssa2}]
-set ::env(SYNTH_USE_PG_PINS_DEFINES) "USE_POWER_PINS"
+set ::env(PL_RESIZER_DESIGN_OPTIMIZATIONS) 0
+set ::env(PL_RESIZER_TIMING_OPTIMIZATIONS) 0
+set ::env(PL_RESIZER_BUFFER_INPUT_PORTS) 0
+set ::env(PL_RESIZER_BUFFER_OUTPUT_PORTS) 0
 
 set ::env(DIODE_INSERTION_STRATEGY) 0
 set ::env(FILL_INSERTION) 0
 set ::env(TAP_DECAP_INSERTION) 0
 set ::env(CLOCK_TREE_SYNTH) 0
+
+set ::env(PL_DIAMOND_SEARCH_HEIGHT) "250"
diff --git a/openlane/user_project_wrapper/macro.cfg b/openlane/user_project_wrapper/macro.cfg
index 901e853..26d4b30 100644
--- a/openlane/user_project_wrapper/macro.cfg
+++ b/openlane/user_project_wrapper/macro.cfg
@@ -1,7 +1,7 @@
-u_core.u_riscv_top	       300	       300	       N
-u_core.u_glbl_cfg              2000            2200            N
-u_core.u_uart_core             2000            1100            N
-u_core.u_intercon              300             1800            N
-u_core.u_spi_master            300             2200            N
-u_core.u_sdram_ctrl            1000            2200            N
-u_core.u_glbl_cfg              2000            2200            N
+u_core.u_riscv_top	       300	       800	       N
+u_core.u_glbl_cfg              2000            2700            N
+u_core.u_uart_core             2000            1600            N
+u_core.u_intercon              300             2300            N
+u_core.u_spi_master            300             2700            N
+u_core.u_sdram_ctrl            1000            2700            N
+u_core.u_wb_host               300             300             N
diff --git a/openlane/wb_interconnect/config.tcl b/openlane/wb_interconnect/config.tcl
index b7f7a50..144a5f2 100755
--- a/openlane/wb_interconnect/config.tcl
+++ b/openlane/wb_interconnect/config.tcl
@@ -30,6 +30,10 @@
 
 set ::env(LEC_ENABLE) 0
 
+set ::env(VDD_PIN) [list {vccd1}]
+set ::env(GND_PIN) [list {vssd1}]
+
+
 # Floorplanning
 # -------------
 
@@ -43,7 +47,7 @@
 
 
 set ::env(FP_PDN_VPITCH) 50
-set ::env(PDN_CFG) $script_dir/pdn.tcl
+#set ::env(PDN_CFG) $script_dir/pdn.tcl
 
 set ::env(FP_VERTICAL_HALO) 6
 set ::env(PL_TARGET_DENSITY) 0.32
diff --git a/openlane/wb_interconnect/pin_order.cfg b/openlane/wb_interconnect/pin_order.cfg
index ae72f2a..120e132 100644
--- a/openlane/wb_interconnect/pin_order.cfg
+++ b/openlane/wb_interconnect/pin_order.cfg
@@ -248,7 +248,6 @@
 s3_wbd_dat_i\[1\]   
 s3_wbd_dat_i\[0\]   
 s3_wbd_ack_i        
-s3_wbd_err_i        
 s3_wbd_cyc_o        
 
 #N
@@ -355,7 +354,6 @@
 s0_wbd_dat_i\[1\]   
 s0_wbd_dat_i\[0\]   
 s0_wbd_ack_i        
-s0_wbd_err_i        
 s0_wbd_cyc_o        
 
 s1_wbd_stb_o        0700 0 2
@@ -461,7 +459,6 @@
 s1_wbd_dat_i\[1\]   
 s1_wbd_dat_i\[0\]   
 s1_wbd_ack_i        
-s1_wbd_err_i        
 s1_wbd_cyc_o        
 
 s2_wbd_stb_o        1700 0 2
@@ -543,7 +540,6 @@
 s2_wbd_dat_i\[1\]   
 s2_wbd_dat_i\[0\]   
 s2_wbd_ack_i        
-s2_wbd_err_i        
 s2_wbd_cyc_o        
 
 #W
diff --git a/signoff/glbl_cfg/final_summary_report.csv b/signoff/glbl_cfg/final_summary_report.csv
index 5c5c658..f364c36 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,0h4m40s,0h2m46s,47033.33333333334,0.12,23516.66666666667,42,522.13,2822,0,0,0,0,0,0,0,1,0,0,0,164974,23877,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,130499422,0.0,42.48,45.14,4.0,3.21,-1,2676,2872,476,672,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,50,153.18,0.52,0,sky130_fd_sc_hd,4,4
+0,/project/openlane/glbl_cfg,glbl_cfg,glbl_cfg,Flow_completed,0h4m54s,0h2m58s,47033.33333333334,0.12,23516.66666666667,42,525.0,2822,0,0,0,0,0,0,0,3,0,0,0,164082,23983,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,130105462,0.0,39.84,44.17,6.3,5.77,-1,2676,2872,476,672,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,50,153.18,0.52,0,sky130_fd_sc_hd,4,4
diff --git a/signoff/sdram/final_summary_report.csv b/signoff/sdram/final_summary_report.csv
index 5551aa2..7679060 100644
--- a/signoff/sdram/final_summary_report.csv
+++ b/signoff/sdram/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/sdram,sdrc_top,sdram,Flow_completed,0h8m17s,0h4m3s,37154.28571428572,0.35,18577.14285714286,29,627.36,6502,0,0,0,0,0,0,0,3,0,0,0,319648,53184,-0.56,-0.56,-0.51,-0.51,-0.52,-16.15,-16.15,-67.68,-67.68,-85.83,250181986,0.0,36.08,22.35,5.09,1.65,-1,6477,6647,1150,1320,0,0,0,6502,131,107,82,107,352,213,29,2197,1190,1123,28,350,4248,0,4598,95.05703422053233,10.52,10,AREA 0,5,50,1,50,153.18,0.52,0,sky130_fd_sc_hd,4,4
+0,/project/openlane/sdram,sdrc_top,sdram,Flow_completed,0h9m0s,0h4m10s,37194.28571428572,0.35,18597.14285714286,29,615.55,6509,0,0,0,0,0,0,0,1,0,0,0,317021,52641,-3.59,-3.59,-3.59,-3.59,-4.69,-3.59,-3.59,-3.59,-3.59,-4.69,248911505,0.0,35.34,22.72,5.59,0.95,-1,6444,6672,1140,1368,0,0,0,6509,132,107,80,108,350,212,30,2197,1189,1088,29,350,4248,0,4598,68.07351940095302,14.690000000000001,10,AREA 0,5,50,1,50,153.18,0.52,0,sky130_fd_sc_hd,4,4
diff --git a/signoff/spi_master/final_summary_report.csv b/signoff/spi_master/final_summary_report.csv
index 542e54d..4cb3b80 100644
--- a/signoff/spi_master/final_summary_report.csv
+++ b/signoff/spi_master/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/spi_master,spim_top,spi_master,Flow_completed,0h7m25s,0h4m9s,25650.0,0.24,12825.0,22,565.22,3078,0,0,0,0,0,0,0,0,0,0,0,192520,29838,-3.48,-3.48,-4.12,-4.12,-4.63,-122.15,-122.15,-1022.65,-1022.65,-1261.37,148845920,0.0,20.22,26.73,1.11,10.26,-1,3056,3154,447,545,0,0,0,3078,85,0,94,81,1122,89,19,921,527,463,28,424,2889,0,3313,68.35269993164731,14.629999999999999,10,AREA 0,4,50,1,50,153.18,0.52,0,sky130_fd_sc_hd,4,4
+0,/project/openlane/spi_master,spim_top,spi_master,Flow_completed,0h6m23s,0h3m50s,25416.66666666667,0.24,12708.333333333336,22,570.17,3050,0,0,0,0,0,0,0,1,0,0,0,180296,28569,-1.48,-1.48,-1.98,-1.98,-2.67,-86.69,-86.69,-451.23,-451.23,-670.86,140719500,0.0,19.19,26.08,0.87,7.44,-1,3016,3128,433,545,0,0,0,3050,83,0,92,79,1118,89,19,920,527,458,28,424,2889,0,3313,78.92659826361484,12.67,10,AREA 0,4,50,1,50,153.18,0.52,0,sky130_fd_sc_hd,4,4
diff --git a/signoff/syntacore/final_summary_report.csv b/signoff/syntacore/final_summary_report.csv
index 03edd3a..e34d613 100644
--- a/signoff/syntacore/final_summary_report.csv
+++ b/signoff/syntacore/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/syntacore,scr1_top_wb,syntacore,Flow_completed,0h49m35s,0h23m51s,34500.0,1.8,17250.0,25,1233.35,31050,0,0,0,0,0,0,0,17,2,0,0,1859813,273688,-0.26,-0.26,-0.4,-0.4,-0.54,-9.62,-9.62,-22.88,-22.88,-28.71,1563068607,0.0,35.03,24.43,12.75,3.82,-1,30938,31176,2811,3049,0,0,0,31050,619,0,692,2059,4036,2095,1327,7438,2842,2789,96,866,22836,0,23702,94.87666034155599,10.54,10,AREA 0,4,50,1,50,153.18,0.52,0,sky130_fd_sc_hd,4,4
+0,/project/openlane/syntacore,scr1_top_wb,syntacore,Flow_completed,0h51m0s,0h23m39s,34493.333333333336,1.8,17246.666666666668,25,1236.48,31044,0,0,0,0,0,0,0,7,2,0,0,1867015,273721,-0.26,-0.26,-0.42,-0.42,-0.49,-9.62,-9.62,-26.28,-26.28,-27.81,1569371612,0.0,34.83,24.33,13.44,3.98,-1,30930,31168,2806,3044,0,0,0,31044,619,0,692,2060,4036,2095,1327,7433,2838,2786,95,866,22836,0,23702,95.32888465204957,10.49,10,AREA 0,4,50,1,50,153.18,0.52,0,sky130_fd_sc_hd,4,4
diff --git a/signoff/uart/final_summary_report.csv b/signoff/uart/final_summary_report.csv
index 2c9f3d3..d32ec61 100644
--- a/signoff/uart/final_summary_report.csv
+++ b/signoff/uart/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/uart,uart_core,uart,Flow_completed,0h4m18s,0h2m37s,43383.333333333336,0.12,21691.666666666668,35,514.21,2603,0,0,0,0,0,0,0,0,0,0,0,95167,20189,-0.54,-0.54,-0.48,-0.48,-0.73,-37.39,-37.39,-32.51,-32.51,-55.78,71078085,0.0,24.29,28.78,0.57,1.17,-1,2604,2621,453,470,0,0,0,2603,56,0,29,41,183,125,26,685,435,396,18,278,1410,0,1688,93.19664492078284,10.73,10,AREA 0,5,50,1,50,153.18,0.52,0,sky130_fd_sc_hd,4,4
+0,/project/openlane/uart,uart_core,uart,Flow_completed,0h5m14s,0h3m20s,43433.333333333336,0.12,21716.666666666668,35,511.72,2606,0,0,0,0,0,0,0,0,0,0,0,95298,20096,-0.57,-0.57,-0.5,-0.5,-0.71,-40.55,-40.55,-33.82,-33.82,-56.54,70681058,0.0,25.01,28.03,0.33,2.03,-1,2605,2625,454,474,0,0,0,2606,59,0,30,41,182,125,26,685,435,396,16,278,1410,0,1688,93.37068160597572,10.71,10,AREA 0,5,50,1,50,153.18,0.52,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 7e4defc..1eda607 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,0h42m47s,0h4m57s,38.33281444582815,10.2784,19.166407222914074,0,578.02,197,0,0,0,0,0,0,98674,15,225,-1,13,661124,2948,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,655217497,0.0,1.25,5.09,0.4,2.03,-1,693,1311,684,1302,0,0,0,197,0,0,0,0,0,0,0,0,2,2,1,0,0,0,0,100.0,10.0,10,AREA 0,5,50,1,180,180,0.55,0.45,sky130_fd_sc_hd,4,0
+0,/project/openlane/user_project_wrapper,user_project_wrapper,user_project_wrapper,Flow_completed,0h48m32s,0h6m22s,3.1133250311332503,10.2784,1.5566625155666252,0,574.53,16,0,0,0,0,0,0,65,0,23,-1,6,1272729,5759,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-1,0.0,2.81,4.04,0.21,1.09,-1,852,1470,843,1461,0,0,0,16,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_interconnect/final_summary_report.csv b/signoff/wb_interconnect/final_summary_report.csv
index 3eb297f..fcbedf8 100644
--- a/signoff/wb_interconnect/final_summary_report.csv
+++ b/signoff/wb_interconnect/final_summary_report.csv
@@ -1,2 +1,2 @@
 ,design,design_name,config,flow_status,total_runtime,routed_runtime,(Cell/mm^2)/Core_Util,DIEAREA_mm^2,CellPer_mm^2,OpenDP_Util,Peak_Memory_Usage_MB,cell_count,tritonRoute_violations,Short_violations,MetSpc_violations,OffGrid_violations,MinHole_violations,Other_violations,Magic_violations,antenna_violations,lvs_total_errors,cvc_total_errors,klayout_violations,wire_length,vias,wns,pl_wns,optimized_wns,fastroute_wns,spef_wns,tns,pl_tns,optimized_tns,fastroute_tns,spef_tns,HPWL,routing_layer1_pct,routing_layer2_pct,routing_layer3_pct,routing_layer4_pct,routing_layer5_pct,routing_layer6_pct,wires_count,wire_bits,public_wires_count,public_wire_bits,memories_count,memory_bits,processes_count,cells_pre_abc,AND,DFF,NAND,NOR,OR,XOR,XNOR,MUX,inputs,outputs,level,EndCaps,TapCells,Diodes,Total_Physical_Cells,suggested_clock_frequency,suggested_clock_period,CLOCK_PERIOD,SYNTH_STRATEGY,SYNTH_MAX_FANOUT,FP_CORE_UTIL,FP_ASPECT_RATIO,FP_PDN_VPITCH,FP_PDN_HPITCH,PL_TARGET_DENSITY,GLB_RT_ADJUSTMENT,STD_CELL_LIBRARY,CELL_PAD,DIODE_INSERTION_STRATEGY
-0,/project/openlane/wb_interconnect,wb_interconnect,wb_interconnect,Flow_completed,0h6m17s,0h2m46s,6500.0,0.4,3250.0,6,540.84,1300,0,0,0,0,0,0,0,9,0,0,0,465926,16959,0.0,0.0,0.0,0.0,-0.04,0.0,0.0,0.0,0.0,-0.04,407751231,0.0,46.13,11.88,29.14,0.34,-1,1054,1627,210,783,0,0,0,1300,247,0,75,14,115,0,0,181,436,422,10,130,4719,0,4849,99.60159362549801,10.04,10,AREA 0,4,50,1,50,153.18,0.32,0,sky130_fd_sc_hd,4,4
+0,/project/openlane/wb_interconnect,wb_interconnect,wb_interconnect,Flow_completed,0h7m29s,0h3m50s,6465.0,0.4,3232.5,6,563.65,1293,0,0,0,0,0,0,0,9,0,0,0,468040,17506,0.0,0.0,0.0,0.0,-1.15,0.0,0.0,0.0,0.0,-29.57,415332616,0.0,44.92,11.38,31.98,0.1,-1,1043,1616,204,777,0,0,0,1293,244,0,75,15,111,0,0,180,431,418,11,130,4719,0,4849,89.68609865470852,11.15,10,AREA 0,4,50,1,50,153.18,0.32,0,sky130_fd_sc_hd,4,4
diff --git a/verilog/dv/risc_boot/risc_boot.c b/verilog/dv/risc_boot/risc_boot.c
index 1ceec26..dadfcab 100644
--- a/verilog/dv/risc_boot/risc_boot.c
+++ b/verilog/dv/risc_boot/risc_boot.c
@@ -20,7 +20,8 @@
 #include "verilog/dv/caravel/stub.c"
 
 // User Project Slaves (0x3000_0000)
-#define reg_mprj_slave (*(volatile uint32_t*)0x30000000)
+
+#define reg_mprj_wbhost_reg0 (*(volatile uint32_t*)0x30800000)
 
 #define reg_mprj_globl_reg0  (*(volatile uint32_t*)0x30000000)
 #define reg_mprj_globl_reg1  (*(volatile uint32_t*)0x30000004)
@@ -167,6 +168,10 @@
      /* Apply configuration */
     reg_mprj_xfer = 1;
     while (reg_mprj_xfer == 1);
+
+    // Remove Wishbone Reset
+    reg_mprj_wbhost_reg0 = 0x1;
+
     // SDRAM Config-2
     reg_mprj_globl_reg5  = 0x100019E; 
 
@@ -174,8 +179,9 @@
     // SDRAM Config-1
     reg_mprj_globl_reg4  = 0x2F172242;
 
-    // Wake Up CPU Core
-    reg_mprj_globl_reg0  = 0x07; 
+    // Remove All Reset
+    reg_mprj_wbhost_reg0 = 0xF;
+
 
     // configure the user uart
     reg_mprj_uart_reg0  = 0x7;
diff --git a/verilog/dv/user_risc_boot/Makefile b/verilog/dv/user_risc_boot/Makefile
index d2bccea..8c55f5e 100644
--- a/verilog/dv/user_risc_boot/Makefile
+++ b/verilog/dv/user_risc_boot/Makefile
@@ -54,12 +54,12 @@
 vvp:  ${PATTERN:=.vvp}
 
 %.vvp: %_tb.v
-	riscv64-unknown-elf-gcc -O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las  -D__RVC_EXT -static -std=gnu99 -fno-common -fno-builtin-printf -DTCM=1 -Wa,-march=rv32imc -march=rv32imc -mabi=ilp32 -DFLAGS_STR=\""-O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las "\"  -c -I./ -I../../rtl/syntacore/scr1/sim/tests/common  user_uart.c -o user_uart.o
+	riscv64-unknown-elf-gcc -O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las  -D__RVC_EXT -static -std=gnu99 -fno-common -fno-builtin-printf -DTCM=1 -Wa,-march=rv32imc -march=rv32imc -mabi=ilp32 -DFLAGS_STR=\""-O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las "\"  -c -I./ -I../../rtl/syntacore/scr1/sim/tests/common  user_risc_boot.c -o user_risc_boot.o
 	riscv64-unknown-elf-gcc -O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las  -D__RVC_EXT -static -std=gnu99 -fno-common -fno-builtin-printf -DTCM=1 -Wa,-march=rv32imc -march=rv32imc -mabi=ilp32 -DFLAGS_STR=\""-O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las "\"  -D__ASSEMBLY__=1 -c -I./ -I../../rtl/syntacore/scr1/sim/tests/common/  ../../rtl/syntacore/scr1/sim/tests/common/crt_tcm.S -o crt_tcm.o
-	riscv64-unknown-elf-gcc -o user_uart.elf -T ../../rtl/syntacore/scr1/sim/tests/common/link_tcm.ld user_uart.o crt_tcm.o -nostartfiles -nostdlib -lc -lgcc -march=rv32imc -mabi=ilp32
-	riscv64-unknown-elf-objcopy -O verilog user_uart.elf user_uart.hex
-	riscv64-unknown-elf-objdump -D user_uart.elf > user_uart.dump
-	rm crt_tcm.o user_uart.o
+	riscv64-unknown-elf-gcc -o user_risc_boot.elf -T ../../rtl/syntacore/scr1/sim/tests/common/link_tcm.ld user_risc_boot.o crt_tcm.o -nostartfiles -nostdlib -lc -lgcc -march=rv32imc -mabi=ilp32
+	riscv64-unknown-elf-objcopy -O verilog user_risc_boot.elf user_risc_boot.hex
+	riscv64-unknown-elf-objdump -D user_risc_boot.elf > user_risc_boot.dump
+	rm crt_tcm.o user_risc_boot.o
 ifeq ($(SIM),RTL)
 	iverilog -g2005-sv -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
 	-I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) \
diff --git a/verilog/dv/user_risc_boot/run_iverilog b/verilog/dv/user_risc_boot/run_iverilog
index 1d8298d..d2520fa 100755
--- a/verilog/dv/user_risc_boot/run_iverilog
+++ b/verilog/dv/user_risc_boot/run_iverilog
@@ -11,7 +11,7 @@
 rm crt_tcm.o user_risc_boot.o
 
 #iverilog with waveform dump
-#iverilog -g2005-sv -DWFDUMP -I $PDK_PATH -I ../ -I ../../../verilog/rtl -I ../../../verilog/rtl/syntacore/scr1/src/includes   -I ../../../verilog/rtl/sdram_ctrl/src/defs -I $$CARAVEL_ROOT/verilog/dv/caravel -I ../model user_risc_boot_tb.v -o user_risc_boot_tb.vvp
+#iverilog -g2005-sv -DWFDUMP -I $PDK_PATH -I ../ -I ../../../verilog/rtl -I ../../../verilog/rtl/syntacore/scr1/src/includes   -I ../../../verilog/rtl/sdram_ctrl/src/defs -I $CARAVEL_ROOT/verilog/dv/caravel -I ../model user_risc_boot_tb.v -o user_risc_boot_tb.vvp
 
 iverilog -g2005-sv -I $PDK_PATH -I ../ -I ../../../verilog/rtl -I ../../../verilog/rtl/syntacore/scr1/src/includes   -I ../../../verilog/rtl/sdram_ctrl/src/defs -I $CARAVEL_ROOT/verilog/dv/caravel -I ../model user_risc_boot_tb.v -o user_risc_boot_tb.vvp
 
diff --git a/verilog/dv/user_risc_boot/uprj_netlists.v b/verilog/dv/user_risc_boot/uprj_netlists.v
index 598170e..1668caa 100644
--- a/verilog/dv/user_risc_boot/uprj_netlists.v
+++ b/verilog/dv/user_risc_boot/uprj_netlists.v
@@ -14,8 +14,58 @@
 // SPDX-License-Identifier: Apache-2.0
 
 // Include caravel global defines for the number of the user project IO pads 
+`include "defines.v"
 `define USE_POWER_PINS
 
+`ifdef GL
+      `include "libs.ref/sky130_fd_sc_hd/verilog/primitives.v"
+      `include "libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd.v"
+      `include "libs.ref/sky130_fd_sc_hvl/verilog/primitives.v"
+      `include "libs.ref/sky130_fd_sc_hvl/verilog/sky130_fd_sc_hvl.v"
+
+      `include "digital_core/src/digital_core.sv"
+      `include "glbl_cfg.v"
+      `include "sdram.v"
+      `include "spi_master.v"
+      `include "uart.v"
+      `include "wb_interconnect.v"
+
+     `include "wb_host/src/wb_host.sv"
+     `include "lib/async_wb.sv"
+     `include "lib/registers.v"
+
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_hdu.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_tdu.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_ipic.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_csr.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_exu.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_ialu.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_idu.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_ifu.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_lsu.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_mprf.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_top.sv"
+     `include "syntacore/scr1/src/core/primitives/scr1_reset_cells.sv"
+     `include "syntacore/scr1/src/core/primitives/scr1_cg.sv"
+     `include "syntacore/scr1/src/core/scr1_clk_ctrl.sv"
+     `include "syntacore/scr1/src/core/scr1_tapc_shift_reg.sv"
+     `include "syntacore/scr1/src/core/scr1_tapc.sv"
+     `include "syntacore/scr1/src/core/scr1_tapc_synchronizer.sv"
+     `include "syntacore/scr1/src/core/scr1_core_top.sv"
+     `include "syntacore/scr1/src/core/scr1_dm.sv"
+     `include "syntacore/scr1/src/core/scr1_dmi.sv"
+     `include "syntacore/scr1/src/core/scr1_scu.sv"
+      
+     `include "syntacore/scr1/src/top/scr1_dmem_router.sv"
+     `include "syntacore/scr1/src/top/scr1_dp_memory.sv"
+     `include "syntacore/scr1/src/top/scr1_tcm.sv"
+     `include "syntacore/scr1/src/top/scr1_timer.sv"
+     `include "syntacore/scr1/src/top/scr1_dmem_wb.sv"
+     `include "syntacore/scr1/src/top/scr1_imem_wb.sv"
+     `include "syntacore/scr1/src/top/scr1_top_wb.sv"
+     `include "lib/sync_fifo.sv"
+     `include "lib/async_fifo.sv"  
+`else
      `include "spi_master/src/spim_top.sv"
      `include "spi_master/src/spim_regs.sv"
      `include "spi_master/src/spim_clkgen.sv"
@@ -46,6 +96,9 @@
      `include "digital_core/src/glbl_cfg.sv"
      `include "digital_core/src/digital_core.sv"
 
+     `include "wb_host/src/wb_host.sv"
+     `include "lib/async_wb.sv"
+
      `include "lib/wb_stagging.sv"
      `include "wb_interconnect/src/wb_arb.sv"
      `include "wb_interconnect/src/wb_interconnect.sv"
@@ -81,3 +134,6 @@
      `include "syntacore/scr1/src/top/scr1_imem_wb.sv"
      `include "syntacore/scr1/src/top/scr1_top_wb.sv"
      `include "lib/sync_fifo.sv"
+
+     `include "user_project_wrapper.v"
+`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 ea56e6b..fa08ddc 100644
--- a/verilog/dv/user_risc_boot/user_risc_boot_tb.v
+++ b/verilog/dv/user_risc_boot/user_risc_boot_tb.v
@@ -54,7 +54,7 @@
 
 `default_nettype none
 
-`timescale 1 ns / 1 ps
+`timescale 1 ns / 1 ns
 
 `include "uprj_netlists.v"
 `include "spiflash.v"
@@ -119,6 +119,9 @@
 	        repeat (10) @(posedge clock);
 		$display("Monitor: Standalone User Risc Boot Test Started");
 
+		   // Remove Wb Reset
+		   wb_user_core_write('h3080_0000,'h1);
+
 		#1;
 		//------------ SDRAM Config - 2
                 wb_user_core_write('h3000_0014,'h100_019E);
@@ -131,7 +134,7 @@
 	        repeat (2) @(posedge clock);
 		#1;
 		// Remove all the reset
-                wb_user_core_write('h3000_0000,'h7);
+                wb_user_core_write('h3080_0000,'hF);
 
 
 		// Repeat cycles of 1000 clock edges as needed to complete testbench
@@ -194,33 +197,27 @@
 		#100;
 		wb_rst_i <= 1'b0;	    	// Release reset
 	end
+wire USER_VDD1V8 = 1'b1;
+wire VSS = 1'b0;
 
-
- digital_core u_core(
+user_project_wrapper u_top(
 `ifdef USE_POWER_PINS
-    .vdda1(),	// User area 1 3.3V supply
-    .vdda2(),	// User area 2 3.3V supply
-    .vssa1(),	// User area 1 analog ground
-    .vssa2(),	// User area 2 analog ground
-    .vccd1(),	// User area 1 1.8V supply
-    .vccd2(),	// User area 2 1.8v supply
-    .vssd1(),	// User area 1 digital ground
-    .vssd2(),	// User area 2 digital ground
+    .vccd1(USER_VDD1V8),	// User area 1 1.8V supply
+    .vssd1(VSS),	// User area 1 digital ground
 `endif
     .wb_clk_i        (clock),  // System clock
     .user_clock2     (1'b1),  // Real-time clock
     .wb_rst_i        (wb_rst_i),  // Regular Reset signal
 
-    .wbd_ext_cyc_i   (wbd_ext_cyc_i),  // strobe/request
-    .wbd_ext_stb_i   (wbd_ext_stb_i),  // strobe/request
-    .wbd_ext_adr_i   (wbd_ext_adr_i),  // address
-    .wbd_ext_we_i    (wbd_ext_we_i),  // write
-    .wbd_ext_dat_i   (wbd_ext_dat_i),  // data output
-    .wbd_ext_sel_i   (wbd_ext_sel_i),  // byte enable
+    .wbs_cyc_i   (wbd_ext_cyc_i),  // strobe/request
+    .wbs_stb_i   (wbd_ext_stb_i),  // strobe/request
+    .wbs_adr_i   (wbd_ext_adr_i),  // address
+    .wbs_we_i    (wbd_ext_we_i),  // write
+    .wbs_dat_i   (wbd_ext_dat_i),  // data output
+    .wbs_sel_i   (wbd_ext_sel_i),  // byte enable
 
-    .wbd_ext_dat_o   (wbd_ext_dat_o),  // data input
-    .wbd_ext_ack_o   (wbd_ext_ack_o),  // acknowlegement
-    .wbd_ext_err_o   (wbd_ext_err_o),  // error
+    .wbs_dat_o   (wbd_ext_dat_o),  // data input
+    .wbs_ack_o   (wbd_ext_ack_o),  // acknowlegement
 
  
     // Logic Analyzer Signals
@@ -320,6 +317,7 @@
 input [31:0] data;
 begin
   repeat (1) @(posedge clock);
+  #1;
   wbd_ext_adr_i =address;  // address
   wbd_ext_we_i  ='h1;  // write
   wbd_ext_dat_i =data;  // data output
@@ -328,6 +326,7 @@
   wbd_ext_stb_i ='h1;  // strobe/request
   wait(wbd_ext_ack_o == 1);
   repeat (1) @(posedge clock);
+  #1;
   wbd_ext_cyc_i ='h0;  // strobe/request
   wbd_ext_stb_i ='h0;  // strobe/request
   wbd_ext_adr_i ='h0;  // address
@@ -345,6 +344,7 @@
 reg    [31:0] data;
 begin
   repeat (1) @(posedge clock);
+  #1;
   wbd_ext_adr_i =address;  // address
   wbd_ext_we_i  ='h0;  // write
   wbd_ext_dat_i ='0;  // data output
@@ -354,6 +354,7 @@
   wait(wbd_ext_ack_o == 1);
   data  = wbd_ext_dat_o;  
   repeat (1) @(posedge clock);
+  #1;
   wbd_ext_cyc_i ='h0;  // strobe/request
   wbd_ext_stb_i ='h0;  // strobe/request
   wbd_ext_adr_i ='h0;  // address
@@ -368,30 +369,22 @@
 
 
 
-////-----------------------------------------------------------------------------
-//// RISC IMEM amd DMEM Monitoring TASK
-////-----------------------------------------------------------------------------
-//logic [`SCR1_DMEM_AWIDTH-1:0]           core2imem_addr_o_r;           // DMEM address
-//logic [`SCR1_DMEM_AWIDTH-1:0]           core2dmem_addr_o_r;           // DMEM address
-//logic                                   core2dmem_cmd_o_r;
-//
-//`define RISC_CORE  user_risc_boot_tb.u_core.u_riscv_top.i_core_top
-//
-//always@(posedge `RISC_CORE.clk) begin
-//    if(`RISC_CORE.imem2core_req_ack_i && `RISC_CORE.core2imem_req_o)
-//          core2imem_addr_o_r <= `RISC_CORE.core2imem_addr_o;
-//
-//    if(`RISC_CORE.dmem2core_req_ack_i && `RISC_CORE.core2dmem_req_o) begin
-//          core2dmem_addr_o_r <= `RISC_CORE.core2dmem_addr_o;
-//          core2dmem_cmd_o_r  <= `RISC_CORE.core2dmem_cmd_o;
-//    end
-//
-//    if(`RISC_CORE.imem2core_resp_i !=0)
-//          $display("RISCV-DEBUG => IMEM ADDRESS: %x Read Data : %x Resonse: %x", core2imem_addr_o_r,`RISC_CORE.imem2core_rdata_i,`RISC_CORE.imem2core_resp_i);
-//    if((`RISC_CORE.dmem2core_resp_i !=0) && core2dmem_cmd_o_r)
-//          $display("RISCV-DEBUG => DMEM ADDRESS: %x Write Data: %x Resonse: %x", core2dmem_addr_o_r,`RISC_CORE.core2dmem_wdata_o,`RISC_CORE.dmem2core_resp_i);
-//    if((`RISC_CORE.dmem2core_resp_i !=0) && !core2dmem_cmd_o_r)
-//          $display("RISCV-DEBUG => DMEM ADDRESS: %x READ Data : %x Resonse: %x", core2dmem_addr_o_r,`RISC_CORE.dmem2core_rdata_i,`RISC_CORE.dmem2core_resp_i);
-//end
+`ifdef GL
+//-----------------------------------------------------------------------------
+// RISC IMEM amd DMEM Monitoring TASK
+//-----------------------------------------------------------------------------
+
+`define RISC_CORE  user_uart_tb.u_top.u_core.u_riscv_top
+
+always@(posedge `RISC_CORE.wb_clk) begin
+    if(`RISC_CORE.wbd_imem_ack_i)
+          $display("RISCV-DEBUG => IMEM ADDRESS: %x Read Data : %x", `RISC_CORE.wbd_imem_adr_o,`RISC_CORE.wbd_imem_dat_i);
+    if(`RISC_CORE.wbd_dmem_ack_i && `RISC_CORE.wbd_dmem_we_o)
+          $display("RISCV-DEBUG => DMEM ADDRESS: %x Write Data: %x Resonse: %x", `RISC_CORE.wbd_dmem_adr_o,`RISC_CORE.wbd_dmem_dat_o);
+    if(`RISC_CORE.wbd_dmem_ack_i && !`RISC_CORE.wbd_dmem_we_o)
+          $display("RISCV-DEBUG => DMEM ADDRESS: %x READ Data : %x Resonse: %x", `RISC_CORE.wbd_dmem_adr_o,`RISC_CORE.wbd_dmem_dat_i);
+end
+
+`endif
 endmodule
 `default_nettype wire
diff --git a/verilog/dv/user_uart/run_iverilog b/verilog/dv/user_uart/run_iverilog
index af95096..1badece 100755
--- a/verilog/dv/user_uart/run_iverilog
+++ b/verilog/dv/user_uart/run_iverilog
@@ -11,13 +11,13 @@
 rm crt_tcm.o user_uart.o
 
 #iverilog with waveform dump
-#iverilog -g2005-sv -DWFDUMP -I $PDK_PATH -I ../ -I ../../../verilog/rtl -I ../../../verilog/rtl/syntacore/scr1/src/includes   -I ../../../verilog/rtl/sdram_ctrl/src/defs -I $CARAVEL_ROOT/verilog/dv/caravel -I ../model -I ../agents user_uart_tb.v -o user_uart_tb.vvp
+iverilog -g2005-sv -DWFDUMP -I $PDK_PATH -I  ../../../caravel/verilog/rtl -I ../ -I ../../../verilog/rtl -I ../../../verilog/rtl/syntacore/scr1/src/includes   -I ../../../verilog/rtl/sdram_ctrl/src/defs -I $CARAVEL_ROOT/verilog/dv/caravel -I ../model -I ../agents user_uart_tb.v -o user_uart_tb.vvp
 
 
-iverilog -g2005-sv -I $PDK_PATH -I ../ -I ../../../verilog/rtl -I ../../../verilog/rtl/syntacore/scr1/src/includes   -I ../../../verilog/rtl/sdram_ctrl/src/defs -I $CARAVEL_ROOT/verilog/dv/caravel -I ../model -I ../agents user_uart_tb.v -o user_uart_tb.vvp
+#iverilog -g2005-sv -I $PDK_PATH -I  ../../../caravel/verilog/rtl -I ../ -I ../../../verilog/rtl -I ../../../verilog/rtl/syntacore/scr1/src/includes   -I ../../../verilog/rtl/sdram_ctrl/src/defs -I $CARAVEL_ROOT/verilog/dv/caravel -I ../model -I ../agents user_uart_tb.v -o user_uart_tb.vvp
 
 # GLS
-#iverilog -g2005-sv -DGL -I $PDK_PATH -I ../../gl -I ../ -I ../../../verilog/rtl -I /home/dinesha/workarea/pdk/sky130A -I ../../../verilog/rtl/syntacore/scr1/src/includes   -I ../../../verilog/rtl/sdram_ctrl/src/defs -I $CARAVEL_ROOT/verilog/dv/caravel -I ../model -I ../agents user_uart_tb.v -o user_uart_tb.vvp
+#iverilog -g2005-sv -DGL -I $PDK_PATH -I  ../../../caravel/verilog/rtl -I ../../gl -I ../ -I ../../../verilog/rtl -I /home/dinesha/workarea/pdk/sky130A -I ../../../verilog/rtl/syntacore/scr1/src/includes   -I ../../../verilog/rtl/sdram_ctrl/src/defs -I $CARAVEL_ROOT/verilog/dv/caravel -I ../model -I ../agents user_uart_tb.v -o user_uart_tb.vvp
 
 vvp user_uart_tb.vvp | tee test.log
 
diff --git a/verilog/dv/user_uart/uprj_netlists.v b/verilog/dv/user_uart/uprj_netlists.v
index 5572f55..1668caa 100644
--- a/verilog/dv/user_uart/uprj_netlists.v
+++ b/verilog/dv/user_uart/uprj_netlists.v
@@ -14,6 +14,7 @@
 // SPDX-License-Identifier: Apache-2.0
 
 // Include caravel global defines for the number of the user project IO pads 
+`include "defines.v"
 `define USE_POWER_PINS
 
 `ifdef GL
@@ -26,9 +27,44 @@
       `include "glbl_cfg.v"
       `include "sdram.v"
       `include "spi_master.v"
-      `include "syntacore.v"
       `include "uart.v"
       `include "wb_interconnect.v"
+
+     `include "wb_host/src/wb_host.sv"
+     `include "lib/async_wb.sv"
+     `include "lib/registers.v"
+
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_hdu.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_tdu.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_ipic.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_csr.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_exu.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_ialu.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_idu.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_ifu.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_lsu.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_mprf.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_top.sv"
+     `include "syntacore/scr1/src/core/primitives/scr1_reset_cells.sv"
+     `include "syntacore/scr1/src/core/primitives/scr1_cg.sv"
+     `include "syntacore/scr1/src/core/scr1_clk_ctrl.sv"
+     `include "syntacore/scr1/src/core/scr1_tapc_shift_reg.sv"
+     `include "syntacore/scr1/src/core/scr1_tapc.sv"
+     `include "syntacore/scr1/src/core/scr1_tapc_synchronizer.sv"
+     `include "syntacore/scr1/src/core/scr1_core_top.sv"
+     `include "syntacore/scr1/src/core/scr1_dm.sv"
+     `include "syntacore/scr1/src/core/scr1_dmi.sv"
+     `include "syntacore/scr1/src/core/scr1_scu.sv"
+      
+     `include "syntacore/scr1/src/top/scr1_dmem_router.sv"
+     `include "syntacore/scr1/src/top/scr1_dp_memory.sv"
+     `include "syntacore/scr1/src/top/scr1_tcm.sv"
+     `include "syntacore/scr1/src/top/scr1_timer.sv"
+     `include "syntacore/scr1/src/top/scr1_dmem_wb.sv"
+     `include "syntacore/scr1/src/top/scr1_imem_wb.sv"
+     `include "syntacore/scr1/src/top/scr1_top_wb.sv"
+     `include "lib/sync_fifo.sv"
+     `include "lib/async_fifo.sv"  
 `else
      `include "spi_master/src/spim_top.sv"
      `include "spi_master/src/spim_regs.sv"
@@ -60,6 +96,9 @@
      `include "digital_core/src/glbl_cfg.sv"
      `include "digital_core/src/digital_core.sv"
 
+     `include "wb_host/src/wb_host.sv"
+     `include "lib/async_wb.sv"
+
      `include "lib/wb_stagging.sv"
      `include "wb_interconnect/src/wb_arb.sv"
      `include "wb_interconnect/src/wb_interconnect.sv"
@@ -95,4 +134,6 @@
      `include "syntacore/scr1/src/top/scr1_imem_wb.sv"
      `include "syntacore/scr1/src/top/scr1_top_wb.sv"
      `include "lib/sync_fifo.sv"
+
+     `include "user_project_wrapper.v"
 `endif
diff --git a/verilog/dv/user_uart/user_uart_tb.v b/verilog/dv/user_uart/user_uart_tb.v
index fbb254e..5a647ba 100644
--- a/verilog/dv/user_uart/user_uart_tb.v
+++ b/verilog/dv/user_uart/user_uart_tb.v
@@ -132,7 +132,8 @@
 	`ifdef WFDUMP
 	   initial begin
 	   	$dumpfile("risc_boot.vcd");
-	   	$dumpvars(4, user_uart_tb);
+	   	$dumpvars(2, user_uart_tb);
+	   	$dumpvars(4, user_uart_tb.u_top.u_core);
 	   end
        `endif
 
@@ -156,6 +157,9 @@
    repeat (10) @(posedge clock);
    $display("Monitor: Standalone User Uart Test Started");
    
+   // Remove Wb Reset
+   wb_user_core_write('h3080_0000,'h1);
+
    #1;
    //------------ SDRAM Config - 2
    wb_user_core_write('h3000_0014,'h100_019E);
@@ -168,7 +172,7 @@
    repeat (2) @(posedge clock);
    #1;
    // Remove all the reset
-   wb_user_core_write('h3000_0000,'h7);
+   wb_user_core_write('h3080_0000,'hF);
 
    repeat (20000) @(posedge clock);  // wait for Processor Get Ready
    tb_uart.uart_init;
@@ -232,31 +236,28 @@
 end
 
 
-digital_core u_core(
+wire USER_VDD1V8 = 1'b1;
+wire VSS = 1'b0;
+
+
+user_project_wrapper u_top(
 `ifdef USE_POWER_PINS
-    .vdda1(),	// User area 1 3.3V supply
-    .vdda2(),	// User area 2 3.3V supply
-    .vssa1(),	// User area 1 analog ground
-    .vssa2(),	// User area 2 analog ground
-    .vccd1(),	// User area 1 1.8V supply
-    .vccd2(),	// User area 2 1.8v supply
-    .vssd1(),	// User area 1 digital ground
-    .vssd2(),	// User area 2 digital ground
+    .vccd1(USER_VDD1V8),	// User area 1 1.8V supply
+    .vssd1(VSS),	// User area 1 digital ground
 `endif
     .wb_clk_i        (clock),  // System clock
     .user_clock2     (1'b1),  // Real-time clock
     .wb_rst_i        (wb_rst_i),  // Regular Reset signal
 
-    .wbd_ext_cyc_i   (wbd_ext_cyc_i),  // strobe/request
-    .wbd_ext_stb_i   (wbd_ext_stb_i),  // strobe/request
-    .wbd_ext_adr_i   (wbd_ext_adr_i),  // address
-    .wbd_ext_we_i    (wbd_ext_we_i),  // write
-    .wbd_ext_dat_i   (wbd_ext_dat_i),  // data output
-    .wbd_ext_sel_i   (wbd_ext_sel_i),  // byte enable
+    .wbs_cyc_i   (wbd_ext_cyc_i),  // strobe/request
+    .wbs_stb_i   (wbd_ext_stb_i),  // strobe/request
+    .wbs_adr_i   (wbd_ext_adr_i),  // address
+    .wbs_we_i    (wbd_ext_we_i),  // write
+    .wbs_dat_i   (wbd_ext_dat_i),  // data output
+    .wbs_sel_i   (wbd_ext_sel_i),  // byte enable
 
-    .wbd_ext_dat_o   (wbd_ext_dat_o),  // data input
-    .wbd_ext_ack_o   (wbd_ext_ack_o),  // acknowlegement
-    .wbd_ext_err_o   (wbd_ext_err_o),  // error
+    .wbs_dat_o   (wbd_ext_dat_o),  // data input
+    .wbs_ack_o   (wbd_ext_ack_o),  // acknowlegement
 
  
     // Logic Analyzer Signals
@@ -371,6 +372,7 @@
 input [31:0] data;
 begin
   repeat (1) @(posedge clock);
+  #1;
   wbd_ext_adr_i =address;  // address
   wbd_ext_we_i  ='h1;  // write
   wbd_ext_dat_i =data;  // data output
@@ -379,6 +381,7 @@
   wbd_ext_stb_i ='h1;  // strobe/request
   wait(wbd_ext_ack_o == 1);
   repeat (1) @(posedge clock);
+  #1;
   wbd_ext_cyc_i ='h0;  // strobe/request
   wbd_ext_stb_i ='h0;  // strobe/request
   wbd_ext_adr_i ='h0;  // address
@@ -396,6 +399,7 @@
 reg    [31:0] data;
 begin
   repeat (1) @(posedge clock);
+  #1;
   wbd_ext_adr_i =address;  // address
   wbd_ext_we_i  ='h0;  // write
   wbd_ext_dat_i ='0;  // data output
@@ -405,6 +409,7 @@
   wait(wbd_ext_ack_o == 1);
   data  = wbd_ext_dat_o;  
   repeat (1) @(posedge clock);
+  #1;
   wbd_ext_cyc_i ='h0;  // strobe/request
   wbd_ext_stb_i ='h0;  // strobe/request
   wbd_ext_adr_i ='h0;  // address
@@ -419,30 +424,22 @@
 
 
 
-////-----------------------------------------------------------------------------
-//// RISC IMEM amd DMEM Monitoring TASK
-////-----------------------------------------------------------------------------
-//logic [`SCR1_DMEM_AWIDTH-1:0]           core2imem_addr_o_r;           // DMEM address
-//logic [`SCR1_DMEM_AWIDTH-1:0]           core2dmem_addr_o_r;           // DMEM address
-//logic                                   core2dmem_cmd_o_r;
-//
-//`define RISC_CORE  user_uart_tb.u_core.u_riscv_top.i_core_top
-//
-//always@(posedge `RISC_CORE.clk) begin
-//    if(`RISC_CORE.imem2core_req_ack_i && `RISC_CORE.core2imem_req_o)
-//          core2imem_addr_o_r <= `RISC_CORE.core2imem_addr_o;
-//
-//    if(`RISC_CORE.dmem2core_req_ack_i && `RISC_CORE.core2dmem_req_o) begin
-//          core2dmem_addr_o_r <= `RISC_CORE.core2dmem_addr_o;
-//          core2dmem_cmd_o_r  <= `RISC_CORE.core2dmem_cmd_o;
-//    end
-//
-//    if(`RISC_CORE.imem2core_resp_i !=0)
-//          $display("RISCV-DEBUG => IMEM ADDRESS: %x Read Data : %x Resonse: %x", core2imem_addr_o_r,`RISC_CORE.imem2core_rdata_i,`RISC_CORE.imem2core_resp_i);
-//    if((`RISC_CORE.dmem2core_resp_i !=0) && core2dmem_cmd_o_r)
-//          $display("RISCV-DEBUG => DMEM ADDRESS: %x Write Data: %x Resonse: %x", core2dmem_addr_o_r,`RISC_CORE.core2dmem_wdata_o,`RISC_CORE.dmem2core_resp_i);
-//    if((`RISC_CORE.dmem2core_resp_i !=0) && !core2dmem_cmd_o_r)
-//          $display("RISCV-DEBUG => DMEM ADDRESS: %x READ Data : %x Resonse: %x", core2dmem_addr_o_r,`RISC_CORE.dmem2core_rdata_i,`RISC_CORE.dmem2core_resp_i);
-//end
+`ifdef GL
+//-----------------------------------------------------------------------------
+// RISC IMEM amd DMEM Monitoring TASK
+//-----------------------------------------------------------------------------
+
+`define RISC_CORE  user_uart_tb.u_top.u_core.u_riscv_top
+
+always@(posedge `RISC_CORE.wb_clk) begin
+    if(`RISC_CORE.wbd_imem_ack_i)
+          $display("RISCV-DEBUG => IMEM ADDRESS: %x Read Data : %x", `RISC_CORE.wbd_imem_adr_o,`RISC_CORE.wbd_imem_dat_i);
+    if(`RISC_CORE.wbd_dmem_ack_i && `RISC_CORE.wbd_dmem_we_o)
+          $display("RISCV-DEBUG => DMEM ADDRESS: %x Write Data: %x Resonse: %x", `RISC_CORE.wbd_dmem_adr_o,`RISC_CORE.wbd_dmem_dat_o);
+    if(`RISC_CORE.wbd_dmem_ack_i && !`RISC_CORE.wbd_dmem_we_o)
+          $display("RISCV-DEBUG => DMEM ADDRESS: %x READ Data : %x Resonse: %x", `RISC_CORE.wbd_dmem_adr_o,`RISC_CORE.wbd_dmem_dat_i);
+end
+
+`endif
 endmodule
 `default_nettype wire
diff --git a/verilog/dv/wb_port/wb_port.c b/verilog/dv/wb_port/wb_port.c
index 079d1ef..684f275 100644
--- a/verilog/dv/wb_port/wb_port.c
+++ b/verilog/dv/wb_port/wb_port.c
@@ -22,6 +22,7 @@
 // User Project Slaves (0x3000_0000)
 #define reg_mprj_slave (*(volatile uint32_t*)0x30000000)
 
+#define reg_mprj_wbhost_reg0 (*(volatile uint32_t*)0x30800000)
 #define reg_mprj_globl_reg0  (*(volatile uint32_t*)0x30000000)
 #define reg_mprj_globl_reg1  (*(volatile uint32_t*)0x30000004)
 #define reg_mprj_globl_reg2  (*(volatile uint32_t*)0x30000008)
@@ -102,6 +103,9 @@
     // Flag start of the test
 	reg_mprj_datal = 0xAB600000;
 
+    // Remove Wishbone Reset
+    reg_mprj_wbhost_reg0 = 0x1;
+
     if (reg_mprj_globl_reg1 != 0xA55AA55A) bFail = 1;
     if (reg_mprj_globl_reg2 != 0xAABBCCDD) bFail = 1;
 
diff --git a/verilog/rtl/digital_core/src/digital_core.sv b/verilog/rtl/digital_core/src/digital_core.sv
index d80af75..7e76212 100644
--- a/verilog/rtl/digital_core/src/digital_core.sv
+++ b/verilog/rtl/digital_core/src/digital_core.sv
@@ -43,6 +43,22 @@
 ////    0.3 - 20th June 2021, Dinesh A                            ////
 ////           1. uart core is integrated                         ////
 ////           2. 3rd Slave ported added to wishbone interconnect ////
+////    0.4 - 25th June 2021, Dinesh A                            ////
+////          Moved the pad logic inside sdram,spi,uart block to  ////
+////          avoid logic at digital core level                   ////
+////    0.5 - 25th June 2021, Dinesh A                            ////
+////          Since carvel gives only 16MB address space for user ////
+////          space, we have implemented indirect address select  ////
+////          with 8 bit bank select given inside wb_host         ////
+////          core Address = {Bank_Sel[7:0], Wb_Address[23:0]     ////
+////          caravel user address space is                       ////
+////          0x3000_0000 to 0x30FF_FFFF                          ////
+////    0.6 - 27th June 2021, Dinesh A                            ////
+////          Digital core level tie are moved inside IP to avoid ////
+////          power hook up at core level                         ////
+////          u_risc_top - test_mode & test_rst_n                 ////
+////          u_intercon - s*_wbd_err_i                           ////
+////          unused wb_cti_i is removed from u_sdram_ctrl        ////
 ////                                                              ////
 //////////////////////////////////////////////////////////////////////
 ////                                                              ////
@@ -71,12 +87,7 @@
 ////                                                              ////
 //////////////////////////////////////////////////////////////////////
 
-`include "scr1_arch_description.svh"
-`ifdef SCR1_IPIC_EN
-`include "scr1_ipic.svh"
-`endif // SCR1_IPIC_EN
 
-`include "sdrc_define.v"
 module digital_core 
 #(
 	parameter      SDR_DW   = 8,  // SDR Data Width 
@@ -87,33 +98,32 @@
     inout vccd1,	// User area 1 1.8V supply
     inout vssd1,	// User area 1 digital ground
 `endif
-    input   logic                       wb_clk_i        ,  // System clock
-    input   logic                       user_clock2     ,  // user Clock
-    input   logic                       wb_rst_i        ,  // Regular Reset signal
+    input   wire                       wb_clk_i        ,  // System clock
+    input   wire                       user_clock2     ,  // user Clock
+    input   wire                       wb_rst_i        ,  // Regular Reset signal
 
-    input   logic                       wbd_ext_cyc_i   ,  // strobe/request
-    input   logic                       wbd_ext_stb_i   ,  // strobe/request
-    input   logic [WB_WIDTH-1:0]        wbd_ext_adr_i   ,  // address
-    input   logic                       wbd_ext_we_i    ,  // write
-    input   logic [WB_WIDTH-1:0]        wbd_ext_dat_i   ,  // data output
-    input   logic [3:0]                 wbd_ext_sel_i   ,  // byte enable
-    output  logic [WB_WIDTH-1:0]        wbd_ext_dat_o   ,  // data input
-    output  logic                       wbd_ext_ack_o   ,  // acknowlegement
-    output  logic                       wbd_ext_err_o   ,  // error
+    input   wire                       wbd_ext_cyc_i   ,  // strobe/request
+    input   wire                       wbd_ext_stb_i   ,  // strobe/request
+    input   wire [WB_WIDTH-1:0]        wbd_ext_adr_i   ,  // address
+    input   wire                       wbd_ext_we_i    ,  // write
+    input   wire [WB_WIDTH-1:0]        wbd_ext_dat_i   ,  // data output
+    input   wire [3:0]                 wbd_ext_sel_i   ,  // byte enable
+    output  wire [WB_WIDTH-1:0]        wbd_ext_dat_o   ,  // data input
+    output  wire                       wbd_ext_ack_o   ,  // acknowlegement
 
  
     // Logic Analyzer Signals
-    input  logic [127:0]                la_data_in      ,
-    output logic [127:0]                la_data_out     ,
-    input  logic [127:0]                la_oenb         ,
+    input  wire [127:0]                la_data_in      ,
+    output wire [127:0]                la_data_out     ,
+    input  wire [127:0]                la_oenb         ,
  
 
     // IOs
-    input  logic  [37:0]                io_in           ,
-    output logic  [37:0]                io_out          ,
-    output logic  [37:0]                io_oeb          ,
+    input  wire  [37:0]                io_in           ,
+    output wire  [37:0]                io_out          ,
+    output wire  [37:0]                io_oeb          ,
 
-    output logic  [2:0]                 user_irq             
+    output wire  [2:0]                 user_irq             
 
 );
 
@@ -125,208 +135,181 @@
 //---------------------------------------------------------------------
 // Wishbone Risc V Instruction Memory Interface
 //---------------------------------------------------------------------
-logic                           wbd_riscv_imem_stb_i; // strobe/request
-logic   [WB_WIDTH-1:0]          wbd_riscv_imem_adr_i; // address
-logic                           wbd_riscv_imem_we_i;  // write
-logic   [WB_WIDTH-1:0]          wbd_riscv_imem_dat_i; // data output
-logic   [3:0]                   wbd_riscv_imem_sel_i; // byte enable
-logic   [WB_WIDTH-1:0]          wbd_riscv_imem_dat_o; // data input
-logic                           wbd_riscv_imem_ack_o; // acknowlegement
-logic                           wbd_riscv_imem_err_o;  // error
+wire                           wbd_riscv_imem_stb_i; // strobe/request
+wire   [WB_WIDTH-1:0]          wbd_riscv_imem_adr_i; // address
+wire                           wbd_riscv_imem_we_i;  // write
+wire   [WB_WIDTH-1:0]          wbd_riscv_imem_dat_i; // data output
+wire   [3:0]                   wbd_riscv_imem_sel_i; // byte enable
+wire   [WB_WIDTH-1:0]          wbd_riscv_imem_dat_o; // data input
+wire                           wbd_riscv_imem_ack_o; // acknowlegement
+wire                           wbd_riscv_imem_err_o;  // error
 
 //---------------------------------------------------------------------
 // RISC V Wishbone Data Memory Interface
 //---------------------------------------------------------------------
-logic                           wbd_riscv_dmem_stb_i; // strobe/request
-logic   [WB_WIDTH-1:0]          wbd_riscv_dmem_adr_i; // address
-logic                           wbd_riscv_dmem_we_i;  // write
-logic   [WB_WIDTH-1:0]          wbd_riscv_dmem_dat_i; // data output
-logic   [3:0]                   wbd_riscv_dmem_sel_i; // byte enable
-logic   [WB_WIDTH-1:0]          wbd_riscv_dmem_dat_o; // data input
-logic                           wbd_riscv_dmem_ack_o; // acknowlegement
-logic                           wbd_riscv_dmem_err_o; // error
+wire                           wbd_riscv_dmem_stb_i; // strobe/request
+wire   [WB_WIDTH-1:0]          wbd_riscv_dmem_adr_i; // address
+wire                           wbd_riscv_dmem_we_i;  // write
+wire   [WB_WIDTH-1:0]          wbd_riscv_dmem_dat_i; // data output
+wire   [3:0]                   wbd_riscv_dmem_sel_i; // byte enable
+wire   [WB_WIDTH-1:0]          wbd_riscv_dmem_dat_o; // data input
+wire                           wbd_riscv_dmem_ack_o; // acknowlegement
+wire                           wbd_riscv_dmem_err_o; // error
+
+//---------------------------------------------------------------------
+// WB HOST Interface
+//---------------------------------------------------------------------
+wire                           wbd_int_cyc_i; // strobe/request
+wire                           wbd_int_stb_i; // strobe/request
+wire   [WB_WIDTH-1:0]          wbd_int_adr_i; // address
+wire                           wbd_int_we_i;  // write
+wire   [WB_WIDTH-1:0]          wbd_int_dat_i; // data output
+wire   [3:0]                   wbd_int_sel_i; // byte enable
+wire   [WB_WIDTH-1:0]          wbd_int_dat_o; // data input
+wire                           wbd_int_ack_o; // acknowlegement
+wire                           wbd_int_err_o; // error
+//---------------------------------------------------------------------
+//    SPI Master Wishbone Interface
+//---------------------------------------------------------------------
+wire                           wbd_spim_stb_o; // strobe/request
+wire   [WB_WIDTH-1:0]          wbd_spim_adr_o; // address
+wire                           wbd_spim_we_o;  // write
+wire   [WB_WIDTH-1:0]          wbd_spim_dat_o; // data output
+wire   [3:0]                   wbd_spim_sel_o; // byte enable
+wire                           wbd_spim_cyc_o ;
+wire   [WB_WIDTH-1:0]          wbd_spim_dat_i; // data input
+wire                           wbd_spim_ack_i; // acknowlegement
+wire                           wbd_spim_err_i;  // error
 
 //---------------------------------------------------------------------
 //    SPI Master Wishbone Interface
 //---------------------------------------------------------------------
-logic                           wbd_spim_stb_o; // strobe/request
-logic   [WB_WIDTH-1:0]          wbd_spim_adr_o; // address
-logic                           wbd_spim_we_o;  // write
-logic   [WB_WIDTH-1:0]          wbd_spim_dat_o; // data output
-logic   [3:0]                   wbd_spim_sel_o; // byte enable
-logic                           wbd_spim_cyc_o ;
-logic   [WB_WIDTH-1:0]          wbd_spim_dat_i; // data input
-logic                           wbd_spim_ack_i; // acknowlegement
-logic                           wbd_spim_err_i;  // error
-
-//---------------------------------------------------------------------
-//    SPI Master Wishbone Interface
-//---------------------------------------------------------------------
-logic                           wbd_sdram_stb_o ;
-logic [WB_WIDTH-1:0]            wbd_sdram_adr_o ;
-logic                           wbd_sdram_we_o  ; // 1 - Write, 0 - Read
-logic [WB_WIDTH-1:0]            wbd_sdram_dat_o ;
-logic [WB_WIDTH/8-1:0]          wbd_sdram_sel_o ; // Byte enable
-logic                           wbd_sdram_cyc_o ;
-logic  [2:0]                    wbd_sdram_cti_o ;
-logic  [WB_WIDTH-1:0]           wbd_sdram_dat_i ;
-logic                           wbd_sdram_ack_i ;
+wire                           wbd_sdram_stb_o ;
+wire [WB_WIDTH-1:0]            wbd_sdram_adr_o ;
+wire                           wbd_sdram_we_o  ; // 1 - Write, 0 - Read
+wire [WB_WIDTH-1:0]            wbd_sdram_dat_o ;
+wire [WB_WIDTH/8-1:0]          wbd_sdram_sel_o ; // Byte enable
+wire                           wbd_sdram_cyc_o ;
+wire  [2:0]                    wbd_sdram_cti_o ;
+wire  [WB_WIDTH-1:0]           wbd_sdram_dat_i ;
+wire                           wbd_sdram_ack_i ;
 
 //---------------------------------------------------------------------
 //    Global Register Wishbone Interface
 //---------------------------------------------------------------------
-logic                           wbd_glbl_stb_o; // strobe/request
-logic   [7:0]                   wbd_glbl_adr_o; // address
-logic                           wbd_glbl_we_o;  // write
-logic   [WB_WIDTH-1:0]          wbd_glbl_dat_o; // data output
-logic   [3:0]                   wbd_glbl_sel_o; // byte enable
-logic                           wbd_glbl_cyc_o ;
-logic   [WB_WIDTH-1:0]          wbd_glbl_dat_i; // data input
-logic                           wbd_glbl_ack_i; // acknowlegement
-logic                           wbd_glbl_err_i;  // error
+wire                           wbd_glbl_stb_o; // strobe/request
+wire   [7:0]                   wbd_glbl_adr_o; // address
+wire                           wbd_glbl_we_o;  // write
+wire   [WB_WIDTH-1:0]          wbd_glbl_dat_o; // data output
+wire   [3:0]                   wbd_glbl_sel_o; // byte enable
+wire                           wbd_glbl_cyc_o ;
+wire   [WB_WIDTH-1:0]          wbd_glbl_dat_i; // data input
+wire                           wbd_glbl_ack_i; // acknowlegement
+wire                           wbd_glbl_err_i;  // error
 
 //---------------------------------------------------------------------
 //    Global Register Wishbone Interface
 //---------------------------------------------------------------------
-logic                           wbd_uart_stb_o; // strobe/request
-logic   [7:0]                   wbd_uart_adr_o; // address
-logic                           wbd_uart_we_o;  // write
-logic   [7:0]                   wbd_uart_dat_o; // data output
-logic                           wbd_uart_sel_o; // byte enable
-logic                           wbd_uart_cyc_o ;
-logic   [7:0]                   wbd_uart_dat_i; // data input
-logic                           wbd_uart_ack_i; // acknowlegement
-logic                           wbd_uart_err_i;  // error
+wire                           wbd_uart_stb_o; // strobe/request
+wire   [7:0]                   wbd_uart_adr_o; // address
+wire                           wbd_uart_we_o;  // write
+wire   [7:0]                   wbd_uart_dat_o; // data output
+wire                           wbd_uart_sel_o; // byte enable
+wire                           wbd_uart_cyc_o ;
+wire   [7:0]                   wbd_uart_dat_i; // data input
+wire                           wbd_uart_ack_i; // acknowlegement
+wire                           wbd_uart_err_i;  // error
 
 //----------------------------------------------------
 //  CPU Configuration
 //----------------------------------------------------
-logic                              cpu_rst_n     ;
-logic                              spi_rst_n     ;
-logic                              sdram_rst_n   ;
-logic                              cpu_clk       ;
-logic                              rtc_clk       ;
+wire                              cpu_rst_n     ;
+wire                              spi_rst_n     ;
+wire                              sdram_rst_n   ;
+wire                              sdram_clk           ;
+wire                              cpu_clk       ;
+wire                              rtc_clk       ;
+wire                              wbd_clk_int   ;
+wire                              wbd_int_rst_n ;
 
-logic [31:0]                       fuse_mhartid  ;
-logic [15:0]                       irq_lines     ;
-logic                              soft_irq      ;
+wire [31:0]                       fuse_mhartid  ;
+wire [15:0]                       irq_lines     ;
+wire                              soft_irq      ;
+
+wire [7:0]                        cfg_glb_ctrl  ;
+wire [31:0]                       cfg_clk_ctrl1 ;
+wire [31:0]                       cfg_clk_ctrl2 ;
 
 //------------------------------------------------
 // Configuration Parameter
 //------------------------------------------------
-logic [1:0]                        cfg_sdr_width       ; // 2'b00 - 32 Bit SDR, 2'b01 - 16 Bit SDR, 2'b1x - 8 Bit
-logic [1:0]                        cfg_colbits         ; // 2'b00 - 8 Bit column address, 
-logic                              sdr_init_done       ; // Indicate SDRAM Initialisation Done
-logic [3:0] 		           cfg_sdr_tras_d      ; // Active to precharge delay
-logic [3:0]                        cfg_sdr_trp_d       ; // Precharge to active delay
-logic [3:0]                        cfg_sdr_trcd_d      ; // Active to R/W delay
-logic 			           cfg_sdr_en          ; // Enable SDRAM controller
-logic [1:0] 		           cfg_req_depth       ; // Maximum Request accepted by SDRAM controller
-logic [12:0] 		           cfg_sdr_mode_reg    ;
-logic [2:0] 		           cfg_sdr_cas         ; // SDRAM CAS Latency
-logic [3:0] 		           cfg_sdr_trcar_d     ; // Auto-refresh period
-logic [3:0]                        cfg_sdr_twr_d       ; // Write recovery delay
-logic [`SDR_RFSH_TIMER_W-1 : 0]    cfg_sdr_rfsh        ;
-logic [`SDR_RFSH_ROW_CNT_W -1 : 0] cfg_sdr_rfmax       ;
-
-//----------------------------------------------------------------------
-// Interface to SDRAMs 
-//--------------------------------------------------------------------------
-logic                              sdr_cke             ;  // SDRAM CKE
-logic			           sdr_cs_n            ;  // SDRAM Chip Select
-logic                              sdr_ras_n           ;  // SDRAM ras
-logic                              sdr_cas_n           ;  // SDRAM cas
-logic			           sdr_we_n            ;  // SDRAM write enable
-logic [SDR_BW-1:0] 	           sdr_dqm             ;  // SDRAM Data Mask
-logic [1:0] 		           sdr_ba              ;  // SDRAM Bank Enable
-logic [12:0] 		           sdr_addr            ;  // SDRAM Address
-logic [SDR_DW-1:0] 	           pad_sdr_din         ;  // SDRA Data Input
-logic [SDR_DW-1:0] 	           sdr_dout            ;  // SDRA Data output
-logic [SDR_BW-1:0] 	           sdr_den_n           ;  // SDRAM Data Output enable
-logic                              sdram_clk           ;  // Sdram clock loop back from pad
-logic                              pad_sdram_clk       ;  // Sdram clock loop back from pad
+wire [1:0]                        cfg_sdr_width       ; // 2'b00 - 32 Bit SDR, 2'b01 - 16 Bit SDR, 2'b1x - 8 Bit
+wire [1:0]                        cfg_colbits         ; // 2'b00 - 8 Bit column address, 
+wire                              sdr_init_done       ; // Indicate SDRAM Initialisation Done
+wire [3:0] 		          cfg_sdr_tras_d      ; // Active to precharge delay
+wire [3:0]                        cfg_sdr_trp_d       ; // Precharge to active delay
+wire [3:0]                        cfg_sdr_trcd_d      ; // Active to R/W delay
+wire 			          cfg_sdr_en          ; // Enable SDRAM controller
+wire [1:0] 		          cfg_req_depth       ; // Maximum Request accepted by SDRAM controller
+wire [12:0] 		          cfg_sdr_mode_reg    ;
+wire [2:0] 		          cfg_sdr_cas         ; // SDRAM CAS Latency
+wire [3:0] 		          cfg_sdr_trcar_d     ; // Auto-refresh period
+wire [3:0]                        cfg_sdr_twr_d       ; // Write recovery delay
+wire [11: 0]                      cfg_sdr_rfsh        ;
+wire [2 : 0]                      cfg_sdr_rfmax       ;
 
 
-assign pad_sdr_din[7:0]      =      io_in[7:0]         ;
-assign io_out     [7:0]      =      sdr_dout[7:0]      ;
-assign io_out     [20:8]     =      sdr_addr[12:0]     ;
-assign io_out     [22:21]    =      sdr_ba[1:0]        ;
-assign io_out     [23]       =      sdr_dqm[0]         ;
-assign io_out     [24]       =      sdr_we_n           ;
-assign io_out     [25]       =      sdr_cas_n          ;
-assign io_out     [26]       =      sdr_ras_n          ;
-assign io_out     [27]       =      sdr_cs_n           ;
-assign io_out     [28]       =      sdr_cke            ;
-assign io_out     [29]       =      sdram_clk          ;
-assign pad_sdram_clk         =      io_in[29]          ;
-
-assign io_oeb     [7:0]      =      sdr_den_n         ;
-assign io_oeb     [20:8]     =      {(13) {1'b0}}      ;
-assign io_oeb     [22:21]    =      {(2) {1'b0}}       ;
-assign io_oeb     [23]       =      1'b0               ;
-assign io_oeb     [24]       =      1'b0               ;
-assign io_oeb     [25]       =      1'b0               ;
-assign io_oeb     [26]       =      1'b0               ;
-assign io_oeb     [27]       =      1'b0               ;
-assign io_oeb     [28]       =      1'b0               ;
-assign io_oeb     [29]       =      1'b0               ;
-
-
-
-//-----------------------------------------------------------
-//  SPI I/F
-//  ////////////////////////////////////////////////////
-logic                          spim_sdo0               ; // SPI Master Data Out[0]
-logic                          spim_sdo1               ; // SPI Master Data Out[1]
-logic                          spim_sdo2               ; // SPI Master Data Out[2]
-logic                          spim_sdo3               ; // SPI Master Data Out[3]
-logic                          spim_sdi0               ; // SPI Master Data In[0]
-logic                          spim_sdi1               ; // SPI Master Data In[1]
-logic                          spim_sdi2               ; // SPI Master Data In[2]
-logic                          spim_sdi3               ; // SPI Master Data In[3]
-logic                          spim_clk                ;
-logic                          spim_csn                ;
-logic                          spi_en_tx               ;
-
-assign  spim_sdi0  =  io_in[32];
-assign  spim_sdi1  =  io_in[33];
-assign  spim_sdi2  =  io_in[34];
-assign  spim_sdi3  =  io_in[35];
-
-assign  io_out[30] =  spim_clk;
-assign  io_out[31] =  spim_csn;
-assign  io_out[32] =  spim_sdo0;
-assign  io_out[33] =  spim_sdo1;
-assign  io_out[34] =  spim_sdo2;
-assign  io_out[35] =  spim_sdo3;
-   
-assign  io_oeb[30] =  1'b0;         // spi_clk
-assign  io_oeb[31] =  1'b0;         // spi_csn
-assign  io_oeb[32] =  !spi_en_tx;   // spi_dio0
-assign  io_oeb[33] =  !spi_en_tx;   // spi_dio1
-assign  io_oeb[34] =  !spi_en_tx;   // spi_dio2
-assign  io_oeb[35] =  !spi_en_tx;   // spi_dio3
-
-/////////////////////////////////////////////////////////
-// uart interface
-///////////////////////////////////////////////////////
-
-logic                         uart_rx                  ; 
-logic                         uart_tx                  ;
-
-// for uart
-assign  io_oeb[36] =  1'b1; // Uart RX
-assign  uart_rx    =  io_in[36];
-
-assign  io_oeb[37] =  1'b0; // Uart TX
-assign  io_out[37] =  uart_tx;
 
 
 
 /////////////////////////////////////////////////////////
 // Generating acive low wishbone reset                 
 // //////////////////////////////////////////////////////
-wire wb_rst_n = !wb_rst_i;
+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];
+
+
+
+wb_host u_wb_host(
+
+    // Master Port
+       .wbm_rst_i        (wb_rst_i             ),  
+       .wbm_clk_i        (wb_clk_i             ),  
+       .wbm_cyc_i        (wbd_ext_cyc_i        ),  
+       .wbm_stb_i        (wbd_ext_stb_i        ),  
+       .wbm_adr_i        (wbd_ext_adr_i        ),  
+       .wbm_we_i         (wbd_ext_we_i         ),  
+       .wbm_dat_i        (wbd_ext_dat_i        ),  
+       .wbm_sel_i        (wbd_ext_sel_i        ),  
+       .wbm_dat_o        (wbd_ext_dat_o        ),  
+       .wbm_ack_o        (wbd_ext_ack_o        ),  
+       .wbm_err_o        (                     ),  
+
+    // Slave Port
+       .wbs_clk_i        (wbd_clk_int          ),  
+       .wbs_cyc_o        (wbd_int_cyc_i        ),  
+       .wbs_stb_o        (wbd_int_stb_i        ),  
+       .wbs_adr_o        (wbd_int_adr_i        ),  
+       .wbs_we_o         (wbd_int_we_i         ),  
+       .wbs_dat_o        (wbd_int_dat_i        ),  
+       .wbs_sel_o        (wbd_int_sel_i        ),  
+       .wbs_dat_i        (wbd_int_dat_o        ),  
+       .wbs_ack_i        (wbd_int_ack_o        ),  
+       .wbs_err_i        (wbd_int_err_o        ),  
+
+       .cfg_glb_ctrl     (cfg_glb_ctrl         ),
+       .cfg_clk_ctrl1    (cfg_clk_ctrl1        ),
+       .cfg_clk_ctrl2    (cfg_clk_ctrl2        ),
+
+    // Logic Analyzer Signals
+       .la_data_in       (la_data_in           ),
+       .la_data_out      (la_data_out          ),
+       .la_oenb          (la_oenb              )
+    );
+
+
 
 
 //------------------------------------------------------------------------------
@@ -334,13 +317,9 @@
 //------------------------------------------------------------------------------
 scr1_top_wb u_riscv_top (
     // Reset
-    .pwrup_rst_n            (wb_rst_n                  ),
-    .rst_n                  (wb_rst_n                  ),
+    .pwrup_rst_n            (wbd_int_rst_n             ),
+    .rst_n                  (wbd_int_rst_n             ),
     .cpu_rst_n              (cpu_rst_n                 ),
-`ifdef SCR1_DBG_EN
-    .sys_rst_n_o            (sys_rst_n_o               ),
-    .sys_rdc_qlfy_o         (sys_rdc_qlfy_o            ),
-`endif // SCR1_DBG_EN
 
     // Clock
     .core_clk               (cpu_clk                   ),
@@ -348,35 +327,18 @@
 
     // Fuses
     .fuse_mhartid           (fuse_mhartid              ),
-`ifdef SCR1_DBG_EN
-    .fuse_idcode            (`SCR1_TAP_IDCODE          ),
-`endif // SCR1_DBG_EN
 
     // IRQ
-`ifdef SCR1_IPIC_EN
     .irq_lines              (irq_lines                 ), 
-`else // SCR1_IPIC_EN
-    .ext_irq                (ext_irq                   ), // TODO - Interrupts
-`endif // SCR1_IPIC_EN
     .soft_irq               (soft_irq                  ), // TODO - Interrupts
 
     // DFT
-    .test_mode              (1'b0                      ),
-    .test_rst_n             (1'b1                      ),
-
-`ifdef SCR1_DBG_EN
-    // JTAG
-    .trst_n                 (trst_n                    ),
-    .tck                    (tck                       ),
-    .tms                    (tms                       ),
-    .tdi                    (tdi                       ),
-    .tdo                    (tdo                       ),
-    .tdo_en                 (tdo_en                    ),
-`endif // SCR1_DBG_EN
+    // .test_mode           (1'b0                      ), // Moved inside IP
+    // .test_rst_n          (1'b1                      ), // Moved inside IP
 
     
-    .wb_rst_n               (wb_rst_n                  ),
-    .wb_clk                 (wb_clk_i                  ),
+    .wb_rst_n               (wbd_int_rst_n              ),
+    .wb_clk                 (wbd_clk_int               ),
     // Instruction memory interface
     .wbd_imem_stb_o         (wbd_riscv_imem_stb_i      ),
     .wbd_imem_adr_o         (wbd_riscv_imem_adr_i      ),
@@ -412,7 +374,7 @@
 `endif
 ) u_spi_master
 (
-    .mclk                   (wb_clk_i                  ),
+    .mclk                   (wbd_clk_int               ),
     .rst_n                  (spi_rst_n                 ),
 
     .wbd_stb_i              (wbd_spim_stb_o            ),
@@ -426,21 +388,11 @@
 
     .events_o               (                          ), // TODO - Need to connect to intr ?
 
-    .spi_clk                (spim_clk                  ),
-    .spi_csn0               (spim_csn                  ),
-    .spi_csn1               (                          ),
-    .spi_csn2               (                          ),
-    .spi_csn3               (                          ),
-    .spi_mode               (                          ),
-    .spi_sdo0               (spim_sdo0                 ),
-    .spi_sdo1               (spim_sdo1                 ),
-    .spi_sdo2               (spim_sdo2                 ),
-    .spi_sdo3               (spim_sdo3                 ),
-    .spi_sdi0               (spim_sdi0                 ),
-    .spi_sdi1               (spim_sdi1                 ),
-    .spi_sdi2               (spim_sdi2                 ),
-    .spi_sdi3               (spim_sdi3                 ),
-    .spi_en_tx              (spi_en_tx                 )
+    // Pad Interface
+    .io_in                  (io_in[35:30]              ),
+    .io_out                 (io_out[35:30]             ),
+    .io_oeb                 (io_oeb[35:30]             )
+
 );
 
 
@@ -457,8 +409,8 @@
     .cfg_colbits            (cfg_colbits                ),
                     
     // WB bus
-    .wb_rst_i               (wb_rst_i                   ),
-    .wb_clk_i               (wb_clk_i                   ),
+    .wb_rst_n               (wbd_int_rst_n              ),
+    .wb_clk_i               (wbd_clk_int                ),
     
     .wb_stb_i               (wbd_sdram_stb_o            ),
     .wb_addr_i              (wbd_sdram_adr_o            ),
@@ -466,7 +418,6 @@
     .wb_dat_i               (wbd_sdram_dat_o            ),
     .wb_sel_i               (wbd_sdram_sel_o            ),
     .wb_cyc_i               (wbd_sdram_cyc_o            ),
-    .wb_cti_i               (wbd_sdram_cti_o            ), 
     .wb_ack_o               (wbd_sdram_ack_i            ),
     .wb_dat_o               (wbd_sdram_dat_i            ),
 
@@ -474,18 +425,11 @@
     /* Interface to SDRAMs */
     .sdram_clk              (sdram_clk                 ),
     .sdram_resetn           (sdram_rst_n               ),
-    .sdr_cs_n               (sdr_cs_n                  ),
-    .sdr_cke                (sdr_cke                   ),
-    .sdr_ras_n              (sdr_ras_n                 ),
-    .sdr_cas_n              (sdr_cas_n                 ),
-    .sdr_we_n               (sdr_we_n                  ),
-    .sdr_dqm                (sdr_dqm                   ),
-    .sdr_ba                 (sdr_ba                    ),
-    .sdr_addr               (sdr_addr                  ), 
-    .pad_sdr_din            (pad_sdr_din               ), 
-    .sdr_dout               (sdr_dout                  ), 
-    .sdr_den_n              (sdr_den_n                 ),
-    .sdram_pad_clk          (pad_sdram_clk             ),
+
+    /** Pad Interface       **/
+    .io_in                  (io_in[29:0]               ),
+    .io_oeb                 (io_oeb[29:0]              ),
+    .io_out                 (io_out[29:0]              ),
                     
     /* Parameters */
     .sdr_init_done          (sdr_init_done             ),
@@ -504,8 +448,8 @@
 
 
 wb_interconnect  u_intercon (
-         .clk_i         (wb_clk_i              ), 
-         .rst_n         (wb_rst_n              ),
+         .clk_i         (wbd_clk_int           ), 
+         .rst_n         (wbd_int_rst_n         ),
          
          // Master 0 Interface
          .m0_wbd_dat_i  (wbd_riscv_imem_dat_i  ),
@@ -530,19 +474,19 @@
          .m1_wbd_err_o  (wbd_riscv_dmem_err_o  ),
          
          // Master 2 Interface
-         .m2_wbd_dat_i  (wbd_ext_dat_i  ),
-         .m2_wbd_adr_i  (wbd_ext_adr_i  ),
-         .m2_wbd_sel_i  (wbd_ext_sel_i  ),
-         .m2_wbd_we_i   (wbd_ext_we_i   ),
-         .m2_wbd_cyc_i  (wbd_ext_cyc_i  ),
-         .m2_wbd_stb_i  (wbd_ext_stb_i  ),
-         .m2_wbd_dat_o  (wbd_ext_dat_o  ),
-         .m2_wbd_ack_o  (wbd_ext_ack_o  ),
-         .m2_wbd_err_o  (wbd_ext_err_o  ),
+         .m2_wbd_dat_i  (wbd_int_dat_i  ),
+         .m2_wbd_adr_i  (wbd_int_adr_i  ),
+         .m2_wbd_sel_i  (wbd_int_sel_i  ),
+         .m2_wbd_we_i   (wbd_int_we_i   ),
+         .m2_wbd_cyc_i  (wbd_int_cyc_i  ),
+         .m2_wbd_stb_i  (wbd_int_stb_i  ),
+         .m2_wbd_dat_o  (wbd_int_dat_o  ),
+         .m2_wbd_ack_o  (wbd_int_ack_o  ),
+         .m2_wbd_err_o  (wbd_int_err_o  ),
          
          
          // Slave 0 Interface
-         .s0_wbd_err_i  (1'b0           ),
+         // .s0_wbd_err_i  (1'b0           ), - Moved inside IP
          .s0_wbd_dat_i  (wbd_spim_dat_i ),
          .s0_wbd_ack_i  (wbd_spim_ack_i ),
          .s0_wbd_dat_o  (wbd_spim_dat_o ),
@@ -553,7 +497,7 @@
          .s0_wbd_stb_o  (wbd_spim_stb_o ),
          
          // Slave 1 Interface
-         .s1_wbd_err_i  (1'b0           ),
+         // .s1_wbd_err_i  (1'b0           ), - Moved inside IP
          .s1_wbd_dat_i  (wbd_sdram_dat_i ),
          .s1_wbd_ack_i  (wbd_sdram_ack_i ),
          .s1_wbd_dat_o  (wbd_sdram_dat_o ),
@@ -564,7 +508,7 @@
          .s1_wbd_stb_o  (wbd_sdram_stb_o ),
          
          // Slave 2 Interface
-         .s2_wbd_err_i  (1'b0           ),
+         // .s2_wbd_err_i  (1'b0           ), - Moved inside IP
          .s2_wbd_dat_i  (wbd_glbl_dat_i ),
          .s2_wbd_ack_i  (wbd_glbl_ack_i ),
          .s2_wbd_dat_o  (wbd_glbl_dat_o ),
@@ -575,7 +519,7 @@
          .s2_wbd_stb_o  (wbd_glbl_stb_o ),
 
          // Slave 3 Interface
-         .s3_wbd_err_i  (1'b0           ),
+         // .s3_wbd_err_i  (1'b0           ), - Moved inside IP
          .s3_wbd_dat_i  (wbd_uart_dat_i ),
          .s3_wbd_ack_i  (wbd_uart_ack_i ),
          .s3_wbd_dat_o  (wbd_uart_dat_o ),
@@ -588,8 +532,8 @@
 
 glbl_cfg   u_glbl_cfg (
 
-       .mclk                   (wb_clk_i                  ),
-       .reset_n                (wb_rst_n                  ),
+       .mclk                   (wbd_clk_int               ),
+       .reset_n                (wbd_int_rst_n             ),
        .user_clock2            (user_clock2               ),
        .device_idcode          (                          ),
 
@@ -610,11 +554,6 @@
        .cpu_clk                (cpu_clk                   ),
        .rtc_clk                (rtc_clk                   ),
 
-       // reset
-       .cpu_rst_n              (cpu_rst_n                 ),
-       .spi_rst_n              (spi_rst_n                 ),
-       .sdram_rst_n            (sdram_rst_n               ),
-
        // Risc configuration
        .fuse_mhartid           (fuse_mhartid              ),
        .irq_lines              (irq_lines                 ), 
@@ -643,8 +582,8 @@
         );
 
 uart_core   u_uart_core (
-        .arst_n                 (wb_rst_n                  ), // async reset
-        .app_clk                (wb_clk_i                  ),
+        .arst_n                 (wbd_int_rst_n            ), // async reset
+        .app_clk                (wbd_clk_int              ),
 
         // Reg Bus Interface Signal
        .reg_cs                 (wbd_uart_stb_o            ),
@@ -657,9 +596,10 @@
        .reg_rdata              (wbd_uart_dat_i[7:0]       ),
        .reg_ack                (wbd_uart_ack_i            ),
 
-       // Line Interface
-        .si                    ( uart_rx                 ),
-        .so                    ( uart_tx                 )
+       // Pad interface
+       .io_in                  (io_in [37:36]              ),
+       .io_oeb                 (io_oeb[37:36]              ),
+       .io_out                 (io_out[37:36]              )
 
      );
 
diff --git a/verilog/rtl/digital_core/src/glbl_cfg.sv b/verilog/rtl/digital_core/src/glbl_cfg.sv
index 1754aec..9e1f371 100644
--- a/verilog/rtl/digital_core/src/glbl_cfg.sv
+++ b/verilog/rtl/digital_core/src/glbl_cfg.sv
@@ -69,10 +69,6 @@
        output  logic           cpu_clk,
        output  logic           rtc_clk,
 
-       // reset
-       output  logic           cpu_rst_n,
-       output  logic           spi_rst_n,
-       output  logic           sdram_rst_n,
 
        // Risc configuration
        output logic [31:0]     fuse_mhartid,
@@ -254,9 +250,6 @@
 //   reg-0
 //   -----------------------------------------------------------------
 
-assign cpu_rst_n               = reg_0[0];
-assign spi_rst_n               = reg_0[1];
-assign sdram_rst_n             = reg_0[2];
 
 // SDRAM Clock source & div selection
 wire       cfg_sdram_clk_src_sel   = reg_0[4];
diff --git a/verilog/rtl/sdram_ctrl/src/top/sdrc_top.v b/verilog/rtl/sdram_ctrl/src/top/sdrc_top.v
index 00d9606..ab99a8c 100755
--- a/verilog/rtl/sdram_ctrl/src/top/sdrc_top.v
+++ b/verilog/rtl/sdram_ctrl/src/top/sdrc_top.v
@@ -31,6 +31,11 @@
 	         sdram_dq and sdram_pad_clk are internally generated
 	     0.3 - 26th April 2013
                   Sdram Address witdh is increased from 12 to 13bits
+	     0.3 - 25th June 2021
+                  Move the Pad logic inside the sdram to avoid combo logic
+		  at digital core level
+             0.4 - 27th June 2021
+	          Unused port wb_cti_i removed
 
                                                              
  Copyright (C) 2000 Authors and OPENCORES.ORG                
@@ -66,7 +71,7 @@
                     cfg_colbits         ,
                     
                 // WB bus
-                    wb_rst_i            ,
+                    wb_rst_n            ,
                     wb_clk_i            ,
                     
                     wb_stb_i            ,
@@ -77,25 +82,18 @@
                     wb_sel_i            ,
                     wb_dat_o            ,
                     wb_cyc_i            ,
-                    wb_cti_i            , 
 
 		
 		/* Interface to SDRAMs */
                     sdram_clk           ,
                     sdram_resetn        ,
-                    sdr_cs_n            ,
-                    sdr_cke             ,
-                    sdr_ras_n           ,
-                    sdr_cas_n           ,
-                    sdr_we_n            ,
-                    sdr_dqm             ,
-                    sdr_ba              ,
-                    sdr_addr            , 
-                    pad_sdr_din         , 
-                    sdr_dout            , 
-                    sdr_den_n           ,
-		    sdram_pad_clk       ,
+
                     
+		/** Pad Interface       **/
+		     io_in              ,
+		     io_oeb             ,
+	             io_out             ,
+
 		/* Parameters */
                     sdr_init_done       ,
                     cfg_req_depth       ,	        //how many req. buffer should hold
@@ -134,7 +132,7 @@
 //--------------------------------------
 // Wish Bone Interface
 // -------------------------------------      
-input                   wb_rst_i           ;
+input                   wb_rst_n           ;
 input                   wb_clk_i           ;
 
 input                   wb_stb_i           ;
@@ -145,23 +143,28 @@
 input [APP_DW/8-1:0]    wb_sel_i           ; // Byte enable
 output [APP_DW-1:0]     wb_dat_o           ;
 input                   wb_cyc_i           ;
-input  [2:0]            wb_cti_i           ;
 
+//--------------------------------------
+// Pad Interface
+// -------------------------------------      
+input [29:0]	        io_in              ;
+output [29:0]		io_oeb             ;
+output [29:0]		io_out             ;
 //------------------------------------------------
 // Interface to SDRAMs
 //------------------------------------------------
-output                  sdr_cke             ; // SDRAM CKE
-output 			sdr_cs_n            ; // SDRAM Chip Select
-output                  sdr_ras_n           ; // SDRAM ras
-output                  sdr_cas_n           ; // SDRAM cas
-output			sdr_we_n            ; // SDRAM write enable
-output [SDR_BW-1:0] 	sdr_dqm             ; // SDRAM Data Mask
-output [1:0] 		sdr_ba              ; // SDRAM Bank Enable
-output [12:0] 		sdr_addr            ; // SDRAM Address
-input                   sdram_pad_clk       ; // Sdram clock loop back from pad
-input  [SDR_DW-1:0]     pad_sdr_din         ; // SDRA Data Input
-output  [SDR_DW-1:0]    sdr_dout            ; // SDRAM Data Output
-output  [SDR_BW-1:0]    sdr_den_n           ; // SDRAM Data Output enable
+wire                  sdram_pad_clk       ; // Sdram clock loop back from pad
+wire                  sdr_cke             ; // SDRAM CKE
+wire 		      sdr_cs_n            ; // SDRAM Chip Select
+wire                  sdr_ras_n           ; // SDRAM ras
+wire                  sdr_cas_n           ; // SDRAM cas
+wire		      sdr_we_n            ; // SDRAM write enable
+wire [SDR_BW-1:0]     sdr_dqm             ; // SDRAM Data Mask
+wire [1:0] 	      sdr_ba              ; // SDRAM Bank Enable
+wire [12:0] 	      sdr_addr            ; // SDRAM Address
+wire [SDR_DW-1:0]     pad_sdr_din         ; // SDRA Data Input
+wire  [SDR_DW-1:0]    sdr_dout            ; // SDRAM Data Output
+wire  [SDR_BW-1:0]    sdr_den_n           ; // SDRAM Data Output enable
 
 //------------------------------------------------
 // Configuration Parameter
@@ -196,13 +199,33 @@
 wire [APP_DW-1:0]     app_wr_data        ; // sdr write data
 wire  [APP_DW-1:0]    app_rd_data        ; // sdr read data
 
-/****************************************
-*  These logic has to be implemented using Pads
-*  **************************************/
-wire  [SDR_DW-1:0]    pad_sdr_din         ; // SDRA Data Input
-wire  [SDR_DW-1:0]    sdr_dout            ; // SDRAM Data Output
-wire  [SDR_BW-1:0]    sdr_den_n           ; // SDRAM Data Output enable
+//-----------------------------------------------------------------
+// To avoid the logic at digital core, pad control are brought inside the
+// block to support efabless/carvel soc enviornmental support
+// -----------------------------------------------------------------
+assign pad_sdr_din[7:0]      =      io_in[7:0]         ;
+assign io_out     [7:0]      =      sdr_dout[7:0]      ;
+assign io_out     [20:8]     =      sdr_addr[12:0]     ;
+assign io_out     [22:21]    =      sdr_ba[1:0]        ;
+assign io_out     [23]       =      sdr_dqm[0]         ;
+assign io_out     [24]       =      sdr_we_n           ;
+assign io_out     [25]       =      sdr_cas_n          ;
+assign io_out     [26]       =      sdr_ras_n          ;
+assign io_out     [27]       =      sdr_cs_n           ;
+assign io_out     [28]       =      sdr_cke            ;
+assign io_out     [29]       =      sdram_clk          ;
+assign sdram_pad_clk         =      io_in[29]          ;
 
+assign io_oeb     [7:0]      =      sdr_den_n         ;
+assign io_oeb     [20:8]     =      {(13) {1'b0}}      ;
+assign io_oeb     [22:21]    =      {(2) {1'b0}}       ;
+assign io_oeb     [23]       =      1'b0               ;
+assign io_oeb     [24]       =      1'b0               ;
+assign io_oeb     [25]       =      1'b0               ;
+assign io_oeb     [26]       =      1'b0               ;
+assign io_oeb     [27]       =      1'b0               ;
+assign io_oeb     [28]       =      1'b0               ;
+assign io_oeb     [29]       =      1'b0               ;
 
 //assign   sdr_dq = (&sdr_den_n == 1'b0) ? sdr_dout :  {SDR_DW{1'bz}}; 
 //assign   pad_sdr_din = sdr_dq;
@@ -214,7 +237,7 @@
 /************** Ends Here **************************/
 wb2sdrc #(.dw(APP_DW),.tw(tw),.bl(bl),.APP_AW(APP_AW)) u_wb2sdrc (
       // WB bus
-          .wb_rst_i           (wb_rst_i           ) ,
+          .wb_rst_n           (wb_rst_n           ) ,
           .wb_clk_i           (wb_clk_i           ) ,
 
           .wb_stb_i           (wb_stb_i           ) ,
@@ -225,7 +248,6 @@
           .wb_sel_i           (wb_sel_i           ) ,
           .wb_dat_o           (wb_dat_o           ) ,
           .wb_cyc_i           (wb_cyc_i           ) ,
-          .wb_cti_i           (wb_cti_i           ) , 
 
 
       //SDRAM Controller Hand-Shake Signal 
diff --git a/verilog/rtl/sdram_ctrl/src/wb2sdrc/wb2sdrc.v b/verilog/rtl/sdram_ctrl/src/wb2sdrc/wb2sdrc.v
index 4a0f74b..023a3ee 100755
--- a/verilog/rtl/sdram_ctrl/src/wb2sdrc/wb2sdrc.v
+++ b/verilog/rtl/sdram_ctrl/src/wb2sdrc/wb2sdrc.v
@@ -48,7 +48,7 @@
 
 module wb2sdrc (
       // WB bus
-                    wb_rst_i            ,
+                    wb_rst_n            ,
                     wb_clk_i            ,
 
                     wb_stb_i            ,
@@ -59,7 +59,6 @@
                     wb_sel_i            ,
                     wb_dat_o            ,
                     wb_cyc_i            ,
-                    wb_cti_i            , 
 
 
       //SDRAM Controller Hand-Shake Signal 
@@ -87,7 +86,7 @@
 //--------------------------------------
 // Wish Bone Interface
 // -------------------------------------      
-input                   wb_rst_i           ;
+input                   wb_rst_n           ;
 input                   wb_clk_i           ;
 
 input                   wb_stb_i           ;
@@ -98,7 +97,6 @@
 input [dw/8-1:0]        wb_sel_i           ; // Byte enable
 output [dw-1:0]         wb_dat_o           ;
 input                   wb_cyc_i           ;
-input  [2:0]            wb_cti_i           ;
 /***************************************************
 The Cycle Type Idenfier [CTI_IO()] Address Tag provides 
 additional information about the current cycle. 
@@ -199,8 +197,8 @@
 //     set - with Read Request 
 //     reset - with Read Request + Ack
 // ----------------------------------------------------------------------------
-always @(posedge wb_rst_i or posedge wb_clk_i) begin
-   if(wb_rst_i) begin
+always @(negedge wb_rst_n or posedge wb_clk_i) begin
+   if(!wb_rst_n) begin
        pending_read <= 1'b0;
    end else begin
       //pending_read <=  wb_stb_i & wb_cyc_i & !wb_we_i & !wb_ack_o;
@@ -217,7 +215,7 @@
     async_fifo #(.W(APP_AW+bl+1),.DP(4),.WR_FAST(1'b0), .RD_FAST(1'b0)) u_cmdfifo (
      // Write Path Sys CLock Domain
           .wr_clk             (wb_clk_i           ),
-          .wr_reset_n         (!wb_rst_i          ),
+          .wr_reset_n         (wb_rst_n           ),
           .wr_en              (cmdfifo_wr         ),
           .wr_data            ({burst_length, 
 	                        !wb_we_i, 
@@ -275,7 +273,7 @@
     async_fifo #(.W(dw+(dw/8)), .DP(8), .WR_FAST(1'b0), .RD_FAST(1'b1)) u_wrdatafifo (
        // Write Path , System clock domain
           .wr_clk             (wb_clk_i           ),
-          .wr_reset_n         (!wb_rst_i          ),
+          .wr_reset_n         (wb_rst_n           ),
           .wr_en              (wrdatafifo_wr      ),
           .wr_data            ({~wb_sel_i, 
 	                         wb_dat_i}        ),
@@ -345,7 +343,7 @@
 
        // Read Path , SYS clock domain
           .rd_clk             (wb_clk_i           ),
-          .rd_reset_n         (!wb_rst_i          ),
+          .rd_reset_n         (wb_rst_n           ),
           .empty              (rddatafifo_empty   ),
           .aempty             (                   ),
           .rd_en              (rddatafifo_rd      ),
diff --git a/verilog/rtl/spi_master/src/spim_top.sv b/verilog/rtl/spi_master/src/spim_top.sv
index 3c322fa..a405e9a 100644
--- a/verilog/rtl/spi_master/src/spim_top.sv
+++ b/verilog/rtl/spi_master/src/spim_top.sv
@@ -16,6 +16,9 @@
 ////                                                              ////
 ////  Revision :                                                  ////
 ////     V.0  -  June 8, 2021                                     //// 
+////     V.1  - June 25, 2021                                     ////
+////            Pad logic is brought inside the block to avoid    ////
+////            logic at digital core level for caravel project   ////
 ////                                                              ////
 //////////////////////////////////////////////////////////////////////
 ////                                                              ////
@@ -62,23 +65,13 @@
     output logic                         wbd_ack_o, // acknowlegement
     output logic                         wbd_err_o,  // error
 
-    output logic                    [1:0] events_o,
+    output logic                   [1:0] events_o,
 
-    output logic                          spi_clk,
-    output logic                          spi_csn0,
-    output logic                          spi_csn1,
-    output logic                          spi_csn2,
-    output logic                          spi_csn3,
-    output logic                    [1:0] spi_mode,
-    output logic                          spi_sdo0,
-    output logic                          spi_sdo1,
-    output logic                          spi_sdo2,
-    output logic                          spi_sdo3,
-    input  logic                          spi_sdi0,
-    input  logic                          spi_sdi1,
-    input  logic                          spi_sdi2,
-    input  logic                          spi_sdi3,
-    output logic                          spi_en_tx
+    // PAD I/f
+    input  [5:0]                         io_in    ,
+    output  [5:0]                        io_out   ,
+    output  [5:0]                        io_oeb
+
 );
 
 
@@ -121,6 +114,45 @@
     logic         s_eot;
 
 
+//-------------------------------------------------------
+// SPI Interface moved inside to support carvel IO pad 
+// -------------------------------------------------------
+
+logic                          spi_clk;
+logic                          spi_csn0;
+logic                          spi_csn1;
+logic                          spi_csn2;
+logic                          spi_csn3;
+logic                    [1:0] spi_mode;
+logic                          spi_sdo0;
+logic                          spi_sdo1;
+logic                          spi_sdo2;
+logic                          spi_sdo3;
+logic                          spi_sdi0;
+logic                          spi_sdi1;
+logic                          spi_sdi2;
+logic                          spi_sdi3;
+logic                          spi_en_tx;
+
+
+assign  spi_sdi0  =  io_in[2];
+assign  spi_sdi1  =  io_in[3];
+assign  spi_sdi2  =  io_in[4];
+assign  spi_sdi3  =  io_in[5];
+
+assign  io_out[0] =  spi_clk;
+assign  io_out[1] =  spi_csn0;
+assign  io_out[2] =  spi_sdo0;
+assign  io_out[3] =  spi_sdo1;
+assign  io_out[4] =  spi_sdo2;
+assign  io_out[5] =  spi_sdo3;
+   
+assign  io_oeb[0] =  1'b0;         // spi_clk
+assign  io_oeb[1] =  1'b0;         // spi_csn
+assign  io_oeb[2] =  !spi_en_tx;   // spi_dio0
+assign  io_oeb[3] =  !spi_en_tx;   // spi_dio1
+assign  io_oeb[4] =  !spi_en_tx;   // spi_dio2
+assign  io_oeb[5] =  !spi_en_tx;   // spi_dio3
 
 
 
diff --git a/verilog/rtl/syntacore/scr1/src/top/scr1_top_wb.sv b/verilog/rtl/syntacore/scr1/src/top/scr1_top_wb.sv
index d72afd1..3ded0b8 100644
--- a/verilog/rtl/syntacore/scr1/src/top/scr1_top_wb.sv
+++ b/verilog/rtl/syntacore/scr1/src/top/scr1_top_wb.sv
@@ -70,8 +70,8 @@
     input   logic                                   pwrup_rst_n,            // Power-Up Reset
     input   logic                                   rst_n,                  // Regular Reset signal
     input   logic                                   cpu_rst_n,              // CPU Reset (Core Reset)
-    input   logic                                   test_mode,              // Test mode
-    input   logic                                   test_rst_n,             // Test mode's reset
+    // input   logic                                   test_mode,              // Test mode - unused
+    // input   logic                                   test_rst_n,             // Test mode's reset - unused
     input   logic                                   core_clk,               // Core clock
     input   logic                                   rtc_clk,                // Real-time clock
 `ifdef SCR1_DBG_EN
@@ -138,6 +138,8 @@
 // Local signal declaration
 //-------------------------------------------------------------------------------
 // Reset logic
+logic                                               test_mode;              // Test mode - unused
+logic                                               test_rst_n;             // Test mode's reset - unused
 logic                                               pwrup_rst_n_sync;
 logic                                               rst_n_sync;
 logic                                               cpu_rst_n_sync;
@@ -216,6 +218,12 @@
 logic [63:0]                                        timer_val;
 
 
+//---------------------------------------------------------------------------------
+// To avoid core level power hook up, we have brought this signal inside, to
+// avoid any cell at digital core level
+// --------------------------------------------------------------------------------
+assign test_mode = 1'b0;
+assign test_rst_n = 1'b0;
 //-------------------------------------------------------------------------------
 // Reset logic
 //-------------------------------------------------------------------------------
diff --git a/verilog/rtl/uart/src/uart_core.sv b/verilog/rtl/uart/src/uart_core.sv
index 258c134..09b3f6a 100644
--- a/verilog/rtl/uart/src/uart_core.sv
+++ b/verilog/rtl/uart/src/uart_core.sv
@@ -17,6 +17,9 @@
 ////    0.1 - 20th June 2021, Dinesh A                            ////
 ////        1. initial version picked from                        ////
 ////          http://www.opencores.org/cores/oms8051mini          ////
+////    0.2 - 25th June 2021, Dinesh A                            ////
+////        Pad logic moved inside core to avoid combo logic at   ////
+////        soc digital core level                                ////
 ////                                                              ////
 //////////////////////////////////////////////////////////////////////
 ////                                                              ////
@@ -49,23 +52,24 @@
 
      (  
 
-        arst_n  , // async reset
-        app_clk ,
+   input logic         arst_n  , // async reset
+   input logic         app_clk ,
 
         // Reg Bus Interface Signal
-        reg_cs,
-        reg_wr,
-        reg_addr,
-        reg_wdata,
-        reg_be,
+   input logic         reg_cs,
+   input logic         reg_wr,
+   input logic [3:0]   reg_addr,
+   input logic [7:0]   reg_wdata,
+   input logic         reg_be,
 
         // Outputs
-        reg_rdata,
-        reg_ack,
+   output logic [7:0]  reg_rdata,
+   output logic        reg_ack,
 
-       // Line Interface
-        si,
-        so
+       // Pad Control
+   input  logic [1:0]  io_in,
+   output logic [1:0]  io_out,
+   output logic [1:0]  io_oeb
 
      );
 
@@ -85,26 +89,6 @@
 
 
 
-input        arst_n               ; // async reset
-input        app_clk              ; // application clock
-
-//---------------------------------
-// Reg Bus Interface Signal
-//---------------------------------
-input             reg_cs         ;
-input             reg_wr         ;
-input [3:0]       reg_addr       ;
-input [7:0]       reg_wdata      ;
-input             reg_be         ;
-
-// Outputs
-output [7:0]      reg_rdata      ;
-output            reg_ack        ;
-
-// Line Interface
-input         si                  ; // uart si
-output        so                  ; // uart so
-
 // Wire Declaration
 wire            app_reset_n       ;
 wire            line_reset_n      ;
@@ -138,6 +122,22 @@
 wire [AW:0]    rx_fifo_dval          ; // Total Rx fifo Data Available
 wire           si_ss                 ;
 
+
+/////////////////////////////////////////////////////////
+// uart interface
+///////////////////////////////////////////////////////
+
+wire            si                  ; 
+wire            so                  ;
+
+// for uart
+assign  io_oeb[0] =  1'b1; // Uart RX
+assign  si        =  io_in[0];
+assign  io_out[0] =  1'b0;
+
+assign  io_oeb[1] =  1'b0; // Uart TX
+assign  io_out[1]  =  so;
+
 uart_cfg u_cfg (
 
              . mclk                (app_clk),
diff --git a/verilog/rtl/uprj_netlists.v b/verilog/rtl/uprj_netlists.v
index ba06633..e31d589 100644
--- a/verilog/rtl/uprj_netlists.v
+++ b/verilog/rtl/uprj_netlists.v
@@ -54,6 +54,9 @@
      `include "digital_core/src/glbl_cfg.sv"
      `include "digital_core/src/digital_core.sv"
 
+     `include "wb_host/src/wb_host.sv"
+     `include "lib/async_wb.sv"
+
      `include "lib/wb_stagging.sv"
      `include "wb_interconnect/src/wb_arb.sv"
      `include "wb_interconnect/src/wb_interconnect.sv"
diff --git a/verilog/rtl/user_project_wrapper.v b/verilog/rtl/user_project_wrapper.v
index 303a53d..bf72715 100644
--- a/verilog/rtl/user_project_wrapper.v
+++ b/verilog/rtl/user_project_wrapper.v
@@ -103,7 +103,6 @@
     .wbd_ext_dat_i(wbs_dat_i),
     .wbd_ext_ack_o(wbs_ack_o),
     .wbd_ext_dat_o(wbs_dat_o),
-    .wbd_ext_err_o(),
 
     // Logic Analyzer
 
diff --git a/verilog/rtl/wb_interconnect/src/wb_interconnect.sv b/verilog/rtl/wb_interconnect/src/wb_interconnect.sv
index 410dc9b..e6c9f40 100644
--- a/verilog/rtl/wb_interconnect/src/wb_interconnect.sv
+++ b/verilog/rtl/wb_interconnect/src/wb_interconnect.sv
@@ -22,6 +22,12 @@
 ////          path                                                ////
 ////    0.3 - 21th June 2021, Dinesh A                            ////
 ////          slave port 3 added for uart                         ////
+////    0.4 - 25th June 2021, Dinesh A                            ////
+////          External Memory Map changed and made same as        ////
+////          internal memory map                                 ////
+////    0.4 - 27th June 2021, Dinesh A                            ////
+////          unused tie off at digital core level brought inside ////
+////          to avoid core level power hook up                   ////
 ////                                                              ////
 //////////////////////////////////////////////////////////////////////
 ////                                                              ////
@@ -93,7 +99,7 @@
          // Slave 0 Interface
          input	logic [31:0]	s0_wbd_dat_i,
          input	logic 	        s0_wbd_ack_i,
-         input	logic 	        s0_wbd_err_i,
+         //input	logic 	s0_wbd_err_i, - unused
          output	logic [31:0]	s0_wbd_dat_o,
          output	logic [31:0]	s0_wbd_adr_o,
          output	logic [3:0]	s0_wbd_sel_o,
@@ -104,7 +110,7 @@
          // Slave 1 Interface
          input	logic [31:0]	s1_wbd_dat_i,
          input	logic 	        s1_wbd_ack_i,
-         input	logic 	        s1_wbd_err_i,
+         // input	logic 	s1_wbd_err_i, - unused
          output	logic [31:0]	s1_wbd_dat_o,
          output	logic [31:0]	s1_wbd_adr_o,
          output	logic [3:0]	s1_wbd_sel_o,
@@ -115,7 +121,7 @@
          // Slave 2 Interface
          input	logic [31:0]	s2_wbd_dat_i,
          input	logic 	        s2_wbd_ack_i,
-         input	logic 	        s2_wbd_err_i,
+         // input	logic 	s2_wbd_err_i, - unused
          output	logic [31:0]	s2_wbd_dat_o,
          output	logic [7:0]	s2_wbd_adr_o, // glbl reg need only 8 bits
          output	logic [3:0]	s2_wbd_sel_o,
@@ -127,7 +133,7 @@
 	 // Uart is 8bit interface 
          input	logic [7:0]	s3_wbd_dat_i,
          input	logic 	        s3_wbd_ack_i,
-         input	logic 	        s3_wbd_err_i,
+         // input	logic 	s3_wbd_err_i,
          output	logic [7:0]	s3_wbd_dat_o,
          output	logic [7:0]	s3_wbd_adr_o, 
          output	logic    	s3_wbd_sel_o,
@@ -213,15 +219,17 @@
 
 //-------------------------------------------------------------------
 // EXTERNAL MEMORY MAP
-// 0x3000_0000 to 0x3000_00FF -  GLOBAL REGISTER
+// 0x0000_0000 to 0x0FFF_FFFF  - SPI FLASH MEMORY
+// 0x1000_0000 to 0x1000_00FF  - SPI REGISTER
+// 0x2000_0000 to 0x2FFF_FFFF  - SDRAM
+// 0x3000_0000 to 0x3000_00FF  - GLOBAL REGISTER
 // 0x3000_0000 to 0x3001_00FF  - UART Register
-// 0x4000_0000 to 0x4FFF_FFFF -  SPI FLASH MEMORY
-// 0x5000_0000 to 0x5000_00FF -  SPI REGISTER
-// 0x6000_0000 to 0x6FFF_FFFF -  SDRAM
+// 0x3080_0000 to 0x3080_00FF  - WB HOST (This decoding happens at wb_host block)
+// ---------------------------------------------------------------------------
 //
-wire [3:0] m2_wbd_tid_i       = (m2_wbd_adr_i[31:28] == 4'b0100 ) ? 4'b0000 :
-                                (m2_wbd_adr_i[31:28] == 4'b0101 ) ? 4'b0000 :
-                                (m2_wbd_adr_i[31:28] == 4'b0110 ) ? 4'b0001 :
+wire [3:0] m2_wbd_tid_i       = (m2_wbd_adr_i[31:28] == 4'b0000  ) ? 4'b0000 :
+                                (m2_wbd_adr_i[31:28] == 4'b0001  ) ? 4'b0000 :
+                                (m2_wbd_adr_i[31:28] == 4'b0010  ) ? 4'b0001 :
                                 (m2_wbd_adr_i[31:16] == 16'h3000 ) ? 4'b0010 : 
                                 (m2_wbd_adr_i[31:16] == 16'h3001 ) ? 4'b0011 : 4'b0000; 
 
@@ -298,19 +306,19 @@
  
  assign s0_wb_rd.wbd_dat  = s0_wbd_dat_i ;
  assign s0_wb_rd.wbd_ack  = s0_wbd_ack_i ;
- assign s0_wb_rd.wbd_err  = s0_wbd_err_i ;
+ assign s0_wb_rd.wbd_err  = 1'b0; // s0_wbd_err_i ; - unused
  
  assign s1_wb_rd.wbd_dat  = s1_wbd_dat_i ;
  assign s1_wb_rd.wbd_ack  = s1_wbd_ack_i ;
- assign s1_wb_rd.wbd_err  = s1_wbd_err_i ;
+ assign s1_wb_rd.wbd_err  = 1'b0; // s1_wbd_err_i ; - unused
  
  assign s2_wb_rd.wbd_dat  = s2_wbd_dat_i ;
  assign s2_wb_rd.wbd_ack  = s2_wbd_ack_i ;
- assign s2_wb_rd.wbd_err  = s2_wbd_err_i ;
+ assign s2_wb_rd.wbd_err  = 1'b0; // s2_wbd_err_i ; - unused
 
  assign s3_wb_rd.wbd_dat  = {24'h0,s3_wbd_dat_i} ;
  assign s3_wb_rd.wbd_ack  = s3_wbd_ack_i ;
- assign s3_wb_rd.wbd_err  = s3_wbd_err_i ;
+ assign s3_wb_rd.wbd_err  = 1'b0; // s3_wbd_err_i ; - unused
 
 //
 // arbitor