tcm memory access bug fix and riscv regression update
diff --git a/README.md b/README.md
index 28a6d02..7271967 100644
--- a/README.md
+++ b/README.md
@@ -533,6 +533,7 @@
     make verify-user_risc_boot
     make verify-wb_port SIM=RTL DUMP=OFF
     make verify-wb_port SIM=RTL DUMP=ON
+    make verify-riscv_regress
 ```
 
 # Tool Sets
diff --git a/signoff/pinmux/final_summary_report.csv b/signoff/pinmux/final_summary_report.csv
index 86fc231..7241d94 100644
--- a/signoff/pinmux/final_summary_report.csv
+++ b/signoff/pinmux/final_summary_report.csv
@@ -1,2 +1,2 @@
 ,design,design_name,config,flow_status,total_runtime,routed_runtime,(Cell/mm^2)/Core_Util,DIEAREA_mm^2,CellPer_mm^2,OpenDP_Util,Peak_Memory_Usage_MB,cell_count,tritonRoute_violations,Short_violations,MetSpc_violations,OffGrid_violations,MinHole_violations,Other_violations,Magic_violations,antenna_violations,lvs_total_errors,cvc_total_errors,klayout_violations,wire_length,vias,wns,pl_wns,optimized_wns,fastroute_wns,spef_wns,tns,pl_tns,optimized_tns,fastroute_tns,spef_tns,HPWL,routing_layer1_pct,routing_layer2_pct,routing_layer3_pct,routing_layer4_pct,routing_layer5_pct,routing_layer6_pct,wires_count,wire_bits,public_wires_count,public_wire_bits,memories_count,memory_bits,processes_count,cells_pre_abc,AND,DFF,NAND,NOR,OR,XOR,XNOR,MUX,inputs,outputs,level,EndCaps,TapCells,Diodes,Total_Physical_Cells,suggested_clock_frequency,suggested_clock_period,CLOCK_PERIOD,SYNTH_STRATEGY,SYNTH_MAX_FANOUT,FP_CORE_UTIL,FP_ASPECT_RATIO,FP_PDN_VPITCH,FP_PDN_HPITCH,PL_TARGET_DENSITY,GLB_RT_ADJUSTMENT,STD_CELL_LIBRARY,CELL_PAD,DIODE_INSERTION_STRATEGY
-0,/project/openlane/pinmux,pinmux,pinmux,flow_completed,0h16m7s,-1,46012.12121212122,0.2475,23006.06060606061,27.04,716.55,5694,0,0,0,0,0,0,-1,1,0,-1,-1,421256,61213,0.0,0.0,-1,0.0,-1,0.0,0.0,-1,0.0,-1,310056895.0,4.48,43.44,33.22,9.4,0.43,-1,3565,8555,538,5527,0,0,0,4197,0,0,0,0,0,0,0,4,1341,1339,16,314,3259,0,3573,90.9090909090909,11,10,AREA 0,4,50,1,100,100,0.3,0.0,sky130_fd_sc_hd,4,4
+0,/project/openlane/pinmux,pinmux,pinmux,flow_completed,0h17m10s,-1,46012.12121212122,0.2475,23006.06060606061,27.04,701.62,5694,0,0,0,0,0,0,-1,1,0,-1,-1,421176,61049,0.0,0.0,-1,0.0,-1,0.0,0.0,-1,0.0,-1,309535459.0,5.55,42.43,32.83,10.82,0.75,-1,3565,8555,538,5527,0,0,0,4197,0,0,0,0,0,0,0,4,1341,1339,16,314,3259,0,3573,90.9090909090909,11,10,AREA 0,4,50,1,100,100,0.3,0.0,sky130_fd_sc_hd,4,4
diff --git a/signoff/syntacore/final_summary_report.csv b/signoff/syntacore/final_summary_report.csv
index d573af1..04c97bd 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,0h35m5s,-1,53092.1052631579,0.7904,26546.05263157895,30.7,1184.14,20982,0,-1,-1,-1,-1,0,-1,1,0,-1,-1,1620249,234724,-2.04,-17.66,-1,-0.03,-1,-2476.75,-21882.2,-1,-0.03,-1,1288559929.0,1.19,62.41,23.31,23.29,0.0,-1,18371,29934,1071,12527,0,0,0,21750,0,0,0,0,0,0,0,4,5144,5851,49,366,10822,0,11188,90.9090909090909,11,10,AREA 0,4,50,1,100,100,0.32,0.0,sky130_fd_sc_hd,4,4
+0,/project/openlane/syntacore,scr1_top_wb,syntacore,flow_completed,0h41m48s,-1,53830.971659919036,0.7904,26915.485829959518,30.93,1195.5,21274,0,-1,-1,-1,-1,0,-1,1,0,-1,-1,1674760,240681,-2.04,-17.8,-1,0.0,-1,-2459.49,-21655.63,-1,0.0,-1,1322263875.0,0.0,62.03,24.69,26.16,0.01,-1,18597,30067,1067,12430,0,0,0,21980,0,0,0,0,0,0,0,4,5240,5924,49,366,10822,0,11188,90.9090909090909,11,10,AREA 0,4,50,1,100,100,0.32,0.0,sky130_fd_sc_hd,4,4
diff --git a/signoff/user_project_wrapper/final_summary_report.csv b/signoff/user_project_wrapper/final_summary_report.csv
index 22fcfa7..a6e08b8 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,0h40m44s,-1,2.529576587795766,10.2784,1.264788293897883,-1,530.43,13,0,0,0,0,0,0,-1,0,0,-1,-1,1176232,8172,0.0,-1,-1,0.0,-1,0.0,-1,-1,0.0,-1,-1,40144.36,3.16,3.63,0.42,0.66,-1,271,2532,271,2532,0,0,0,13,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,90.9090909090909,11,10,AREA 0,5,50,1,180,90,0.55,0.0,sky130_fd_sc_hd,4,0
+0,/project/openlane/user_project_wrapper,user_project_wrapper,user_project_wrapper,flow_completed,0h41m51s,-1,2.529576587795766,10.2784,1.264788293897883,-1,531.06,13,0,0,0,0,0,0,-1,0,0,-1,-1,1176475,8150,0.0,-1,-1,0.0,-1,0.0,-1,-1,0.0,-1,-1,40144.36,3.16,3.67,0.41,0.59,-1,271,2532,271,2532,0,0,0,13,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,90.9090909090909,11,10,AREA 0,5,50,1,180,90,0.55,0.0,sky130_fd_sc_hd,4,0
diff --git a/verilog/dv/agents/uart_agent.v b/verilog/dv/agents/uart_agent.v
index 2ed5686..72121e9 100644
--- a/verilog/dv/agents/uart_agent.v
+++ b/verilog/dv/agents/uart_agent.v
@@ -63,10 +63,10 @@
 always @(posedge mclk)
 begin
    if (clk_count == 'h0) begin
-      uart_clk <= ~uart_clk;
-      clk_count <= control_setup.divisor;	
+      uart_clk  = ~uart_clk;
+      clk_count = control_setup.divisor;	
    end else begin
-      clk_count <= clk_count - 1;	
+      clk_count = clk_count - 1;	
    end
 end
 assign uart_rx_clk = uart_clk;
@@ -124,6 +124,7 @@
   stop_err2_cnt = 0;
   timeout_err_cnt = 0;
   err_cnt = 0;
+  clk_count = 0;
 
 end 
 endtask 
@@ -202,9 +203,6 @@
 		  end
 	end
 
-
-// wait another half cycle for tx_done signal
-		@(negedge uart_rx_clk);
 	read <= 0;
 	-> uart_read_done;
 
@@ -299,8 +297,6 @@
 		  end
 	end
 
-// wait another half cycle for tx_done signal
-		@(negedge uart_rx_clk);
 	read <= 0;
 	-> uart_read_done;
 
@@ -397,9 +393,6 @@
 		  end
 	end
 
-
-// wait another half cycle for tx_done signal
-		@(negedge uart_rx_clk);
 	read <= 0;
 	-> uart_read_done;
 
diff --git a/verilog/dv/risc_boot/risc_boot_tb.v b/verilog/dv/risc_boot/risc_boot_tb.v
index 38144e8..4332e90 100644
--- a/verilog/dv/risc_boot/risc_boot_tb.v
+++ b/verilog/dv/risc_boot/risc_boot_tb.v
@@ -134,6 +134,7 @@
            $dumpvars(1,risc_boot_tb.u_spi_flash_256mb);
            //$dumpvars(2,risc_boot_tb.uut);
            $dumpvars(4,risc_boot_tb.uut.mprj);
+           $dumpvars(0,risc_boot_tb.tb_uart);
            //$dumpvars(0,risc_boot_tb.u_user_spiflash);
 	   $display("Waveform Dump started");
         end
@@ -152,52 +153,65 @@
            uart_fifo_enable        = 0;	// fifo mode disable
         
            #200; // Wait for reset removal
-          
-	   // Wait for Managment core to boot up 
-	   wait(checkbits == 16'h AB60);
-	   $display("Monitor: Test User Risc Boot Started");
-       
-	   // Wait for user risc core to boot up 
-           repeat (25000) @(posedge clock);  
-           tb_uart.uart_init;
-           tb_uart.control_setup (uart_data_bit, uart_stop_bits, uart_parity_en, uart_even_odd_parity, 
-        	                          uart_stick_parity, uart_timeout, uart_divisor);
-           
-           for (i=0; i<40; i=i+1)
-           	uart_write_data[i] = $random;
-           
-           
-           
+
            fork
-              begin
-                 for (i=0; i<40; i=i+1)
+	   begin
+          
+	      // Wait for Managment core to boot up 
+	      wait(checkbits == 16'h AB60);
+	      $display("Monitor: Test User Risc Boot Started");
+       
+	      // Wait for user risc core to boot up 
+              repeat (25000) @(posedge clock);  
+              tb_uart.uart_init;
+              tb_uart.control_setup (uart_data_bit, uart_stop_bits, uart_parity_en, uart_even_odd_parity, 
+                                             uart_stick_parity, uart_timeout, uart_divisor);
+              
+              for (i=0; i<40; i=i+1)
+              	uart_write_data[i] = $random;
+              
+              
+              
+              fork
                  begin
-                   $display ("\n... UART Agent Writing char %x ...", uart_write_data[i]);
-                    tb_uart.write_char (uart_write_data[i]);
+                    for (i=0; i<40; i=i+1)
+                    begin
+                      $display ("\n... UART Agent Writing char %x ...", uart_write_data[i]);
+                       tb_uart.write_char (uart_write_data[i]);
+                    end
                  end
-              end
-           
-              begin
-                 for (j=0; j<40; j=j+1)
+              
                  begin
-                   tb_uart.read_char_chk(uart_write_data[j]);
+                    for (j=0; j<40; j=j+1)
+                    begin
+                      tb_uart.read_char_chk(uart_write_data[j]);
+                    end
                  end
+                 join
+              
+                 #100
+                 tb_uart.report_status(uart_rx_nu, uart_tx_nu);
+              
+                 test_fail = 0;
+        
+                 // Check 
+                 // if all the 40 byte transmitted
+                 // if all the 40 byte received
+                 // if no error 
+                 if(uart_tx_nu != 40) test_fail = 1;
+                 if(uart_rx_nu != 40) test_fail = 1;
+                 if(tb_uart.err_cnt != 0) test_fail = 1;
+        
+	      end
+	      begin
+                   // Loop for TimeOut
+                   repeat (60000) @(posedge clock);
+                		// $display("+1000 cycles");
+                   test_fail = 1;
               end
-              join
-           
-              #100
-              tb_uart.report_status(uart_rx_nu, uart_tx_nu);
-           
-              test_fail = 0;
-        
-              // Check 
-              // if all the 40 byte transmitted
-              // if all the 40 byte received
-              // if no error 
-              if(uart_tx_nu != 40) test_fail = 1;
-              if(uart_rx_nu != 40) test_fail = 1;
-              if(tb_uart.err_cnt != 0) test_fail = 1;
-        
+              join_any
+              disable fork; //disable pending fork activity
+
               $display("###################################################");
               if(test_fail == 0) begin
                  `ifdef GL
