added testBytes
diff --git a/verilog/dv/testBytes/Makefile b/verilog/dv/testBytes/Makefile
new file mode 100644
index 0000000..c87b107
--- /dev/null
+++ b/verilog/dv/testBytes/Makefile
@@ -0,0 +1,96 @@
+# 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
+
+## PDK 
+PDK_PATH = $(PDK_ROOT)/sky130A
+
+## Caravel Pointers
+CARAVEL_ROOT ?= ../../../caravel
+CARAVEL_PATH ?= $(CARAVEL_ROOT)
+CARAVEL_FIRMWARE_PATH = $(CARAVEL_PATH)/verilog/dv/caravel
+CARAVEL_VERILOG_PATH  = $(CARAVEL_PATH)/verilog
+CARAVEL_RTL_PATH = $(CARAVEL_VERILOG_PATH)/rtl
+CARAVEL_BEHAVIOURAL_MODELS = $(CARAVEL_VERILOG_PATH)/dv/caravel
+
+## User Project Pointers
+UPRJ_VERILOG_PATH ?= ../../../verilog
+UPRJ_RTL_PATH = $(UPRJ_VERILOG_PATH)/rtl
+UPRJ_BEHAVIOURAL_MODELS = ../
+
+## RISCV GCC 
+GCC_PATH?=/ef/apps/bin
+GCC_PREFIX?=riscv32-unknown-elf
+
+## Simulation mode: RTL/GL
+SIM_DEFINES = -DFUNCTIONAL -DSIM -DTESTS
+SIM?=RTL
+
+.SUFFIXES:
+
+PATTERN = testBytes
+
+all:  ${PATTERN:=.vcd}
+
+hex:  ${PATTERN:=.hex}
+
+%.vvp: %_tb.v %.hex
+ifeq ($(SIM),RTL)
+	iverilog $(SIM_DEFINES) -I $(PDK_PATH) \
+	-I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) \
+	-I $(UPRJ_BEHAVIOURAL_MODELS)    -I $(UPRJ_RTL_PATH) \
+	$< -o $@ 
+else  
+	iverilog $(SIM_DEFINES) -DGL -I $(PDK_PATH) \
+	-I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) -I $(CARAVEL_VERILOG_PATH) \
+	-I $(UPRJ_BEHAVIOURAL_MODELS) -I$(UPRJ_RTL_PATH)   -I $(UPRJ_VERILOG_PATH) \
+	$< -o $@ 
+endif
+
+%.vcd: %.vvp
+	vvp $<
+
+%.elf: %.c $(CARAVEL_FIRMWARE_PATH)/sections.lds $(CARAVEL_FIRMWARE_PATH)/start.s check-env
+	${GCC_PATH}/${GCC_PREFIX}-gcc -I $(CARAVEL_PATH) -march=rv32imc -mabi=ilp32 -Wl,-Bstatic,-T,$(CARAVEL_FIRMWARE_PATH)/sections.lds,--strip-debug -ffreestanding -nostdlib -o $@ $(CARAVEL_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 > $@
+
+check-env:
+ifndef PDK_ROOT
+	$(error PDK_ROOT is undefined, please export it before running make)
+endif
+ifeq (,$(wildcard $(PDK_ROOT)/sky130A))
+	$(error $(PDK_ROOT)/sky130A not found, please install pdk before running make)
+endif
+ifeq (,$(wildcard $(GCC_PATH)/$(GCC_PREFIX)-gcc ))
+	$(error $(GCC_PATH)/$(GCC_PREFIX)-gcc is not found, please export GCC_PATH and GCC_PREFIX before running make)
+endif
+# check for efabless style installation
+ifeq (,$(wildcard $(PDK_ROOT)/sky130A/libs.ref/*/verilog))
+SIM_DEFINES := ${SIM_DEFINES} -DEF_STYLE
+endif
+
+# ---- Clean ----
+
+clean:
+	rm -f *.elf *.hex *.bin *.vvp *.vcd *.log
+
+.PHONY: clean hex all
diff --git a/verilog/dv/testBytes/preview.gtkw b/verilog/dv/testBytes/preview.gtkw
new file mode 100644
index 0000000..4b34ffd
--- /dev/null
+++ b/verilog/dv/testBytes/preview.gtkw
@@ -0,0 +1,159 @@
+[*]
+[*] GTKWave Analyzer v3.3.103 (w)1999-2019 BSI
+[*] Sat Nov  6 19:55:55 2021
+[*]
+[dumpfile] "/home/aurora/Elpis-Light-MPW3/verilog/dv/testBytes/testBytes.vcd"
+[dumpfile_mtime] "Sat Nov  6 19:41:03 2021"
+[dumpfile_size] 2119544755
+[savefile] "/home/aurora/Elpis-Light-MPW3/verilog/dv/testBytes/preview.gtkw"
+[timestart] 2273389800
+[size] 2560 1466
+[pos] -51 -51
+*-15.000000 2273609300 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
+[treeopen] testBytes_tb.
+[treeopen] testBytes_tb.uut.
+[treeopen] testBytes_tb.uut.mprj.
+[treeopen] testBytes_tb.uut.mprj.core0.
+[sst_width] 388
+[signals_width] 350
+[sst_expanded] 1
+[sst_vpaned_height] 420
+@c00023
+testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+@28
+(0)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(1)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(2)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(3)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(4)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(5)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(6)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(7)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(8)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(9)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(10)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(11)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(12)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(13)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(14)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(15)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(16)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(17)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(18)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(19)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(20)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(21)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(22)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(23)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(24)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(25)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(26)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(27)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(28)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(29)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(30)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(31)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(32)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(33)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(34)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(35)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(36)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(37)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(38)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(39)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(40)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(41)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(42)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(43)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(44)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(45)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(46)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(47)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(48)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(49)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(50)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(51)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(52)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(53)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(54)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(55)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(56)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(57)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(58)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(59)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(60)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(61)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(62)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(63)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(64)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(65)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(66)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(67)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(68)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(69)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(70)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(71)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(72)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(73)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(74)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(75)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(76)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(77)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(78)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(79)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(80)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(81)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(82)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(83)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(84)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(85)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(86)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(87)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(88)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(89)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(90)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(91)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(92)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(93)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(94)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(95)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(96)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(97)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(98)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(99)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(100)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(101)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(102)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(103)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(104)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(105)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(106)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(107)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(108)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(109)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(110)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(111)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(112)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(113)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(114)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(115)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(116)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(117)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(118)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(119)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(120)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(121)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(122)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(123)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(124)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(125)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(126)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+(127)testBytes_tb.uut.mprj.core0.dcache.\cacheData[0][127:0]
+@1401201
+-group_end
+@22
+testBytes_tb.uut.mprj.core0.dcache.\cacheData[1][127:0]
+testBytes_tb.uut.mprj.core0.dcache.\cacheData[2][127:0]
+testBytes_tb.uut.mprj.core0.dcache.\cacheData[3][127:0]
+[pattern_trace] 1
+[pattern_trace] 0
diff --git a/verilog/dv/testBytes/testBytes.c b/verilog/dv/testBytes/testBytes.c
new file mode 100644
index 0000000..90305c2
--- /dev/null
+++ b/verilog/dv/testBytes/testBytes.c
@@ -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
+ */
+
+// This include is relative to $CARAVEL_PATH (see Makefile)
+#include "verilog/dv/caravel/defs.h"
+#include "verilog/dv/caravel/stub.c"
+
+
+void elpis_load_memory(uint32_t*  program_data, uint32_t*  program_addr)
+{
+	int i, continue_reading;
+	continue_reading = 1;
+	i = 0;
+	reg_la3_data = 0x00000004;
+	reg_la3_data = 0x00000005;
+	reg_la3_data = 0x00000004;
+	while (continue_reading)
+	{
+		if (program_data[i] == ((uint32_t) 0xFFFFFFFF))
+		{
+			continue_reading = 0;
+		}else {
+			reg_la0_data = program_addr[i];
+			reg_la1_data = program_data[i];
+		}
+		reg_la3_data = 0x00000005;
+		reg_la3_data = 0x00000004;
+		i++;
+	}
+	reg_la3_data = 0x00000001;
+	reg_la3_data = 0x00000000;
+}
+
+// --------------------------------------------------------
+
+/*
+	MPRJ Logic Analyzer Test:
+		- Observes counter value through LA probes [31:0] 
+		- Sets counter initial value through LA probes [63:32]
+		- Flags when counter value exceeds 500 through the management SoC gpio
+		- Outputs message to the UART when the test concludes successfuly
+*/
+void main()
+{
+
+	/* Set up the housekeeping SPI to be connected internally so	*/
+	/* that external pin changes don't affect it.			*/
+
+	reg_spimaster_config = 0xa002; // Enable, prescaler = 2,
+								   // connect to housekeeping SPI
+
+	// Connect the housekeeping SPI to the SPI master
+	// so that the CSB line is not left floating.  This allows
+	// all of the GPIO pins to be used for user functions.
+
+	// The upper GPIO pins are configured to be output
+	// and accessble to the management SoC.
+	// Used to flad the start/end of a test
+	// The lower GPIO pins are configured to be output
+	// and accessible to the user project.  They show
+	// the project count value, although this test is
+	// designed to read the project count through the
+	// logic analyzer probes.
+	// I/O 6 is configured for the UART Tx line
+
+	reg_mprj_io_31 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_30 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_29 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_28 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_27 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_26 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_25 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_24 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_23 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_22 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_21 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_20 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_19 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_18 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_17 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_16 = GPIO_MODE_USER_STD_OUTPUT;
+
+	reg_mprj_io_15 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_14 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_13 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_12 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_11 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_10 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_9 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_8 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_7 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_5 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_4 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_3 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_2 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_1 = GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_0 = GPIO_MODE_USER_STD_OUTPUT;
+
+	reg_mprj_io_6 = GPIO_MODE_MGMT_STD_OUTPUT;
+
+	// Set UART clock to 64 kbaud (enable before I/O configuration)
+	reg_uart_clkdiv = 625;
+	reg_uart_enable = 1;
+
+	/* Apply configuration */
+	reg_mprj_xfer = 1;
+	while (reg_mprj_xfer == 1);
+
+	// Configuring LA probes
+	// outputs from the cpu are inputs for my project denoted for been 0
+	// inputs to the cpu are outpus for my project denoted for been 1
+	reg_la0_oenb = reg_la0_iena = 0x00000000; // [31:0]
+	reg_la1_oenb = reg_la1_iena = 0x00000000; // [63:32]
+	reg_la2_oenb = reg_la2_iena = 0x00000000; // [95:64]
+	reg_la3_oenb = reg_la3_iena = 0x00000000; // [127:96]
+
+	// Flag start of the test
+	reg_mprj_datal = 0xAB400000;
+
+	// Elpis OS information
+	uint32_t OS_DATA[30];
+	OS_DATA[0] = 0x00502023;
+	OS_DATA[1] = 0x00602223;
+	OS_DATA[2] = 0x00702423;
+	OS_DATA[3] = 0x00802623;
+	OS_DATA[4] = 0x00902823;
+	OS_DATA[5] = 0x00400413;
+	OS_DATA[6] = 0x00500493;
+	OS_DATA[7] = 0x00600293;
+	OS_DATA[8] = 0x00700313;
+	OS_DATA[9] = 0x002003af;
+	OS_DATA[10] = 0x00838c63;
+	OS_DATA[11] = 0x00938a63;
+	OS_DATA[12] = 0x00538c63;
+	OS_DATA[13] = 0x00638e63;
+	OS_DATA[14] = 0x00038e63;
+	OS_DATA[15] = 0x02000863;
+	OS_DATA[16] = 0x0000002e;
+	OS_DATA[17] = 0x00000863;
+	OS_DATA[18] = 0x0200007D;
+	OS_DATA[19] = 0x00000463;
+	OS_DATA[20] = 0x0400007D;
+	OS_DATA[21] = 0x00002283;
+	OS_DATA[22] = 0x00402303;
+	OS_DATA[23] = 0x00802383;
+	OS_DATA[24] = 0x00c02403;
+	OS_DATA[25] = 0x01002483;
+	OS_DATA[26] = 0x0000007F;
+	OS_DATA[27] = 0x00000033;
+	OS_DATA[28] = 0x00002050;
+	OS_DATA[29] = 0xFFFFFFFF;
+
+	uint32_t OS_ADDR[30];
+	OS_ADDR[0] =  0x00000010;
+	OS_ADDR[1] =  0x00000011;
+	OS_ADDR[2] =  0x00000012;
+	OS_ADDR[3] =  0x00000013;
+	OS_ADDR[4] =  0x00000014;
+	OS_ADDR[5] =  0x00000015;
+	OS_ADDR[6] =  0x00000016;
+	OS_ADDR[7] =  0x00000017;
+	OS_ADDR[8] =  0x00000018;
+	OS_ADDR[9] =  0x00000019;
+	OS_ADDR[10] = 0x0000001a;
+	OS_ADDR[11] = 0x0000001b;
+	OS_ADDR[12] = 0x0000001c;
+	OS_ADDR[13] = 0x0000001d;
+	OS_ADDR[14] = 0x0000001e;
+	OS_ADDR[15] = 0x0000001f;
+	OS_ADDR[16] = 0x00000020;
+	OS_ADDR[17] = 0x00000021;
+	OS_ADDR[18] = 0x00000022;
+	OS_ADDR[19] = 0x00000023;
+	OS_ADDR[20] = 0x00000024;
+	OS_ADDR[21] = 0x00000025;
+	OS_ADDR[22] = 0x00000026;
+	OS_ADDR[23] = 0x00000027;
+	OS_ADDR[24] = 0x00000028;
+	OS_ADDR[25] = 0x00000029;
+	OS_ADDR[26] = 0x0000002a;
+	OS_ADDR[27] = 0x0000002b;
+	OS_ADDR[28] = 0x00000005;
+	OS_ADDR[29] = 0xFFFFFFFF;
+
+	// Elpis user program
+	uint32_t USER_DATA[4];
+	USER_DATA[0] = 0x00000083;
+	USER_DATA[1] = 0x00100223;
+	USER_DATA[2] = 0xFF00FF33;
+	USER_DATA[3] = 0xFFFFFFFF;
+
+	uint32_t USER_ADDR[4];
+	USER_ADDR[0] = 0x00000040;
+	USER_ADDR[1] = 0x00000041;
+	USER_ADDR[2] = 0x00000100;
+	USER_ADDR[3] = 0xFFFFFFFF;
+
+
+	// Loading elpis memory
+	elpis_load_memory(OS_DATA, OS_ADDR);
+	elpis_load_memory(USER_DATA, USER_ADDR);
+	
+	reg_la3_oenb = reg_la3_iena = 0x00000001; // Recovering fast clock not controlled by the user
+
+	// Reset of Elpis and start of computation at Elpis
+	reg_la3_data = 0x00000002;
+	reg_la3_data = 0x00000000;
+
+	reg_mprj_datal = 0xAB410000;
+	print("\n");
+	print("Monitor: Test Bytes Passed\n\n"); // Makes simulation very long!
+	reg_mprj_datal = 0xAB510000;
+}
\ No newline at end of file
diff --git a/verilog/dv/testBytes/testBytes.elf b/verilog/dv/testBytes/testBytes.elf
new file mode 100755
index 0000000..21f3a4c
--- /dev/null
+++ b/verilog/dv/testBytes/testBytes.elf
Binary files differ
diff --git a/verilog/dv/testBytes/testBytes.hex b/verilog/dv/testBytes/testBytes.hex
new file mode 100755
index 0000000..dcd1f2b
--- /dev/null
+++ b/verilog/dv/testBytes/testBytes.hex
@@ -0,0 +1,130 @@
+@00000000

+93 00 00 00 93 01 00 00 13 02 00 00 93 02 00 00 

+13 03 00 00 93 03 00 00 13 04 00 00 93 04 00 00 

+13 05 00 00 93 05 00 00 13 06 00 00 93 06 00 00 

+13 07 00 00 93 07 00 00 13 08 00 00 93 08 00 00 

+13 09 00 00 93 09 00 00 13 0A 00 00 93 0A 00 00 

+13 0B 00 00 93 0B 00 00 13 0C 00 00 93 0C 00 00 

+13 0D 00 00 93 0D 00 00 13 0E 00 00 93 0E 00 00 

+13 0F 00 00 93 0F 00 00 17 05 00 00 13 05 05 79 

+93 05 00 00 13 06 00 00 63 D8 C5 00 14 41 94 C1 

+11 05 91 05 E3 CC C5 FE 13 05 00 00 93 05 00 00 

+63 57 B5 00 23 20 05 00 11 05 E3 4D B5 FE C1 22 

+01 A0 01 00 B7 02 00 28 13 03 00 12 23 90 62 00 

+A3 81 02 00 05 C6 21 4F 93 73 F6 0F 93 DE 73 00 

+23 80 D2 01 93 EE 0E 01 23 80 D2 01 86 03 93 F3 

+F3 0F 7D 1F E3 14 0F FE 23 80 62 00 A1 C9 13 0F 

+00 02 83 23 05 00 A1 4F 93 DE F3 01 23 80 D2 01 

+93 EE 0E 01 23 80 D2 01 83 CE 02 00 93 FE 2E 00 

+93 DE 1E 00 86 03 B3 E3 D3 01 7D 1F 63 17 0F 00 

+23 20 75 00 11 05 83 23 05 00 FD 1F E3 96 0F FC 

+FD 15 F1 F1 63 04 0F 00 23 20 75 00 13 03 00 08 

+A3 81 62 00 82 80 01 00 00 00 01 11 06 CE 22 CC 

+00 10 AA 87 A3 07 F4 FE 03 47 F4 FE A9 47 63 14 

+F7 00 35 45 DD 37 B7 07 00 20 91 07 03 47 F4 FE 

+98 C3 01 00 F2 40 62 44 05 61 82 80 01 11 06 CE 

+22 CC 00 10 23 26 A4 FE 19 A8 83 27 C4 FE 13 87 

+17 00 23 26 E4 FE 83 C7 07 00 3E 85 7D 37 83 27 

+C4 FE 83 C7 07 00 F5 F3 01 00 F2 40 62 44 05 61 

+82 80 79 71 22 D6 00 18 23 2E A4 FC 23 2C B4 FC 

+85 47 23 24 F4 FE 23 26 04 FE B7 07 00 25 B1 07 

+11 47 98 C3 B7 07 00 25 B1 07 15 47 98 C3 B7 07 

+00 25 B1 07 11 47 98 C3 95 A0 83 27 C4 FE 8A 07 

+03 27 C4 FD BA 97 98 43 FD 57 63 15 F7 00 23 24 

+04 FE 35 A0 83 27 C4 FE 8A 07 03 27 84 FD 3E 97 

+B7 07 00 25 18 43 98 C3 83 27 C4 FE 8A 07 03 27 

+C4 FD 3E 97 B7 07 00 25 91 07 18 43 98 C3 B7 07 

+00 25 B1 07 15 47 98 C3 B7 07 00 25 B1 07 11 47 

+98 C3 83 27 C4 FE 85 07 23 26 F4 FE 83 27 84 FE 

+C9 FF B7 07 00 25 B1 07 05 47 98 C3 B7 07 00 25 

+B1 07 23 A0 07 00 01 00 32 54 45 61 82 80 2D 71 

+23 2E 11 10 23 2C 81 10 00 12 B7 07 00 24 29 67 

+09 07 98 C3 B7 07 00 26 93 87 07 0A 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 C7 09 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 87 09 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 47 09 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 07 09 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 C7 08 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 87 08 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 47 08 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 07 08 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 C7 07 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 87 07 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 47 07 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 07 07 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 C7 06 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 87 06 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 47 06 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 07 06 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 C7 05 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 87 05 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 47 05 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 07 05 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 C7 04 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 87 04 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 47 04 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 07 04 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 87 03 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 47 03 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 07 03 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 C7 02 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 87 02 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 47 02 09 67 13 07 

+87 80 98 C3 B7 07 00 26 93 87 C7 03 09 67 13 07 

+97 80 98 C3 B7 07 00 20 13 07 10 27 98 C3 B7 07 

+00 20 A1 07 05 47 98 C3 B7 07 00 26 05 47 98 C3 

+01 00 B7 07 00 26 98 43 85 47 E3 0C F7 FE B7 07 

+00 25 13 87 07 02 81 47 1C C3 37 07 00 25 41 07 

+1C C3 B7 07 00 25 13 87 47 02 81 47 1C C3 37 07 

+00 25 51 07 1C C3 B7 07 00 25 13 87 87 02 81 47 

+1C C3 37 07 00 25 61 07 1C C3 B7 07 00 25 13 87 

+C7 02 81 47 1C C3 37 07 00 25 71 07 1C C3 B7 07 

+00 26 B1 07 37 07 40 AB 98 C3 B7 27 50 00 93 87 

+37 02 23 2C F4 F6 B7 27 60 00 93 87 37 22 23 2E 

+F4 F6 B7 27 70 00 93 87 37 42 23 20 F4 F8 B7 27 

+80 00 93 87 37 62 23 22 F4 F8 B7 37 90 00 93 87 

+37 82 23 24 F4 F8 B7 07 40 00 93 87 37 41 23 26 

+F4 F8 B7 07 50 00 93 87 37 49 23 28 F4 F8 B7 07 

+60 00 93 87 37 29 23 2A F4 F8 B7 07 70 00 93 87 

+37 31 23 2C F4 F8 B7 07 20 00 93 87 F7 3A 23 2E 

+F4 F8 B7 97 83 00 93 87 37 C6 23 20 F4 FA B7 97 

+93 00 93 87 37 A6 23 22 F4 FA B7 97 53 00 93 87 

+37 C6 23 24 F4 FA B7 97 63 00 93 87 37 E6 23 26 

+F4 FA B7 97 03 00 93 87 37 E6 23 28 F4 FA B7 17 

+00 02 93 87 37 86 23 2A F4 FA 93 07 E0 02 23 2C 

+F4 FA 85 67 93 87 37 86 23 2E F4 FA B7 07 00 02 

+93 87 D7 07 23 20 F4 FC 93 07 30 46 23 22 F4 FC 

+B7 07 00 04 93 87 D7 07 23 24 F4 FC 89 67 93 87 

+37 28 23 26 F4 FC B7 27 40 00 93 87 37 30 23 28 

+F4 FC B7 27 80 00 93 87 37 38 23 2A F4 FC B7 27 

+C0 00 93 87 37 40 23 2C F4 FC B7 27 00 01 93 87 

+37 48 23 2E F4 FC 93 07 F0 07 23 20 F4 FE 93 07 

+30 03 23 22 F4 FE 89 67 93 87 07 05 23 24 F4 FE 

+FD 57 23 26 F4 FE C1 47 23 20 F4 F0 C5 47 23 22 

+F4 F0 C9 47 23 24 F4 F0 CD 47 23 26 F4 F0 D1 47 

+23 28 F4 F0 D5 47 23 2A F4 F0 D9 47 23 2C F4 F0 

+DD 47 23 2E F4 F0 E1 47 23 20 F4 F2 E5 47 23 22 

+F4 F2 E9 47 23 24 F4 F2 ED 47 23 26 F4 F2 F1 47 

+23 28 F4 F2 F5 47 23 2A F4 F2 F9 47 23 2C F4 F2 

+FD 47 23 2E F4 F2 93 07 00 02 23 20 F4 F4 93 07 

+10 02 23 22 F4 F4 93 07 20 02 23 24 F4 F4 93 07 

+30 02 23 26 F4 F4 93 07 40 02 23 28 F4 F4 93 07 

+50 02 23 2A F4 F4 93 07 60 02 23 2C F4 F4 93 07 

+70 02 23 2E F4 F4 93 07 80 02 23 20 F4 F6 93 07 

+90 02 23 22 F4 F6 93 07 A0 02 23 24 F4 F6 93 07 

+B0 02 23 26 F4 F6 95 47 23 28 F4 F6 FD 57 23 2A 

+F4 F6 93 07 30 08 23 28 F4 EE B7 07 10 00 93 87 

+37 22 23 2A F4 EE B7 07 01 FF 93 87 37 F3 23 2C 

+F4 EE FD 57 23 2E F4 EE 93 07 00 04 23 20 F4 EE 

+93 07 10 04 23 22 F4 EE 93 07 00 10 23 24 F4 EE 

+FD 57 23 26 F4 EE 13 07 04 F0 93 07 84 F7 BA 85 

+3E 85 81 34 13 07 04 EE 93 07 04 EF BA 85 3E 85 

+0D 3C B7 07 00 25 13 87 C7 02 85 47 1C C3 37 07 

+00 25 71 07 1C C3 B7 07 00 25 B1 07 09 47 98 C3 

+B7 07 00 25 B1 07 23 A0 07 00 B7 07 00 26 B1 07 

+37 07 41 AB 98 C3 B7 07 00 10 13 85 47 7E 7D 3A 

+B7 07 00 10 13 85 87 7E 55 3A B7 07 00 26 B1 07 

+37 07 51 AB 98 C3 01 00 83 20 C1 11 03 24 81 11 

+15 61 82 80 0A 00 00 00 4D 6F 6E 69 74 6F 72 3A 

+20 54 65 73 74 20 42 79 74 65 73 20 50 61 73 73 

+65 64 0A 0A 00 00 00 00 

diff --git a/verilog/dv/testBytes/testBytes_tb.v b/verilog/dv/testBytes/testBytes_tb.v
new file mode 100644
index 0000000..99f936c
--- /dev/null
+++ b/verilog/dv/testBytes/testBytes_tb.v
@@ -0,0 +1,177 @@
+
+// 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 "uprj_netlists.v"
+`include "caravel_netlists.v"
+`include "spiflash.v"
+`include "tbuart.v"
+
+module testBytes_tb;
+	reg clock;
+    reg RSTB;
+	reg CSB;
+
+	reg power1, power2;
+
+    wire gpio;
+	wire uart_tx;
+    wire [37:0] mprj_io;
+	wire [15:0] checkbits;
+
+	assign checkbits  = mprj_io[31:16];
+	assign uart_tx = mprj_io[6];
+
+	always #12.5 clock <= (clock === 1'b0);
+
+	initial begin
+		clock = 0;
+	end
+
+	assign mprj_io[3] = (CSB == 1'b1) ? 1'b1 : 1'bz;
+
+	initial begin
+		$dumpfile("testBytes.vcd");
+		$dumpvars(0, testBytes_tb);
+		// TIP. Increase the first repeat number until it is needed
+		// Repeat cycles of 1000 clock edges as needed to complete testbench
+		repeat (200) begin
+			repeat (1000) @(posedge clock);
+			// $display("+1000 cycles");
+		end
+		$display("%c[1;31m",27);
+		`ifdef GL
+			$display ("Monitor: Timeout, Test Bytes (GL) Failed");
+		`else
+			$display ("Monitor: Timeout, Test Bytes (RTL) Failed");
+		`endif
+		$display("%c[0m",27);
+		$finish;
+	end
+
+	wire[127:0] cache_line0;
+	assign cache_line0 = testBytes_tb.uut.mprj.core0.datapath.dcache.cacheData[0];
+
+	initial begin
+		$display("Test Bytes started");
+		wait(cache_line0[39:0] == 'h33FF00FF33);
+		$display("%c[1;32m",27);
+		$display("Test Bytes Finished correctly");
+		$display("%c[0m",27);
+		#1;
+		$finish;
+	end
+
+	// TIP. Dumping of memory addresses. Do something similar with registers
+	integer i_mem;
+	initial begin
+    	for (i_mem = 0; i_mem < 512; i_mem = i_mem + 1) begin
+			$dumpvars(0, testBytes_tb.uut.mprj.custom_sram.mem[i_mem]);
+		end
+   	end
+
+	integer i_reg;
+	initial begin
+    	for (i_reg = 0; i_reg < 32; i_reg = i_reg + 1) begin
+			$dumpvars(0, testBytes_tb.uut.mprj.core0.datapath.regfile.registers[i_reg]);
+		end
+   	end
+
+	// Printing first cache positions ...
+	integer i_dcache;
+	initial begin
+    	for (i_dcache = 0; i_dcache < 4; i_dcache = i_dcache + 1) begin
+			$dumpvars(0, testBytes_tb.uut.mprj.core0.datapath.dcache.cacheData[i_dcache]);
+		end
+   	end
+
+	initial begin
+		RSTB <= 1'b0;
+		CSB  <= 1'b1;		// Force CSB high
+		#2000;
+		RSTB <= 1'b1;	    	// Release reset
+		#170000;
+		CSB = 1'b0;		// CSB can be released
+	end
+
+	initial begin		// Power-up sequence
+		power1 <= 1'b0;
+		power2 <= 1'b0;
+		#200;
+		power1 <= 1'b1;
+		#200;
+		power2 <= 1'b1;
+	end
+
+	wire flash_csb;
+	wire flash_clk;
+	wire flash_io0;
+	wire flash_io1;
+
+	wire VDD1V8;
+	wire VDD3V3;
+	wire VSS;
+    
+	assign VDD3V3 = power1;
+	assign VDD1V8 = power2;
+	assign VSS = 1'b0;
+
+	caravel uut (
+		.vddio	  (VDD3V3),
+		.vssio	  (VSS),
+		.vdda	  (VDD3V3),
+		.vssa	  (VSS),
+		.vccd	  (VDD1V8),
+		.vssd	  (VSS),
+		.vdda1    (VDD3V3),
+		.vdda2    (VDD3V3),
+		.vssa1	  (VSS),
+		.vssa2	  (VSS),
+		.vccd1	  (VDD1V8),
+		.vccd2	  (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("testBytes.hex")
+	) spiflash (
+		.csb(flash_csb),
+		.clk(flash_clk),
+		.io0(flash_io0),
+		.io1(flash_io1),
+		.io2(),			// not used
+		.io3()			// not used
+	);
+
+	// Testbench UART
+	tbuart tbuart (
+		.ser_rx(uart_tx)
+	);
+
+endmodule
+`default_nettype wire