diff --git a/verilog/dv/caravel/user_proj_example/Makefile b/verilog/dv/caravel/user_proj_example/Makefile
index dd0b951..e36f577 100644
--- a/verilog/dv/caravel/user_proj_example/Makefile
+++ b/verilog/dv/caravel/user_proj_example/Makefile
@@ -19,7 +19,7 @@
 .SUFFIXES:
 .SILENT: clean all
 
-PATTERNS = spm
+PATTERNS = spm chain
 
 all:  ${PATTERNS}
 	for i in ${PATTERNS}; do \
diff --git a/verilog/dv/caravel/user_proj_example/chain/Makefile b/verilog/dv/caravel/user_proj_example/chain/Makefile
new file mode 100644
index 0000000..ca171c2
--- /dev/null
+++ b/verilog/dv/caravel/user_proj_example/chain/Makefile
@@ -0,0 +1,67 @@
+# 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
+
+FIRMWARE_PATH = ../..
+VERILOG_PATH = ../../../..
+RTL_PATH = $(VERILOG_PATH)/rtl
+IP_PATH = ../../../../ip
+BEHAVIOURAL_MODELS = ../../ 
+
+GCC_PATH?=/ef/apps/bin
+GCC_PREFIX?=riscv32-unknown-elf
+PDK_PATH?=$(PDK_ROOT)/sky130A
+
+SIM?=RTL
+
+.SUFFIXES:
+
+PATTERN = chain
+
+all:  ${PATTERN:=.vcd}
+
+hex:  ${PATTERN:=.hex}
+
+%.vvp: %_tb.v %.hex
+ifeq ($(SIM),RTL)
+	iverilog -DFUNCTIONAL -DSIM -I $(BEHAVIOURAL_MODELS) \
+	-I $(PDK_PATH) -I $(IP_PATH) -I $(VERILOG_PATH) -I $(RTL_PATH) \
+	$< -o $@
+else
+	iverilog -DFUNCTIONAL -DSIM -DGL -I $(BEHAVIOURAL_MODELS) \
+	-I $(PDK_PATH) -I $(IP_PATH) -I $(RTL_PATH) \
+	$< -o $@
+endif
+
+%.vcd: %.vvp
+	vvp $<
+
+%.elf: %.c $(FIRMWARE_PATH)/sections.lds $(FIRMWARE_PATH)/start.s
+	${GCC_PATH}/${GCC_PREFIX}-gcc -march=rv32imc -mabi=ilp32 -Wl,-Bstatic,-T,$(FIRMWARE_PATH)/sections.lds,--strip-debug -ffreestanding -nostdlib -o $@ $(FIRMWARE_PATH)/start.s $<
+
+%.hex: %.elf
+	${GCC_PATH}/${GCC_PREFIX}-objcopy -O verilog $< $@ 
+	# to fix flash base address
+	sed -i 's/@10000000/@00000000/g' $@
+
+%.bin: %.elf
+	${GCC_PATH}/${GCC_PREFIX}-objcopy -O binary $< /dev/stdout | tail -c +1048577 > $@
+
+# ---- Clean ----
+
+clean:
+	rm -f *.elf *.hex *.bin *.vvp *.vcd *.log
+
+.PHONY: clean hex all
diff --git a/verilog/dv/caravel/user_proj_example/chain/chain.c b/verilog/dv/caravel/user_proj_example/chain/chain.c
new file mode 100644
index 0000000..dcabc98
--- /dev/null
+++ b/verilog/dv/caravel/user_proj_example/chain/chain.c
@@ -0,0 +1,54 @@
+/*
+ * 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 "../../defs.h"
+
+/*
+	SPM Scan-Chain test Test:
+*/
+
+void main()
+{
+	/* 
+	IO Control Registers
+	| DM     | VTRIP | SLOW  | AN_POL | AN_SEL | AN_EN | MOD_SEL | INP_DIS | HOLDH | OEB_N | MGMT_EN |
+	| 3-bits | 1-bit | 1-bit | 1-bit  | 1-bit  | 1-bit | 1-bit   | 1-bit   | 1-bit | 1-bit | 1-bit   |
+
+	Output: 0000_0110_0000_1110  (0x1808) = GPIO_MODE_USER_STD_OUTPUT
+	| DM     | VTRIP | SLOW  | AN_POL | AN_SEL | AN_EN | MOD_SEL | INP_DIS | HOLDH | OEB_N | MGMT_EN |
+	| 110    | 0     | 0     | 0      | 0      | 0     | 0       | 1       | 0     | 0     | 0       |
+	
+	 
+	Input: 0000_0001_0000_1111 (0x0402) = GPIO_MODE_USER_STD_INPUT_NOPULL
+	| DM     | VTRIP | SLOW  | AN_POL | AN_SEL | AN_EN | MOD_SEL | INP_DIS | HOLDH | OEB_N | MGMT_EN |
+	| 001    | 0     | 0     | 0      | 0      | 0     | 0       | 0       | 0     | 1     | 0       |
+
+	*/
+
+	// Configure JTAG ports
+	reg_mprj_io_0 =  GPIO_MODE_USER_STD_INPUT_NOPULL; 	// tck
+	reg_mprj_io_1 =  GPIO_MODE_USER_STD_INPUT_NOPULL;   // tms
+	reg_mprj_io_2 =  GPIO_MODE_USER_STD_INPUT_NOPULL; 	// tdi
+	reg_mprj_io_3 =  GPIO_MODE_USER_STD_INPUT_NOPULL; 	// trst
+	reg_mprj_io_4 =  GPIO_MODE_USER_STD_BIDIRECTIONAL;  // tdo
+	
+	/* Apply configuration */
+	reg_mprj_xfer = 1;
+	while (reg_mprj_xfer == 1);
+
+}
+
diff --git a/verilog/dv/caravel/user_proj_example/chain/chain_tb.v b/verilog/dv/caravel/user_proj_example/chain/chain_tb.v
new file mode 100644
index 0000000..1b3bb7e
--- /dev/null
+++ b/verilog/dv/caravel/user_proj_example/chain/chain_tb.v
@@ -0,0 +1,227 @@
+// 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
+
+`default_nettype none
+
+`timescale 1 ns / 1 ps
+
+`include "gl/user_project/gl/user_proj_top.v"
+`include "caravel.v"
+`include "spiflash.v"
+
+`define SOC_SETUP_TIM 170_000
+
+module chain_tb;
+	reg clock;
+    reg RSTB;
+	reg power1, power2;
+	reg power3, power4;
+
+	wire gpio;
+	wire [37:0] mprj_io;
+
+    // JTAG Ports
+    reg tms;
+    reg tck;
+    reg tdi;
+    reg trst;
+
+    wire tdo;
+
+	assign mprj_io[0] = tck;
+    assign mprj_io[1] = tms;
+    assign mprj_io[2] = tdi;
+    assign mprj_io[3] = trst;
+    assign tdo = mprj_io[4];
+    
+	// External clock is used by default.  Make this artificially fast for the
+	// simulation.  Normally this would be a slow clock and the digital PLL
+	// would be the fast clock.
+
+	always #10 clock <= (clock === 1'b0);
+
+    wire[501:0] serializable =
+        502'b1010110101101111001111101100111011011111011100101101011100110101011001001100110001000000000100001010010001001011001011101111110001101111111001101011111000101001111011001001110001100011001011101010010100100010110111101101011001111100010000110110101110100010110110101010011110110011100100011111001110111101110101111010110000010001000111010010001111111000110101011101110000011000001110010111101110000111111010010111001010011110100010011011001100100101100000011011001000110011010110111111100101011101101100;
+    reg[501:0] serial;
+
+    wire[7:0] tmsPattern = 8'b 01100110;
+    wire[3:0] preload_chain = 4'b0011;
+
+	initial begin
+		clock = 0;
+	end
+
+	initial begin
+		$dumpfile("chain.vcd");
+		$dumpvars(0, chain_tb);
+
+		// Repeat cycles of 1000 clock edges as needed to complete testbench
+		repeat (40) begin
+			repeat (1000) @(posedge clock);
+			// $display("+1000 cycles");
+		end
+		$display("%c[1;31m",27);
+		$display ("Monitor: Timeout, Test Chain (RTL) Failed");
+		$display("%c[0m",27);
+		$finish;
+	end
+
+    integer i;
+
+	initial begin
+        tms = 0 ;
+        tck = 0 ;
+        tdi = 0 ;
+        trst = 0 ;
+        RSTB <= 1'b0;
+        tms = 1;
+        #2000;
+		RSTB <= 1'b1;	    // Release reset    
+        #(`SOC_SETUP_TIM); 
+        trst = 1;   
+        #20;
+
+        /*
+            Test PreloadChain Instruction
+        */
+        shiftIR(preload_chain);
+        enterShiftDR();
+
+        for (i = 0; i < 502; i = i + 1) begin
+            tdi = serializable[i];
+            #20;
+        end
+        for(i = 0; i< 502; i = i + 1) begin
+            serial[i] = tdo;
+            #20;
+        end 
+
+        if(serial !== serializable) begin
+            $error("EXECUTING_PRELOAD_CHAIN_INST_FAILED");
+            $finish;
+        end
+        exitDR();
+
+        $display("SUCCESS_STRING");
+        $finish;
+    end
+
+    task shiftIR;
+        input[3:0] instruction;
+        integer i;
+        begin
+            for (i = 0; i< 5; i = i + 1) begin
+                tms = tmsPattern[i];
+                #20;
+            end
+
+            // At shift-IR: shift new instruction on tdi line
+            for (i = 0; i < 4; i = i + 1) begin
+                tdi = instruction[i];
+                if(i == 3) begin
+                    tms = tmsPattern[5];     // exit-ir
+                end
+                #20;
+            end
+
+            tms = tmsPattern[6];     // update-ir 
+            #20;
+            tms = tmsPattern[7];     // run test-idle
+            #60;
+        end
+    endtask
+
+    task enterShiftDR;
+        begin
+            tms = 1;     // select DR
+            #20;
+            tms = 0;     // capture DR -- shift DR
+            #40;
+        end
+    endtask
+
+    task exitDR;
+        begin
+            tms = 1;     // Exit DR -- update DR
+            #40;
+            tms = 0;     // Run test-idle
+            #20;
+        end
+    endtask
+
+	initial begin		// Power-up sequence
+		power1 <= 1'b0;
+		power2 <= 1'b0;
+		power3 <= 1'b0;
+		power4 <= 1'b0;
+		#200;
+		power1 <= 1'b1;
+		#200;
+		power2 <= 1'b1;
+		#200;
+		power3 <= 1'b1;
+		#200;
+		power4 <= 1'b1;
+	end
+
+	wire flash_csb;
+	wire flash_clk;
+	wire flash_io0;
+	wire flash_io1;
+
+	wire VDD3V3 = power1;
+	wire VDD1V8 = power2;
+	wire USER_VDD3V3 = power3;
+	wire USER_VDD1V8 = power4;
+	wire VSS = 1'b0;
+
+	caravel uut (
+		.vddio	  (VDD3V3),
+		.vssio	  (VSS),
+		.vdda	  (VDD3V3),
+		.vssa	  (VSS),
+		.vccd	  (VDD1V8),
+		.vssd	  (VSS),
+		.vdda1    (USER_VDD3V3),
+		.vdda2    (USER_VDD3V3),
+		.vssa1	  (VSS),
+		.vssa2	  (VSS),
+		.vccd1	  (USER_VDD1V8),
+		.vccd2	  (USER_VDD1V8),
+		.vssd1	  (VSS),
+		.vssd2	  (VSS),
+		.clock	  (clock),
+		.gpio     (gpio),
+        .mprj_io  (mprj_io),
+		.flash_csb(flash_csb),
+		.flash_clk(flash_clk),
+		.flash_io0(flash_io0),
+		.flash_io1(flash_io1),
+		.resetb	  (RSTB)
+	);
+
+	spiflash #(
+		.FILENAME("chain.hex")
+	) spiflash (
+		.csb(flash_csb),
+		.clk(flash_clk),
+		.io0(flash_io0),
+		.io1(flash_io1),
+		.io2(),			// not used
+		.io3()			// not used
+	);
+
+endmodule
+`default_nettype wire
diff --git a/verilog/dv/caravel/user_proj_example/spm/spm.c b/verilog/dv/caravel/user_proj_example/spm/spm.c
index dc91b71..d901e6b 100644
--- a/verilog/dv/caravel/user_proj_example/spm/spm.c
+++ b/verilog/dv/caravel/user_proj_example/spm/spm.c
@@ -69,12 +69,12 @@
 	reg_mprj_xfer = 1;
 	while (reg_mprj_xfer == 1);
 
-	// Configure LA probes [31:0], [63:32],[64] as inputs to the cpu 
-	// Configure LA probe [65], [127:96] as output from the cpu
+	// Configure LA probes [31:0], [63:32],[64], [65] as inputs to the cpu 
+	// Configure LA probe [127:96] as output from the cpu
 	reg_la0_ena = 0xFFFFFFFF;    // [31:0]
 	reg_la1_ena = 0xFFFFFFFF;    // [63:32]
-	reg_la2_ena = 0x00000001;    // [95:64]
-	reg_la3_ena = 0x00000000;    // [127:96]
+	reg_la2_ena = 0x00000007;    // [95:64]
+	reg_la3_ena = 0xFFFFFFFF;    // [127:96]
 
 	// Write mc & mp 
 	reg_la0_data = 4;  // mc
@@ -83,22 +83,59 @@
 	// Start Multiplication
 	reg_la2_data = 1;
 
-	// Configure LA[0] as output
-	reg_la0_ena = 0x00000000;
-
 	// Wait on done signal
-	while((reg_la0_data & 0x00000001) != 1);
-
-	// Configure [64] as output
-	reg_la2_ena = 0x00000001;
-
-	// read multiplication value
-	int long prod =  ((reg_la3_data << 32) | reg_la2_data); 
+	while(((reg_la2_data >> 2) & 0x00000001) != 1);
 	
-	if (prod != 25) {
+	reg_mprj_datal = 0xAB300000;  // flag multiplication done
+
+	if (reg_la3_data != 24) {
 		reg_mprj_datal = 0xAB410000;
 	} else {
 		reg_mprj_datal = 0xAB400000;
 	}
+
+	reg_la2_data = 0;
+
+	// Write mc & mp 
+	reg_la0_data = 153;  // mc
+	reg_la1_data = 99;  // mp
+
+	// Start Multiplication
+	reg_la2_data = 1;
+
+	// Wait on done signal
+	while(((reg_la2_data >> 2) & 0x00000001) != 1);
+
+	reg_mprj_datal = 0xAB300000; // flag multiplication done
+
+	if (reg_la3_data != 15147) {
+		reg_mprj_datal = 0xAB510000;
+	} else {
+		reg_mprj_datal = 0xAB500000;
+	}
+
+	reg_la2_data = 0;
+
+
+	// Write mc & mp 
+	reg_la0_data = -183;  // mc
+	reg_la1_data = -83;  // mp
+
+	// Start Multiplication
+	reg_la2_data = 1;
+
+	// Wait on done signal
+	while(((reg_la2_data >> 2) & 0x00000001) != 1);
+
+	reg_mprj_datal = 0xAB300000; // flag multiplication done
+
+	if (reg_la3_data != 15189) {
+		reg_mprj_datal = 0xAB610000;
+	} else {
+		reg_mprj_datal = 0xAB600000;
+	}
+
+	reg_la2_data = 0;
+
 }
 
diff --git a/verilog/dv/caravel/user_proj_example/spm/spm_tb.v b/verilog/dv/caravel/user_proj_example/spm/spm_tb.v
index 05593fd..a4850c9 100644
--- a/verilog/dv/caravel/user_proj_example/spm/spm_tb.v
+++ b/verilog/dv/caravel/user_proj_example/spm/spm_tb.v
@@ -17,7 +17,7 @@
 
 `timescale 1 ns / 1 ps
 
-`include "gl/user_project/gl/spm_top.v"
+`include "gl/user_project/gl/user_proj_top.v"
 `include "caravel.v"
 `include "spiflash.v"
 
@@ -53,7 +53,7 @@
 		$dumpvars(0, spm_tb);
 
 		// Repeat cycles of 1000 clock edges as needed to complete testbench
-		repeat (25) begin
+		repeat (40) begin
 			repeat (1000) @(posedge clock);
 			// $display("+1000 cycles");
 		end
@@ -64,9 +64,16 @@
 	end
 
 	initial begin
-	    // Observe Output pins [7:0]
+		wait(mprj_io_h == 16'hAB30);
+		$display("Multiplication is done !");
 	    wait(mprj_io_h == 16'hAB40);
-	    $display("Monitor: Test 1 Mega-Project IO (RTL) Passed");
+		wait(mprj_io_h == 16'hAB30);
+		$display("Multiplication is done !");
+		wait(mprj_io_h == 16'hAB50);
+		wait(mprj_io_h == 16'hAB30);
+		$display("Multiplication is done !");
+		wait(mprj_io_h == 16'hAB60);
+	    $display("Monitor: Test 1 SPM Functional Test (RTL) Passed");
 	    $finish;
 	end
 