diff --git a/verilog/dv/riscv_regress/Makefile b/verilog/dv/riscv_regress/Makefile
index 1958002..645b9cd 100644
--- a/verilog/dv/riscv_regress/Makefile
+++ b/verilog/dv/riscv_regress/Makefile
@@ -137,6 +137,7 @@
 UPRJ_INCLUDE_PATH2 = $(UPRJ_RTL_PATH)/sdram_ctrl/src/defs
 UPRJ_INCLUDE_PATH3 = $(UPRJ_RTL_PATH)/i2cm/src/includes
 UPRJ_INCLUDE_PATH4 = $(UPRJ_RTL_PATH)/usb1_host/src/includes
+UPRJ_INCLUDE_PATH5 = $(UPRJ_RTL_PATH)/mbist/include
 
 sv_list            = ../../user_risc_regress_tb.v
 top_module         = user_risc_regress_tb
@@ -157,7 +158,8 @@
 export RISCV_GCC     ?= $(CROSS_PREFIX)gcc
 export RISCV_OBJDUMP ?= $(CROSS_PREFIX)objdump -D
 export RISCV_ROM_OBJCOPY ?= $(CROSS_PREFIX)objcopy -j .text.init -j .text -j .rodata -j .rodata.str1.4 -O verilog
-export RISCV_RAM_OBJCOPY ?= $(CROSS_PREFIX)objcopy -R .text.init -R .text -R .rodata -R .rodata.str1.4 -O verilog
+#Seperate the RAM content and write out in 32bit Little endian format to load it to TCM Memory
+export RISCV_RAM_OBJCOPY ?= $(CROSS_PREFIX)objcopy -R .text.init -R .text -R .rodata -R .rodata.str1.4 -R .riscv.attributes -O verilog --verilog-data-width=4 --reverse-bytes=4
 export RISCV_READELF ?= $(CROSS_PREFIX)readelf -s
 
 ifneq (,$(findstring e,$(ARCH_lowercase)))
