Update
diff --git a/verilog/dv/BrqRV_EB1/BrqRV_EB1_tb.v b/verilog/dv/BrqRV_EB1/BrqRV_EB1_tb.v
index 331c80b..725a32d 100644
--- a/verilog/dv/BrqRV_EB1/BrqRV_EB1_tb.v
+++ b/verilog/dv/BrqRV_EB1/BrqRV_EB1_tb.v
@@ -100,9 +100,30 @@
//wait(mprj_io_0 == 28'd4889874);
// Observe Output pins [35:8] for Queue
- wait(mprj_io_0 == 28'd5);
- wait(mprj_io_0 == 28'd6);
+ //wait(mprj_io_0 == 28'd5);
+ //wait(mprj_io_0 == 28'd6);
+ //wait(mprj_io_0 == 28'd7);
+
+ // Observe Output pins [35:8] for perfect square
+ //wait(mprj_io_0 == 28'd5);
+
+ // Observe Output pins [35:8] for counter / ascending / reverse
+ wait(mprj_io_0 == 28'd15);
+ wait(mprj_io_0 == 28'd14);
+ wait(mprj_io_0 == 28'd13);
+ wait(mprj_io_0 == 28'd12);
+ wait(mprj_io_0 == 28'd11);
+ wait(mprj_io_0 == 28'd10);
+ wait(mprj_io_0 == 28'd9);
+ wait(mprj_io_0 == 28'd8);
wait(mprj_io_0 == 28'd7);
+ wait(mprj_io_0 == 28'd6);
+ wait(mprj_io_0 == 28'd5);
+ wait(mprj_io_0 == 28'd4);
+ wait(mprj_io_0 == 28'd3);
+ wait(mprj_io_0 == 28'd2);
+ wait(mprj_io_0 == 28'd1);
+ wait(mprj_io_0 == 28'd0);
$display("MPRJ-IO state = %d ", mprj_io[35:8]);
`ifdef GL
diff --git a/verilog/dv/asm/ascending_num.s b/verilog/dv/asm/ascending_num.s
new file mode 100644
index 0000000..2d2f268
--- /dev/null
+++ b/verilog/dv/asm/ascending_num.s
@@ -0,0 +1,48 @@
+#include "defines.h"
+
+#define STDOUT 0xd0580000
+
+// Code to execute
+.section .text
+.global _start
+_start:
+
+//Prime numbers in a given range
+
+// li x1, 0x5f555555
+// csrw 0x7c0, x1
+
+csrw minstret, zero
+csrw minstreth, zero
+
+li x4, 4 // Neccessary for terminating code
+csrw 0x7f9 ,x4 // Neccessary for terminating code
+nop
+
+li s0,0xB // UPPER BOUND
+li t0,0 // COUNTER
+li t1,0xf0040000 // BASE ADRESS
+li t2,STDOUT
+
+LOOP:
+
+sw t0,0(t1)
+sw t0,0(t2)
+addi t2,t2,4
+addi t1,t1,4
+beq t0,s0,END
+addi t0,t0,1
+
+j LOOP
+
+END:
+
+// Write 0xff to STDOUT for TB to termiate test.
+_finish:
+ li x3, STDOUT
+ addi x5, x0, 0xff
+ sb x5, 0(x3)
+ beq x0, x0, _finish
+.rept 100
+ nop
+.endr
diff --git a/verilog/dv/asm/counter.s b/verilog/dv/asm/counter.s
new file mode 100644
index 0000000..c20cd62
--- /dev/null
+++ b/verilog/dv/asm/counter.s
@@ -0,0 +1,71 @@
+//Counter_loop (Count/Increment 1 till 10)
+
+#include "defines.h"
+
+#define STDOUT 0xd0580000
+
+
+
+ // Code to execute
+.section .text
+.global _start
+_start:
+
+ // Clear minstret
+ csrw minstret, zero
+ csrw minstreth, zero
+ li x1, 0x5f555555
+ csrw 0x7c0, x1
+ li x1, 4
+ csrw 0x7f9, x1
+
+ li x8, 0xf0040000 // dccm address
+ li x3, STDOUT
+ addi x9, x0, 0xA //no of values needs to be count
+ addi x6, x0, 0
+ addi x12, x0, 0 //initial value to start loop
+ addi x11, x0, 0 //increment value from x12 save in x11 register
+ addi x13, x0, 0
+
+
+store:
+ add x5, x0, x6
+ sw x5, 0(x8)
+ addi x6, x6, 1
+ addi x8, x8, 4
+ bne x9, x6, store
+ li x8, 0xf0040000
+ j counter_loop
+
+next:
+ sw x11, 0(x8)
+ addi x8, x8, 4
+ sw x11, 0(x3)
+ addi x3, x3, 4
+ beq x13, x9, _finish
+ addi x13, x13, 1
+ addi x11, x0, 1
+ addi x12, x0, 1
+
+counter_loop:
+
+ addi x11, x12, 1
+ beq x12, x13, next
+ addi x12, x12, 1
+ j counter_loop
+
+
+
+
+
+
+// Write 0xff to STDOUT for TB to termiate test.
+_finish:
+ li x3, STDOUT
+ addi x5, x0, 0xff
+ sb x5, 0(x3)
+ beq x0, x0, _finish
+.rept 100
+ nop
+.endr
+
diff --git a/verilog/dv/asm/perfect_square.s b/verilog/dv/asm/perfect_square.s
new file mode 100644
index 0000000..85fe821
--- /dev/null
+++ b/verilog/dv/asm/perfect_square.s
@@ -0,0 +1,43 @@
+// SQ_root of number
+#include "defines.h"
+
+#define STDOUT 0xd0580000
+
+
+// Code to execute
+.section .text
+.global _start
+_start:
+
+
+ csrw minstret, zero
+ csrw minstreth, zero
+
+ li x4, 4 // Neccessary for terminating code
+ csrw 0x7f9 ,x4 // Neccessary for terminating code
+
+ li x8, 0xf0040000 // dccm address
+ li x3, STDOUT // axi address
+ li x13, 0 // initial value
+ li x12, 25 // sqrt number
+ addi x6, x0, 0 // counter
+ li x11, 200
+
+
+sq_root:
+ addi x6, x6, 1
+ mul x9, x6, x6
+ beq x11, x6, _finish
+ bne x12, x9, sq_root
+ sw x6, 0(x8)
+ sw x6, 0(x3)
+
+// Write 0xff to STDOUT for TB to termiate test.
+_finish:
+ li x3, STDOUT
+ addi x5, x0, 0xff
+ sb x5, 0(x3)
+ beq x0, x0, _finish
+.rept 100
+ nop
+.endr
diff --git a/verilog/dv/asm/reverse_number.s b/verilog/dv/asm/reverse_number.s
new file mode 100644
index 0000000..390e301
--- /dev/null
+++ b/verilog/dv/asm/reverse_number.s
@@ -0,0 +1,50 @@
+#include "defines.h"
+
+#define STDOUT 0xd0580000
+
+// Code to execute
+.section .text
+.global _start
+_start:
+
+//Prime numbers in a given range
+
+// li x1, 0x5f555555
+// csrw 0x7c0, x1
+
+csrw minstret, zero
+csrw minstreth, zero
+
+li x4, 4 // Neccessary for terminating code
+csrw 0x7f9 ,x4 // Neccessary for terminating code
+nop
+
+li s0,15 // UPPER BOUND
+li t0,0 // COUNTER
+li t1,0xf0040000 // BASE ADRESS
+li t3,1
+addi t0,s0,0
+li t2,STDOUT
+
+LOOP:
+
+sw t0,0(t1)
+sw t0,0(t2)
+addi t2,t2,4
+addi t1,t1,4
+beqz t0,END
+sub t0,t0,t3
+
+j LOOP
+
+END:
+
+// Write 0xff to STDOUT for TB to termiate test.
+_finish:
+ li x3, STDOUT
+ addi x5, x0, 0xff
+ sb x5, 0(x3)
+ beq x0, x0, _finish
+.rept 100
+ nop
+.endr
diff --git a/verilog/dv/hex/ascending_num b/verilog/dv/hex/ascending_num
new file mode 100644
index 0000000..d93b3a2
--- /dev/null
+++ b/verilog/dv/hex/ascending_num
@@ -0,0 +1,6 @@
+@00000000
+B0 20 10 73 B8 20 10 73 10 73 42 11 00 01 7F 92
+42 81 44 2D F0 04 03 37 D0 58 03 B7 00 53 20 23
+00 53 A0 23 03 11 03 91 00 82 84 63 B7 FD 02 85
+D0 58 01 B7 0F F0 02 93 00 51 80 23 FE 00 0A E3
+00 01 00 01 00 00 0F FF
diff --git a/verilog/dv/hex/counter.hex b/verilog/dv/hex/counter.hex
new file mode 100644
index 0000000..0feda45
--- /dev/null
+++ b/verilog/dv/hex/counter.hex
@@ -0,0 +1,10 @@
+@00000000
+B0 20 10 73 B8 20 10 73 5F 55 50 B7 55 50 80 93
+7C 00 90 73 90 73 40 91 04 37 7F 90 01 B7 F0 04
+04 93 D0 58 03 13 00 A0 06 13 00 00 05 93 00 00
+06 93 00 00 02 B3 00 00 20 23 00 60 03 05 00 54
+9A E3 04 11 04 37 FE 64 A8 29 F0 04 04 11 C0 0C
+00 B1 A0 23 8D 63 01 91 06 85 00 96 00 10 05 93
+00 10 06 13 00 16 05 93 FE D6 02 E3 BF DD 06 05
+D0 58 01 B7 0F F0 02 93 00 51 80 23 FE 00 0A E3
+00 01 00 01 00 00 0F FF
diff --git a/verilog/dv/hex/perfect_square.hex b/verilog/dv/hex/perfect_square.hex
new file mode 100644
index 0000000..fd0b465
--- /dev/null
+++ b/verilog/dv/hex/perfect_square.hex
@@ -0,0 +1,6 @@
+@00000000
+B0 20 10 73 B8 20 10 73 10 73 42 11 04 37 7F 92
+01 B7 F0 04 46 81 D0 58 03 13 46 65 05 93 00 00
+03 05 0C 80 02 63 04 B3 00 65 88 63 FE 96 1B E3
+00 64 20 23 00 61 A0 23 D0 58 01 B7 0F F0 02 93
+00 51 80 23 FE 00 0A E3 00 01 00 01 00 00 0F FF
diff --git a/verilog/dv/hex/reverse_num.hex b/verilog/dv/hex/reverse_num.hex
new file mode 100644
index 0000000..ea36e87
--- /dev/null
+++ b/verilog/dv/hex/reverse_num.hex
@@ -0,0 +1,6 @@
+@00000000
+B0 20 10 73 B8 20 10 73 10 73 42 11 00 01 7F 92
+42 81 44 3D F0 04 03 37 02 93 4E 05 03 B7 00 04
+20 23 D0 58 A0 23 00 53 03 91 00 53 85 63 03 11
+82 B3 00 02 B7 F5 41 C2 D0 58 01 B7 0F F0 02 93
+00 51 80 23 FE 00 0A E3 00 01 00 01 00 00 0F FF
diff --git a/verilog/dv/hex/uart.hex b/verilog/dv/hex/uart.hex
index 5a3b56e..729fbe7 100755
--- a/verilog/dv/hex/uart.hex
+++ b/verilog/dv/hex/uart.hex
@@ -1,12 +1,6 @@
@00000000
-B0 20 10 73 B8 20 10 73 10 73 42 11 04 37 7F 92
-04 93 F0 04 09 13 00 50 09 93 00 60 0A 13 00 70
-02 93 00 30 03 13 00 00 03 93 00 10 0E 13 00 20
-00 EF 00 30 A0 0D 00 60 87 63 02 85 87 63 00 62
-88 63 00 72 80 82 01 C2 B7 FD C0 04 01 24 22 23
-24 23 B7 E5 B7 CD 01 34 00 04 22 83 00 44 23 03
-00 84 23 83 D0 58 0B 37 00 5B 20 23 00 01 0B 11
-00 01 00 01 20 23 00 01 0B 11 00 6B 00 01 00 01
-20 23 00 01 00 01 00 7B 00 01 00 01 D0 58 01 B7
-0F F0 02 93 00 51 80 23 FE 00 0A E3 00 01 00 01
-00 00 0F FF
+B0 20 10 73 B8 20 10 73 10 73 42 11 00 01 7F 92
+42 81 44 3D F0 04 03 37 02 93 4E 05 03 B7 00 04
+20 23 D0 58 A0 23 00 53 03 91 00 53 85 63 03 11
+82 B3 00 02 B7 F5 41 C2 D0 58 01 B7 0F F0 02 93
+00 51 80 23 FE 00 0A E3 00 01 00 01 00 00 0F FF