@@ -172,27 +174,27 @@
 ifeq (,$(findstring e,$(ARCH_lowercase)))
 	# These tests cannot be compiled for RVE
 	# Comment this target if you don't want to run the riscv_isa
-	#TARGETS += riscv_isa
+	TARGETS += riscv_isa
 
 	# Comment this target if you don't want to run the riscv_compliance
-	#TARGETS += riscv_compliance
+	TARGETS += riscv_compliance
 endif
 
 # Comment this target if you don't want to run the isr_sample
 #TARGETS += isr_sample
 
 # Comment this target if you don't want to run the coremark
-TARGETS += coremark
+#TARGETS += coremark
 
 # Comment this target if you don't want to run the dhrystone
 #TARGETS += dhrystone21
 
 # Comment this target if you don't want to run the hello test
-#TARGETS += hello
+TARGETS += hello
 
 
 # Targets
-.PHONY: tests run_iverilog run_modelsim run_modelsim_wlf run_vcs run_ncsim run_verilator run_verilator_wf
+.PHONY: tests run_iverilog run_modelsim run_modelsim_wlf run_vcs run_ncsim run_verilator run_verilator_wf run_iverilog_wf
 
 default: clean_test_list run_iverilog
 
@@ -270,7 +272,7 @@
 	-I $(UPRJ_BEHAVIOURAL_MODELS)    -I $(UPRJ_RTL_PATH) -I $(UPRJ_VERILOG_PATH) \
 	-I $(UPRJ_BEHAVIOURAL_AGENTS)    \
 	-I $(UPRJ_INCLUDE_PATH1)    -I $(UPRJ_INCLUDE_PATH2) -I $(UPRJ_INCLUDE_PATH3) \
-	-I $(UPRJ_INCLUDE_PATH4) -I $(UPRJ_TESTS_PATH) \
+	-I $(UPRJ_INCLUDE_PATH4) -I $(UPRJ_INCLUDE_PATH5) -I $(UPRJ_TESTS_PATH) \
 	$(sv_list) \
 	-o $(top_module).vvp; \
 	printf "" > $(test_results); \
@@ -290,7 +292,7 @@
 	-I $(UPRJ_BEHAVIOURAL_MODELS)    -I $(UPRJ_RTL_PATH) -I $(UPRJ_VERILOG_PATH) \
 	-I $(UPRJ_BEHAVIOURAL_AGENTS)    \
 	-I $(UPRJ_INCLUDE_PATH1)    -I $(UPRJ_INCLUDE_PATH2) -I $(UPRJ_INCLUDE_PATH3) \
-	-I $(UPRJ_INCLUDE_PATH4) -I $(UPRJ_TESTS_PATH) \
+	-I $(UPRJ_INCLUDE_PATH4) -I $(UPRJ_INCLUDE_PATH5) -I $(UPRJ_TESTS_PATH) \
 	$(sv_list) \
 	-o $(top_module).vvp; \
 	printf "" > $(test_results); \
diff --git a/verilog/dv/riscv_regress/riscv_runtests.sv b/verilog/dv/riscv_regress/riscv_runtests.sv
index 8f12e4e..bfbb3bb 100644
--- a/verilog/dv/riscv_regress/riscv_runtests.sv
+++ b/verilog/dv/riscv_regress/riscv_runtests.sv
@@ -55,8 +55,8 @@
 **/
 /**
   logic [31:0] test_count;
- `define RISC_CORE  i_top.i_core_top
- `define RISC_EXU  i_top.i_core_top.i_pipe_top.i_pipe_exu
+ `define RISC_CORE  u_top.u_riscv_top.i_core_top
+ `define RISC_EXU  u_top.u_riscv_top.i_core_top.i_pipe_top.i_pipe_exu
 
  initial begin
 	 test_count = 0;
@@ -70,7 +70,6 @@
 	  end
  end
 **/
-
 always_ff @(posedge clk) begin
     bit test_pass;
     int unsigned                            f_test;
@@ -140,10 +139,10 @@
 `endif
                     fd = $fopen(tmpstr, "w");
                     while ((start != stop)) begin
-                        test_data[31:24] = u_sdram8.Bank0[(start & 32'h1FFF)+3];
-                        test_data[23:16] = u_sdram8.Bank0[(start & 32'h1FFF)+2];
-                        test_data[15:8]  = u_sdram8.Bank0[(start & 32'h1FFF)+1];
-                        test_data[7:0]   = u_sdram8.Bank0[(start & 32'h1FFF)+0];
+                        test_data[31:24] = u_top.u_tsram0_2kb.mem[(start & 32'h1FFF)+3];
+                        test_data[23:16] = u_top.u_tsram0_2kb.mem[(start & 32'h1FFF)+2];
+                        test_data[15:8]  = u_top.u_tsram0_2kb.mem[(start & 32'h1FFF)+1];
+                        test_data[7:0]   = u_top.u_tsram0_2kb.mem[(start & 32'h1FFF)+0];
                         $fwrite(fd, "%x", test_data);
                         $fwrite(fd, "%s", "\n");
                         start += 4;
@@ -167,10 +166,10 @@
 			// Assumed all signaure are with-in first 512 location of memory, 
 			// other-wise need to switch bank
 			// --------------------------------------------------
-                        test_data[31:24] = u_sdram8.Bank0[(start & 32'h1FFF)+3];
-                        test_data[23:16] = u_sdram8.Bank0[(start & 32'h1FFF)+2];
-                        test_data[15:8]  = u_sdram8.Bank0[(start & 32'h1FFF)+1];
-                        test_data[7:0]   = u_sdram8.Bank0[(start & 32'h1FFF)+0];
+                        test_data[31:24] = u_top.u_tsram0_2kb.mem[(start & 32'h1FFF)+3];
+                        test_data[23:16] = u_top.u_tsram0_2kb.mem[(start & 32'h1FFF)+2];
+                        test_data[15:8]  = u_top.u_tsram0_2kb.mem[(start & 32'h1FFF)+1];
+                        test_data[7:0]   = u_top.u_tsram0_2kb.mem[(start & 32'h1FFF)+0];
 			//$display("Compare Addr: %x ref_data : %x, test_data: %x",start,ref_data,test_data);
                         test_pass &= (ref_data == test_data);
 			if(ref_data != test_data)
@@ -186,8 +185,11 @@
                         $write("\033[0;31mTest failed-2\033[0m\n");
                     end
                 `endif  // SIGNATURE_OUT
-            end else begin
+            end else begin // Non compliance mode
                 test_running <= 1'b0;
+		if(u_top.u_riscv_top.i_core_top.i_pipe_top.i_pipe_mprf.mprf_int[10] != 0)
+		   $display("ERROR: mprf_int[10]: %x not zero",u_top.u_riscv_top.i_core_top.i_pipe_top.i_pipe_mprf.mprf_int[10]);
+
                 test_pass = (u_top.u_riscv_top.i_core_top.i_pipe_top.i_pipe_mprf.mprf_int[10] == 0);
                 tests_total     += 1;
                 tests_passed    += test_pass;
diff --git a/verilog/dv/riscv_regress/run_iverilog b/verilog/dv/riscv_regress/run_iverilog
new file mode 100755
index 0000000..7e1401b
--- /dev/null
+++ b/verilog/dv/riscv_regress/run_iverilog
@@ -0,0 +1,26 @@
+cd /home/dinesha/workarea/opencore/git/riscduino/verilog/rtl/syntacore/scr1/sim/tests/hello
+
+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/home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/../../../verilog/rtl/syntacore/scr1/sim/tests/common  /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/../../../verilog/rtl/syntacore/scr1/sim/tests/common/sc_print.c -o /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/build/iverilog_WB_MAX_imc_IPIC_1_TCM_1_VIRQ_1_TRACE_0/sc_print.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/home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/../../../verilog/rtl/syntacore/scr1/sim/tests/common  hello.c -o /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/build/iverilog_WB_MAX_imc_IPIC_1_TCM_1_VIRQ_1_TRACE_0/hello.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/home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/../../../verilog/rtl/syntacore/scr1/sim/tests/common  /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/../../../verilog/rtl/syntacore/scr1/sim/tests/common/crt_tcm.S -o /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/build/iverilog_WB_MAX_imc_IPIC_1_TCM_1_VIRQ_1_TRACE_0/crt_tcm.o
+
+riscv64-unknown-elf-gcc -o /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/build/iverilog_WB_MAX_imc_IPIC_1_TCM_1_VIRQ_1_TRACE_0/hello.elf -T /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/../../../verilog/rtl/syntacore/scr1/sim/tests/common/link_tcm.ld /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/build/iverilog_WB_MAX_imc_IPIC_1_TCM_1_VIRQ_1_TRACE_0/sc_print.o /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/build/iverilog_WB_MAX_imc_IPIC_1_TCM_1_VIRQ_1_TRACE_0/hello.o /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/build/iverilog_WB_MAX_imc_IPIC_1_TCM_1_VIRQ_1_TRACE_0/crt_tcm.o -nostartfiles -nostdlib -lc -lgcc -march=rv32imc -mabi=ilp32
+rm /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/build/iverilog_WB_MAX_imc_IPIC_1_TCM_1_VIRQ_1_TRACE_0/sc_print.o /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/build/iverilog_WB_MAX_imc_IPIC_1_TCM_1_VIRQ_1_TRACE_0/crt_tcm.o /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/build/iverilog_WB_MAX_imc_IPIC_1_TCM_1_VIRQ_1_TRACE_0/hello.o
+
+cd /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/build/iverilog_WB_MAX_imc_IPIC_1_TCM_1_VIRQ_1_TRACE_0
+iverilog -g2005-sv -DFUNCTIONAL -DWFDUMP -DSIM -I /opt/pdk/sky130A \
+-I /home/dinesha/workarea/efabless/MPW-4/caravel/verilog/dv/caravel -I /home/dinesha/workarea/efabless/MPW-4/caravel/verilog/rtl \
+-I /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/../model    -I /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/../../../verilog/rtl -I /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/../../../verilog \
+-I /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/../agents    \
+-I /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/../../../verilog/rtl/syntacore/scr1/src/includes    -I /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/../../../verilog/rtl/sdram_ctrl/src/defs -I /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/../../../verilog/rtl/i2cm/src/includes \
+-I /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/../../../verilog/rtl/usb1_host/src/includes -I /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/../../../verilog/rtl/mbist/include -I /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress \
+../../user_risc_regress_tb.v \
+-o user_risc_regress_tb.vvp
+
+iverilog-vpi ../../../vpi/system/system.c
+vvp  -M. -msystem  user_risc_regress_tb.vvp \
++test_info=/home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/build/iverilog_WB_MAX_imc_IPIC_1_TCM_1_VIRQ_1_TRACE_0/test_info \
++test_results=/home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/build/iverilog_WB_MAX_imc_IPIC_1_TCM_1_VIRQ_1_TRACE_0/test_results.txt \
+| tee /home/dinesha/workarea/opencore/git/riscduino/verilog/dv/riscv_regress/build/iverilog_WB_MAX_imc_IPIC_1_TCM_1_VIRQ_1_TRACE_0/sim_results.txt
diff --git a/verilog/dv/riscv_regress/uprj_netlists.v b/verilog/dv/riscv_regress/uprj_netlists.v
deleted file mode 100644
index e53865f..0000000
--- a/verilog/dv/riscv_regress/uprj_netlists.v
+++ /dev/null
@@ -1,138 +0,0 @@
-// SPDX-FileCopyrightText: 2020 Efabless Corporation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-// SPDX-License-Identifier: Apache-2.0
-
-// Include caravel global defines for the number of the user project IO pads 
-`include "defines.v"
-       `define USE_POWER_PINS
-       `define UNIT_DELAY #0.1
-
-`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 "libs.ref//sky130_fd_sc_hd/verilog/sky130_ef_sc_hd__fakediode_2.v"
-
-        `include "glbl_cfg.v"
-        `include "sdram.v"
-        `include "spi_master.v"
-        `include "uart_i2cm_usb.v"
-        `include "wb_interconnect.v"
-        `include "user_project_wrapper.v"
-        `include "syntacore.v"
-        `include "wb_host.v"
-	`include "clk_skew_adjust.v"
-
-`else
-     `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 "spi_master/src/spim_top.sv"
-     `include "spi_master/src/spim_if.sv"
-     `include "spi_master/src/spim_fifo.sv"
-     `include "spi_master/src/spim_regs.sv"
-     `include "spi_master/src/spim_clkgen.sv"
-     `include "spi_master/src/spim_ctrl.sv"
-     `include "spi_master/src/spim_rx.sv"
-     `include "spi_master/src/spim_tx.sv"
-
-     `include "uart/src/uart_core.sv"
-     `include "uart/src/uart_cfg.sv"
-     `include "uart/src/uart_rxfsm.sv"
-     `include "uart/src/uart_txfsm.sv"
-     `include "lib/async_fifo_th.sv"  
-     `include "lib/reset_sync.sv"  
-     `include "lib/double_sync_low.v"  
-     `include "lib/clk_buf.v"  
-
-     `include "i2cm/src/core/i2cm_bit_ctrl.v"
-     `include "i2cm/src/core/i2cm_byte_ctrl.v"
-     `include "i2cm/src/core/i2cm_top.v"
-
-     `include "usb1_host/src/core/usbh_core.sv"
-     `include "usb1_host/src/core/usbh_crc16.sv"
-     `include "usb1_host/src/core/usbh_crc5.sv"
-     `include "usb1_host/src/core/usbh_fifo.sv"
-     `include "usb1_host/src/core/usbh_sie.sv"
-     `include "usb1_host/src/phy/usb_fs_phy.v"
-     `include "usb1_host/src/phy/usb_transceiver.v"
-     `include "usb1_host/src/top/usb1_host.sv"
-
-     `include "uart_i2c_usb/src/uart_i2c_usb.sv"
-
-     `include "sdram_ctrl/src/top/sdrc_top.v" 
-     `include "sdram_ctrl/src/wb2sdrc/wb2sdrc.v" 
-     `include "lib/async_fifo.sv"  
-     `include "sdram_ctrl/src/core/sdrc_core.v"
-     `include "sdram_ctrl/src/core/sdrc_bank_ctl.v"
-     `include "sdram_ctrl/src/core/sdrc_bank_fsm.v"
-     `include "sdram_ctrl/src/core/sdrc_bs_convert.v"
-     `include "sdram_ctrl/src/core/sdrc_req_gen.v"
-     `include "sdram_ctrl/src/core/sdrc_xfr_ctl.v"
-
-     `include "lib/registers.v"
-     `include "lib/clk_ctl.v"
-     `include "digital_core/src/glbl_cfg.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"
-
-
-     `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_mul.sv"
-     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_div.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_intf.sv"
-     `include "syntacore/scr1/src/top/scr1_top_wb.sv"
-     `include "lib/sync_fifo.sv"
-
-     `include "user_project_wrapper.v"
-     // we are using netlist file for clk_skew_adjust as it has 
-     // standard cell + power pin
-     `include "gl/clk_skew_adjust.v"
-`endif
diff --git a/verilog/dv/riscv_regress/user_risc_regress_tb.v b/verilog/dv/riscv_regress/user_risc_regress_tb.v
index 4dd6abf..894ffb3 100644
--- a/verilog/dv/riscv_regress/user_risc_regress_tb.v
+++ b/verilog/dv/riscv_regress/user_risc_regress_tb.v
@@ -178,9 +178,8 @@
 	   initial begin
 	   	$dumpfile("simx.vcd");
 	   	$dumpvars(1, user_risc_regress_tb);
-	   	$dumpvars(0, user_risc_regress_tb.u_top.u_sdram_ctrl);
-	   	$dumpvars(0, user_risc_regress_tb.u_sdram8);
-	   	//$dumpvars(1, user_risc_regress_tb.u_top.u_riscv_top);
+	   	$dumpvars(1, user_risc_regress_tb.u_top);
+	   	$dumpvars(0, user_risc_regress_tb.u_top.u_riscv_top);
 	   end
        `endif
 
@@ -192,10 +191,18 @@
 		// Wait for reset removal
 		wait (rst_n == 1);
 
+
 		// Initialize the SPI memory with hex content
                 $write("\033[0;34m---Initializing the SPI Memory with Hexfile: %s\033[0m\n", test_file);
                 $readmemh(test_file,u_spi_flash_256mb.Mem);
 
+		// some of the RISCV test need SRAM area for specific
+		// instruction execution like fence
+		$sformat(test_ram_file, "%s.ram",test_file);
+                $write("\033[0;34m---Initializing the u_tsram0_2kb Memory with Hexfile: %s\033[0m\n", test_ram_file);
+                $readmemh(test_ram_file,u_top.u_tsram0_2kb.mem);
+		//for(i =32'h00; i < 32'h100; i = i+1)
+                //    $display("Location: %x, Data: %x", i, u_top.u_tsram0_2kb.mem[i]);
 
 
 		#200; 
@@ -207,7 +214,7 @@
 	        repeat (2) @(posedge clock);
 		#1;
 		//------------ fuse_mhartid= 0x00
-                wb_user_core_write('h3000_0004,'h0);
+                wb_user_core_write('h3002_0004,'h0);
 
 
 	        repeat (2) @(posedge clock);
@@ -252,7 +259,7 @@
 
  
     // Logic Analyzer Signals
-    .la_data_in      ('0) ,
+    .la_data_in      ('1) ,
     .la_data_out     (),
     .la_oenb         ('0),
  
@@ -284,149 +291,6 @@
 `ifndef GL // Drive Power for Hold Fix Buf
     // All standard cell need power hook-up for functionality work
     initial begin
-	force u_top.u_qspi_master.u_delay1_sdio0.VPWR =USER_VDD1V8;
-	force u_top.u_qspi_master.u_delay1_sdio0.VPB  =USER_VDD1V8;
-	force u_top.u_qspi_master.u_delay1_sdio0.VGND =VSS;
-	force u_top.u_qspi_master.u_delay1_sdio0.VNB = VSS;
-	force u_top.u_qspi_master.u_delay2_sdio0.VPWR =USER_VDD1V8;
-	force u_top.u_qspi_master.u_delay2_sdio0.VPB  =USER_VDD1V8;
-	force u_top.u_qspi_master.u_delay2_sdio0.VGND =VSS;
-	force u_top.u_qspi_master.u_delay2_sdio0.VNB = VSS;
-	force u_top.u_qspi_master.u_buf_sdio0.VPWR   =USER_VDD1V8;
-	force u_top.u_qspi_master.u_buf_sdio0.VPB    =USER_VDD1V8;
-	force u_top.u_qspi_master.u_buf_sdio0.VGND   =VSS;
-	force u_top.u_qspi_master.u_buf_sdio0.VNB    =VSS;
-
-	force u_top.u_qspi_master.u_delay1_sdio1.VPWR =USER_VDD1V8;
-	force u_top.u_qspi_master.u_delay1_sdio1.VPB  =USER_VDD1V8;
-	force u_top.u_qspi_master.u_delay1_sdio1.VGND =VSS;
-	force u_top.u_qspi_master.u_delay1_sdio1.VNB = VSS;
-	force u_top.u_qspi_master.u_delay2_sdio1.VPWR =USER_VDD1V8;
-	force u_top.u_qspi_master.u_delay2_sdio1.VPB  =USER_VDD1V8;
-	force u_top.u_qspi_master.u_delay2_sdio1.VGND =VSS;
-	force u_top.u_qspi_master.u_delay2_sdio1.VNB = VSS;
-	force u_top.u_qspi_master.u_buf_sdio1.VPWR   =USER_VDD1V8;
-	force u_top.u_qspi_master.u_buf_sdio1.VPB    =USER_VDD1V8;
-	force u_top.u_qspi_master.u_buf_sdio1.VGND   =VSS;
-	force u_top.u_qspi_master.u_buf_sdio1.VNB    =VSS;
-
-	force u_top.u_qspi_master.u_delay1_sdio2.VPWR =USER_VDD1V8;
-	force u_top.u_qspi_master.u_delay1_sdio2.VPB  =USER_VDD1V8;
-	force u_top.u_qspi_master.u_delay1_sdio2.VGND =VSS;
-	force u_top.u_qspi_master.u_delay1_sdio2.VNB = VSS;
-	force u_top.u_qspi_master.u_delay2_sdio2.VPWR =USER_VDD1V8;
-	force u_top.u_qspi_master.u_delay2_sdio2.VPB  =USER_VDD1V8;
-	force u_top.u_qspi_master.u_delay2_sdio2.VGND =VSS;
-	force u_top.u_qspi_master.u_delay2_sdio2.VNB = VSS;
-	force u_top.u_qspi_master.u_buf_sdio2.VPWR   =USER_VDD1V8;
-	force u_top.u_qspi_master.u_buf_sdio2.VPB    =USER_VDD1V8;
-	force u_top.u_qspi_master.u_buf_sdio2.VGND   =VSS;
-	force u_top.u_qspi_master.u_buf_sdio2.VNB    =VSS;
-
-	force u_top.u_qspi_master.u_delay1_sdio3.VPWR =USER_VDD1V8;
-	force u_top.u_qspi_master.u_delay1_sdio3.VPB  =USER_VDD1V8;
-	force u_top.u_qspi_master.u_delay1_sdio3.VGND =VSS;
-	force u_top.u_qspi_master.u_delay1_sdio3.VNB = VSS;
-	force u_top.u_qspi_master.u_delay2_sdio3.VPWR =USER_VDD1V8;
-	force u_top.u_qspi_master.u_delay2_sdio3.VPB  =USER_VDD1V8;
-	force u_top.u_qspi_master.u_delay2_sdio3.VGND =VSS;
-	force u_top.u_qspi_master.u_delay2_sdio3.VNB = VSS;
-	force u_top.u_qspi_master.u_buf_sdio3.VPWR   =USER_VDD1V8;
-	force u_top.u_qspi_master.u_buf_sdio3.VPB    =USER_VDD1V8;
-	force u_top.u_qspi_master.u_buf_sdio3.VGND   =VSS;
-	force u_top.u_qspi_master.u_buf_sdio3.VNB    =VSS;
-          
-	force u_top.u_uart_i2c_usb_spi.u_uart_core.u_lineclk_buf.VPWR =USER_VDD1V8;
-	force u_top.u_uart_i2c_usb_spi.u_uart_core.u_lineclk_buf.VPB  =USER_VDD1V8;
-	force u_top.u_uart_i2c_usb_spi.u_uart_core.u_lineclk_buf.VGND =VSS;
-	force u_top.u_uart_i2c_usb_spi.u_uart_core.u_lineclk_buf.VNB = VSS;
-
-	force u_top.u_wb_host.u_buf_wb_rst.VPWR =USER_VDD1V8;
-	force u_top.u_wb_host.u_buf_wb_rst.VPB  =USER_VDD1V8;
-	force u_top.u_wb_host.u_buf_wb_rst.VGND =VSS;
-	force u_top.u_wb_host.u_buf_wb_rst.VNB = VSS;
-
-	force u_top.u_wb_host.u_buf_cpu_rst.VPWR =USER_VDD1V8;
-	force u_top.u_wb_host.u_buf_cpu_rst.VPB  =USER_VDD1V8;
-	force u_top.u_wb_host.u_buf_cpu_rst.VGND =VSS;
-	force u_top.u_wb_host.u_buf_cpu_rst.VNB = VSS;
-
-	force u_top.u_wb_host.u_buf_qspim_rst.VPWR =USER_VDD1V8;
-	force u_top.u_wb_host.u_buf_qspim_rst.VPB  =USER_VDD1V8;
-	force u_top.u_wb_host.u_buf_qspim_rst.VGND =VSS;
-	force u_top.u_wb_host.u_buf_qspim_rst.VNB = VSS;
-
-	force u_top.u_wb_host.u_buf_sspim_rst.VPWR =USER_VDD1V8;
-	force u_top.u_wb_host.u_buf_sspim_rst.VPB  =USER_VDD1V8;
-	force u_top.u_wb_host.u_buf_sspim_rst.VGND =VSS;
-	force u_top.u_wb_host.u_buf_sspim_rst.VNB = VSS;
-
-	force u_top.u_wb_host.u_buf_uart_rst.VPWR =USER_VDD1V8;
-	force u_top.u_wb_host.u_buf_uart_rst.VPB  =USER_VDD1V8;
-	force u_top.u_wb_host.u_buf_uart_rst.VGND =VSS;
-	force u_top.u_wb_host.u_buf_uart_rst.VNB = VSS;
-
-	force u_top.u_wb_host.u_buf_i2cm_rst.VPWR =USER_VDD1V8;
-	force u_top.u_wb_host.u_buf_i2cm_rst.VPB  =USER_VDD1V8;
-	force u_top.u_wb_host.u_buf_i2cm_rst.VGND =VSS;
-	force u_top.u_wb_host.u_buf_i2cm_rst.VNB = VSS;
-
-	force u_top.u_wb_host.u_buf_usb_rst.VPWR =USER_VDD1V8;
-	force u_top.u_wb_host.u_buf_usb_rst.VPB  =USER_VDD1V8;
-	force u_top.u_wb_host.u_buf_usb_rst.VGND =VSS;
-	force u_top.u_wb_host.u_buf_usb_rst.VNB = VSS;
-
-
-
-	force u_top.u_wb_host.u_clkbuf_cpu.VPWR =USER_VDD1V8;
-	force u_top.u_wb_host.u_clkbuf_cpu.VPB  =USER_VDD1V8;
-	force u_top.u_wb_host.u_clkbuf_cpu.VGND =VSS;
-	force u_top.u_wb_host.u_clkbuf_cpu.VNB = VSS;
-
-	force u_top.u_wb_host.u_clkbuf_rtc.VPWR =USER_VDD1V8;
-	force u_top.u_wb_host.u_clkbuf_rtc.VPB  =USER_VDD1V8;
-	force u_top.u_wb_host.u_clkbuf_rtc.VGND =VSS;
-	force u_top.u_wb_host.u_clkbuf_rtc.VNB = VSS;
-
-	force u_top.u_wb_host.u_clkbuf_usb.VPWR =USER_VDD1V8;
-	force u_top.u_wb_host.u_clkbuf_usb.VPB  =USER_VDD1V8;
-	force u_top.u_wb_host.u_clkbuf_usb.VGND =VSS;
-	force u_top.u_wb_host.u_clkbuf_usb.VNB = VSS;
-
-	force u_top.u_wb_host.u_cpu_ref_sel.u_mux.VPWR =USER_VDD1V8;
-	force u_top.u_wb_host.u_cpu_ref_sel.u_mux.VPB  =USER_VDD1V8;
-	force u_top.u_wb_host.u_cpu_ref_sel.u_mux.VGND =VSS;
-	force u_top.u_wb_host.u_cpu_ref_sel.u_mux.VNB = VSS;
-
-	force u_top.u_wb_host.u_cpu_clk_sel.u_mux.VPWR =USER_VDD1V8;
-	force u_top.u_wb_host.u_cpu_clk_sel.u_mux.VPB  =USER_VDD1V8;
-	force u_top.u_wb_host.u_cpu_clk_sel.u_mux.VGND =VSS;
-	force u_top.u_wb_host.u_cpu_clk_sel.u_mux.VNB = VSS;
-
-	force u_top.u_wb_host.u_wbs_clk_sel.u_mux.VPWR =USER_VDD1V8;
-	force u_top.u_wb_host.u_wbs_clk_sel.u_mux.VPB  =USER_VDD1V8;
-	force u_top.u_wb_host.u_wbs_clk_sel.u_mux.VGND =VSS;
-	force u_top.u_wb_host.u_wbs_clk_sel.u_mux.VNB = VSS;
-
-	force u_top.u_wb_host.u_usb_clk_sel.u_mux.VPWR =USER_VDD1V8;
-	force u_top.u_wb_host.u_usb_clk_sel.u_mux.VPB  =USER_VDD1V8;
-	force u_top.u_wb_host.u_usb_clk_sel.u_mux.VGND =VSS;
-	force u_top.u_wb_host.u_usb_clk_sel.u_mux.VNB = VSS;
-
-	force u_top.u_wb_host.u_delay1_stb0.VPWR =USER_VDD1V8;
-	force u_top.u_wb_host.u_delay1_stb0.VPB  =USER_VDD1V8;
-	force u_top.u_wb_host.u_delay1_stb0.VGND =VSS;
-	force u_top.u_wb_host.u_delay1_stb0.VNB = VSS;
-	
-	force u_top.u_wb_host.u_delay2_stb1.VPWR =USER_VDD1V8;
-	force u_top.u_wb_host.u_delay2_stb1.VPB  =USER_VDD1V8;
-	force u_top.u_wb_host.u_delay2_stb1.VGND =VSS;
-	force u_top.u_wb_host.u_delay2_stb1.VNB = VSS;
-
-	force u_top.u_wb_host.u_delay2_stb2.VPWR =USER_VDD1V8;
-	force u_top.u_wb_host.u_delay2_stb2.VPB  =USER_VDD1V8;
-	force u_top.u_wb_host.u_delay2_stb2.VGND =VSS;
-	force u_top.u_wb_host.u_delay2_stb2.VNB = VSS;
     end
 `endif    
 
diff --git a/verilog/dv/user_risc_boot/Makefile b/verilog/dv/user_risc_boot/Makefile
index 549a5e5..d84401d 100644
--- a/verilog/dv/user_risc_boot/Makefile
+++ b/verilog/dv/user_risc_boot/Makefile
@@ -61,7 +61,7 @@
 %.vvp: %_tb.v
 	${GCC64_PREFIX}-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
 	${GCC64_PREFIX}-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
-	${GCC64_PREFIX}-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 -N
+	${GCC64_PREFIX}-gcc -o user_risc_boot.elf -T $(SYNTACORE_FIRMWARE_PATH)/link_tcm.ld user_risc_boot.o crt_tcm.o -nostartfiles -nostdlib -lc -lgcc -march=rv32imc -mabi=ilp32 -N
 	${GCC64_PREFIX}-objcopy -O verilog user_risc_boot.elf user_risc_boot.hex
 	${GCC64_PREFIX}-objdump -D user_risc_boot.elf > user_risc_boot.dump
 	rm crt_tcm.o user_risc_boot.o
diff --git a/verilog/rtl/pinmux/src/pinmux_reg.sv b/verilog/rtl/pinmux/src/pinmux_reg.sv
index b568991..e3b9044 100644
--- a/verilog/rtl/pinmux/src/pinmux_reg.sv
+++ b/verilog/rtl/pinmux/src/pinmux_reg.sv
@@ -668,7 +668,7 @@
 //-----------------------------------------
 // Software Reg-2, Release date: <DAY><MONTH><YEAR>
 // ----------------------------------------
-gen_32b_reg  #(32'h0101_2022) u_reg_23	(
+gen_32b_reg  #(32'h0601_2022) u_reg_23	(
 	      //List of Inputs
 	      .reset_n    (h_reset_n     ),
 	      .clk        (mclk          ),
@@ -681,9 +681,9 @@
 	      );
 
 //-----------------------------------------
-// Software Reg-3: Poject Revison 2.4 = 0002400
+// Software Reg-3: Poject Revison 2.5 = 0002500
 // ----------------------------------------
-gen_32b_reg  #(32'h0002_3000) u_reg_24	(
+gen_32b_reg  #(32'h0002_5000) u_reg_24	(
 	      //List of Inputs
 	      .reset_n    (h_reset_n     ),
 	      .clk        (mclk          ),
diff --git a/verilog/rtl/syntacore/scr1/sim/tests/common/common.mk b/verilog/rtl/syntacore/scr1/sim/tests/common/common.mk
index 2d35442..6075f73 100644
--- a/verilog/rtl/syntacore/scr1/sim/tests/common/common.mk
+++ b/verilog/rtl/syntacore/scr1/sim/tests/common/common.mk
@@ -58,8 +58,8 @@
 $(bld_dir)/%.hex: $(bld_dir)/%.elf
 	$(RISCV_ROM_OBJCOPY) $^ $@
 	$(RISCV_RAM_OBJCOPY) $^ $@.ram
-	#assign 0x2000_0xxx  to 0x0000_0xxx to map to sdram
-	sed -i 's/@20000/@00000/g' $@.ram
+	#assign 0x0048_0xxx  to 0x0000_0xxx to map to TCM Memory
+	sed -i 's/@00480/@00000/g' $@.ram
 
 
 $(bld_dir)/%.dump: $(bld_dir)/%.elf
diff --git a/verilog/rtl/syntacore/scr1/sim/tests/common/link.ld b/verilog/rtl/syntacore/scr1/sim/tests/common/link.ld
index 31653f1..6df6659 100644
--- a/verilog/rtl/syntacore/scr1/sim/tests/common/link.ld
+++ b/verilog/rtl/syntacore/scr1/sim/tests/common/link.ld
@@ -28,7 +28,7 @@
 
 MEMORY {
   ROM (rxx) : ORIGIN = 0x0, LENGTH = 64K
-  RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 64K
+  RAM (rwx) : ORIGIN = 0x00480000, LENGTH = 4K
 }
 
 STACK_SIZE = 1024;
diff --git a/verilog/rtl/syntacore/scr1/sim/tests/common/link_tcm.ld b/verilog/rtl/syntacore/scr1/sim/tests/common/link_tcm.ld
index c49465e..3840ec3 100644
--- a/verilog/rtl/syntacore/scr1/sim/tests/common/link_tcm.ld
+++ b/verilog/rtl/syntacore/scr1/sim/tests/common/link_tcm.ld
@@ -27,7 +27,7 @@
 
 MEMORY {
   ROM (rxx) : ORIGIN = 0x0, LENGTH = 64K
-  TCM (rwx) : ORIGIN = 0x00480000, LENGTH = 2K
+  TCM (rwx) : ORIGIN = 0x00480000, LENGTH = 4K
 }
 
 STACK_SIZE = 256;
diff --git a/verilog/rtl/syntacore/scr1/sim/tests/riscv_compliance/Makefile b/verilog/rtl/syntacore/scr1/sim/tests/riscv_compliance/Makefile
index d2b210b..0558434 100644
--- a/verilog/rtl/syntacore/scr1/sim/tests/riscv_compliance/Makefile
+++ b/verilog/rtl/syntacore/scr1/sim/tests/riscv_compliance/Makefile
@@ -134,8 +134,8 @@
 $(dst_dir)/compliance_%.hex: $(dst_dir)/compliance_%.elf
 	$(RISCV_ROM_OBJCOPY) $^ $@
 	$(RISCV_RAM_OBJCOPY) $^ $@.ram
-	#assign 0x2000_0xxx  to 0x0000_0xxx to map to sdram
-	sed -i 's/@20000/@00000/g' $@.ram
+	#assign 0x0048_0xxx  to 0x0000_0xxx to map to TCM Memory
+	sed -i 's/@00480/@00000/g' $@.ram
 
 $(bld_dir)/compliance_%.dump: $(dst_dir)/compliance_%.elf
 	$(RISCV_OBJDUMP) -D -w -x -S $^ > $@
diff --git a/verilog/rtl/syntacore/scr1/sim/tests/riscv_isa/Makefile b/verilog/rtl/syntacore/scr1/sim/tests/riscv_isa/Makefile
index 945519c..b953642 100644
--- a/verilog/rtl/syntacore/scr1/sim/tests/riscv_isa/Makefile
+++ b/verilog/rtl/syntacore/scr1/sim/tests/riscv_isa/Makefile
@@ -44,8 +44,8 @@
 $(bld_dir)/%.hex: $(bld_dir)/%.elf
 	$(RISCV_ROM_OBJCOPY) $^ $@
 	$(RISCV_RAM_OBJCOPY) $^ $@.ram
-	#assign 0x2000_0xxx  to 0x0000_0xxx to map to sdram
-	sed -i 's/@20000/@00000/g' $@.ram
+	#assign 0x0048_0xxx  to 0x0000_0xxx to map to TCM Memory
+	sed -i 's/@00480/@00000/g' $@.ram
 
 $(bld_dir)/%.dump: $(bld_dir)/%.elf
 	$(RISCV_OBJDUMP) $^ > $@
diff --git a/verilog/rtl/syntacore/scr1/src/top/scr1_tcm.sv b/verilog/rtl/syntacore/scr1/src/top/scr1_tcm.sv
index 2524fd3..db8174e 100644
--- a/verilog/rtl/syntacore/scr1/src/top/scr1_tcm.sv
+++ b/verilog/rtl/syntacore/scr1/src/top/scr1_tcm.sv
@@ -138,7 +138,7 @@
 
 // SRAM-0 Port 0 Control Generation
 assign sram0_clk0 = clk;
-assign sram0_csb0   = !(dmem_req & (imem_addr[11] == 1'b0) & ((dmem_cmd == SCR1_MEM_CMD_RD) | (dmem_cmd == SCR1_MEM_CMD_WR)));
+assign sram0_csb0   = !(dmem_req & (dmem_addr[11] == 1'b0) & ((dmem_cmd == SCR1_MEM_CMD_RD) | (dmem_cmd == SCR1_MEM_CMD_WR)));
 assign sram0_web0   = !(dmem_req & (dmem_cmd == SCR1_MEM_CMD_WR));
 assign sram0_addr0  = dmem_addr[10:2];
 assign sram0_wmask0 =  dmem_byteen;
@@ -146,7 +146,7 @@
 
 // SRAM-1 Port 0 Control Generation
 assign sram1_clk0 = clk;
-assign sram1_csb0   = !(dmem_req & (imem_addr[11] == 1'b1) & ((dmem_cmd == SCR1_MEM_CMD_RD) | (dmem_cmd == SCR1_MEM_CMD_WR)));
+assign sram1_csb0   = !(dmem_req & (dmem_addr[11] == 1'b1) & ((dmem_cmd == SCR1_MEM_CMD_RD) | (dmem_cmd == SCR1_MEM_CMD_WR)));
 assign sram1_web0   = !(dmem_req & (dmem_cmd == SCR1_MEM_CMD_WR));
 assign sram1_addr0  = dmem_addr[10:2];
 assign sram1_wmask0 =  dmem_byteen;
@@ -203,12 +203,8 @@
 //-------------------------------------------------------------------------------
 // Data memory output generation
 //-------------------------------------------------------------------------------
-always_ff @(posedge clk) begin
-    if (dmem_rd) begin
-        dmem_rdata_shift_reg <= dmem_addr[1:0];
-    end
-end
 
+assign dmem_rdata_shift_reg = dmem_addr[1:0];
 assign dmem_rdata = dmem_rdata_local >> ( 8 * dmem_rdata_shift_reg );
 
 endmodule : scr1_tcm
diff --git a/verilog/rtl/user_project_wrapper.v b/verilog/rtl/user_project_wrapper.v
index 8ef66fd..2f5d2c1 100644
--- a/verilog/rtl/user_project_wrapper.v
+++ b/verilog/rtl/user_project_wrapper.v
@@ -143,6 +143,8 @@
 ////      UART Master added with message handler at wb_host       ////
 ////    2.4  Jan 01, 2022, Dinesh A                               ////
 ////       LA[0] is added as soft reset option at wb_port         ////
+////    2.5  Jan 06, 2022, Dinesh A                               ////
+////       TCM RAM Bug fix inside syntacore                       ////
 //////////////////////////////////////////////////////////////////////
 ////                                                              ////
 //// Copyright (C) 2000 Authors and OPENCORES.ORG                 ////