Merge branch 'main' of github.com:AmoghLonkar/openram_testchip into main
diff --git a/verilog/dv/la_test/la_test.c b/verilog/dv/la_test/la_test.c
index f7e80af..f72d820 100644
--- a/verilog/dv/la_test/la_test.c
+++ b/verilog/dv/la_test/la_test.c
@@ -20,28 +20,11 @@
 #include "verilog/dv/caravel/stub.c"
 
 /*
-	IO Test:
-		- Configures MPRJ lower 8-IO pins as outputs
-		- Observes counter value through the MPRJ lower 8 IO pins (in the testbench)
+	LA Test:
+		- Reads to and writes from each SRAM
+		- Uses Logic Analyzer interface for communication between SRAMs and CPU
 */
 
-
-   /* wire     la_clk = la_data_in[127]; */
-   /* wire     la_reset = la_data_in[126]; */
-   /* wire     la_in_load = la_data_in[125]; */
-   /* wire     la_sram_load = la_data_in[124]; */
-   /* wire     la_global_cs = la_data_in[123]; */
-/* * chip_select (4) */
-/* * addr0 (16) */
-/* * din0 (32) */
-/* * csb0 (1) */
-/* * web0 (1) */
-/* * wmask0 (1) */
-/* * addr1 (16) */
-/* * din1 (32) */
-/* * csb1 (1) */
-/* * web1 (1) */
-/* * wmask1 (4) */
 typedef struct bit_fields {
 
   unsigned int clk : 1;
@@ -84,488 +67,69 @@
 int clk = 0;
 int i;
 
-void main()
-{
-	reg_spimaster_config = 0xa002;	// Enable, prescaler = 2,
-                                        // connect to housekeeping SPI
-
-	// This is to signal when the code is ready to the test bench
-	reg_mprj_io_0 = GPIO_MODE_MGMT_STD_OUTPUT;
-
-	/* Apply configuration */
-	reg_mprj_xfer = 1;
-	while (reg_mprj_xfer == 1);
-
+void write_dp_sram(int sel) {
 	// Configure LA probes as outputs from the cpu
 	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]
-	
-	// To start, set pin 0 to 1
-	reg_mprj_datal = 0x00000001;
-	/*
-	union packet p;
-	p.bf.rst = 1;
-	p.bf.clk = 1;
-	p.bf.in_load = 1;
-	p.bf.sram_load = 0;
-	p.bf.la_gcs = 0;
-	
-	p.bf.unused = 0;
 
-	p.bf.cs = 0;
-	p.bf.addr0 = 0;
-	p.bf.din0 = 1;
-	p.bf.csb0 = 0;
-	p.bf.web0 = 0;
-	p.bf.wmask0 = 15;
-
-	p.bf.addr1 = 0;
-	p.bf.din1 = 0;
-	p.bf.csb1 = 1;
-	p.bf.web1 = 1;
-	p.bf.wmask1 = 0;
-
-	//Send data
-	reg_la3_data = p.wf.word3;
-	reg_la2_data = p.wf.word2;
-	reg_la1_data = p.wf.word1;
-	reg_la0_data = p.wf.word0;
-	*/
-
-	/* DUAL PORT MEMORIES */
-
-	//SRAM 0
 	// Write 1 to address 1
 	// Send input packet
-	reg_la3_data = 0xA0000000;
+	reg_la3_data = 0xA0000000 | sel << 12;
 	reg_la2_data = 0x10000000;
 	reg_la1_data = 0x13C00000;
 	reg_la0_data = 0x00000030;
 
 	// Toggle clock to load into SRAM register
-	reg_la3_data = 0x20000000;
-	reg_la3_data = 0xA0000000;
+	reg_la3_data = 0x20000000 | sel << 12;
+	reg_la3_data = 0xA0000000 | sel << 12;
 	
 	// Toggle clock to write SRAM
-	reg_la3_data = 0x08000000;
-	reg_la3_data = 0x80000000;
+	reg_la3_data = 0x08000000 | sel << 12;
+	reg_la3_data = 0x80000000 | sel << 12;
 
 	// Write 2 to address 2
 	// Send input packet
-	reg_la3_data = 0xA0000000;
+	reg_la3_data = 0xA0000000 | sel << 12;
 	reg_la2_data = 0x20000000;
 	reg_la1_data = 0x23C00000;
 	reg_la0_data = 0x00000030;
 
 	// Toggle clock to load into SRAM register
-	reg_la3_data = 0x20000000;
-	reg_la3_data = 0xA0000000;
+	reg_la3_data = 0x20000000 | sel << 12;
+	reg_la3_data = 0xA0000000 | sel << 12;
 	
 	// Toggle clock to write SRAM
-	reg_la3_data = 0x08000000;
-	reg_la3_data = 0x80000000;
+	reg_la3_data = 0x08000000 | sel << 12;
+	reg_la3_data = 0x80000000 | sel << 12;
+}
 
+void read_dp_sram(int sel){
 	// Read back data
 	// Send input packet
-	reg_la3_data = 0xA0000000;
+	reg_la3_data = 0xA0000000 | sel << 12;
 	reg_la2_data = 0x20000000;
 	reg_la1_data = 0x04000040;
 	reg_la0_data = 0x00000010;
 
 	// Toggle clock to load into SRAM register
-	reg_la3_data = 0x20000000;
-	reg_la3_data = 0xA0000000;
+	reg_la3_data = 0x20000000 | sel << 12;
+	reg_la3_data = 0xA0000000 | sel << 12;
 	
 	// Toggle clock to read SRAM
-	reg_la3_data = 0x08000000;
-	reg_la3_data = 0x80000000;
+	reg_la3_data = 0x08000000 | sel << 12;
+	reg_la3_data = 0x80000000 | sel << 12;
 
 	// Toggle clock to store into dout FF
-	reg_la3_data = 0x00000000;
-	reg_la3_data = 0x80000000;
+	reg_la3_data = 0x00000000 | sel << 12;
+	reg_la3_data = 0x80000000 | sel << 12;
 
 	// Toggle clock to replace din with dout
-	reg_la3_data = 0x10000000;
-	reg_la3_data = 0x90000000;
+	reg_la3_data = 0x10000000 | sel << 12;
+	reg_la3_data = 0x90000000 | sel << 12;
 
-	//SRAM 1
-	// Write 1 to address 1
-	// Send input packet
-	reg_la3_data = 0xA0001000;
-	reg_la2_data = 0x10000000;
-	reg_la1_data = 0x13C00000;
-	reg_la0_data = 0x00000030;
-
-	// Toggle clock to load into SRAM register
-	reg_la3_data = 0x20001000;
-	reg_la3_data = 0xA0001000;
-	
-	// Toggle clock to write SRAM
-	reg_la3_data = 0x08001000;
-	reg_la3_data = 0x80001000;
-
-	// Write 2 to address 2
-	// Send input packet
-	reg_la3_data = 0xA0001000;
-	reg_la2_data = 0x20000000;
-	reg_la1_data = 0x23C00000;
-	reg_la0_data = 0x00000030;
-
-	// Toggle clock to load into SRAM register
-	reg_la3_data = 0x20001000;
-	reg_la3_data = 0xA0001000;
-	
-	// Toggle clock to write SRAM
-	reg_la3_data = 0x08001000;
-	reg_la3_data = 0x80001000;
-
-	// Read back data
-	// Send input packet
-	reg_la3_data = 0xA0001000;
-	reg_la2_data = 0x20000000;
-	reg_la1_data = 0x04000040;
-	reg_la0_data = 0x00000010;
-
-	// Toggle clock to load into SRAM register
-	reg_la3_data = 0x20001000;
-	reg_la3_data = 0xA0001000;
-	
-	// Toggle clock to read SRAM
-	reg_la3_data = 0x08001000;
-	reg_la3_data = 0x80001000;
-
-	// Toggle clock to store into dout FF
-	reg_la3_data = 0x00001000;
-	reg_la3_data = 0x80001000;
-
-	// Toggle clock to replace din with dout
-	reg_la3_data = 0x100001000;
-	reg_la3_data = 0x900001000;
-
-	// SRAM 2
-	// Write 1 to address 1
-	// Send input packet
-	reg_la3_data = 0xA0002000;
-	reg_la2_data = 0x10000000;
-	reg_la1_data = 0x13C00000;
-	reg_la0_data = 0x00000030;
-
-	// Toggle clock to load into SRAM register
-	reg_la3_data = 0x20002000;
-	reg_la3_data = 0xA0002000;
-	
-	// Toggle clock to write SRAM
-	reg_la3_data = 0x08002000;
-	reg_la3_data = 0x80002000;
-
-	// Write 2 to address 2
-	// Send input packet
-	reg_la3_data = 0xA0002000;
-	reg_la2_data = 0x20000000;
-	reg_la1_data = 0x23C00000;
-	reg_la0_data = 0x00000030;
-
-	// Toggle clock to load into SRAM register
-	reg_la3_data = 0x20002000;
-	reg_la3_data = 0xA0002000;
-	
-	// Toggle clock to write SRAM
-	reg_la3_data = 0x08002000;
-	reg_la3_data = 0x80002000;
-
-	// Read back data
-	// Send input packet
-	reg_la3_data = 0xA0002000;
-	reg_la2_data = 0x20000000;
-	reg_la1_data = 0x04000040;
-	reg_la0_data = 0x00000010;
-
-	// Toggle clock to load into SRAM register
-	reg_la3_data = 0x20002000;
-	reg_la3_data = 0xA0002000;
-	
-	// Toggle clock to read SRAM
-	reg_la3_data = 0x08002000;
-	reg_la3_data = 0x80002000;
-
-	// Toggle clock to store into dout FF
-	reg_la3_data = 0x00002000;
-	reg_la3_data = 0x80002000;
-
-	// Toggle clock to replace din with dout
-	reg_la3_data = 0x100002000;
-	reg_la3_data = 0x900002000;
-
-	// SRAM 3
-	// Write 1 to address 1
-	// Send input packet
-	reg_la3_data = 0xA0003000;
-	reg_la2_data = 0x10000000;
-	reg_la1_data = 0x13C00000;
-	reg_la0_data = 0x00000030;
-
-	// Toggle clock to load into SRAM register
-	reg_la3_data = 0x20003000;
-	reg_la3_data = 0xA0003000;
-	
-	// Toggle clock to write SRAM
-	reg_la3_data = 0x08003000;
-	reg_la3_data = 0x80003000;
-
-	// Write 2 to address 2
-	// Send input packet
-	reg_la3_data = 0xA0003000;
-	reg_la2_data = 0x20000000;
-	reg_la1_data = 0x23C00000;
-	reg_la0_data = 0x00000030;
-
-	// Toggle clock to load into SRAM register
-	reg_la3_data = 0x20003000;
-	reg_la3_data = 0xA0003000;
-	
-	// Toggle clock to write SRAM
-	reg_la3_data = 0x08003000;
-	reg_la3_data = 0x80003000;
-
-	// Read back data
-	// Send input packet
-	reg_la3_data = 0xA0003000;
-	reg_la2_data = 0x20000000;
-	reg_la1_data = 0x04000040;
-	reg_la0_data = 0x00000010;
-
-	// Toggle clock to load into SRAM register
-	reg_la3_data = 0x20003000;
-	reg_la3_data = 0xA0003000;
-	
-	// Toggle clock to read SRAM
-	reg_la3_data = 0x08003000;
-	reg_la3_data = 0x80003000;
-
-	// Toggle clock to store into dout FF
-	reg_la3_data = 0x00003000;
-	reg_la3_data = 0x80003000;
-
-	// Toggle clock to replace din with dout
-	reg_la3_data = 0x100003000;
-	reg_la3_data = 0x900003000;
-
-	// SRAM 4
-	// Write 1 to address 1
-	// Send input packet
-	reg_la3_data = 0xA0004000;
-	reg_la2_data = 0x10000000;
-	reg_la1_data = 0x13C00000;
-	reg_la0_data = 0x00000030;
-
-	// Toggle clock to load into SRAM register
-	reg_la3_data = 0x20004000;
-	reg_la3_data = 0xA0004000;
-	
-	// Toggle clock to write SRAM
-	reg_la3_data = 0x08004000;
-	reg_la3_data = 0x80004000;
-
-	// Write 2 to address 2
-	// Send input packet
-	reg_la3_data = 0xA0004000;
-	reg_la2_data = 0x20000000;
-	reg_la1_data = 0x23C00000;
-	reg_la0_data = 0x00000030;
-
-	// Toggle clock to load into SRAM register
-	reg_la3_data = 0x20004000;
-	reg_la3_data = 0xA0004000;
-	
-	// Toggle clock to write SRAM
-	reg_la3_data = 0x08004000;
-	reg_la3_data = 0x80004000;
-
-	// Read back data
-	// Send input packet
-	reg_la3_data = 0xA0004000;
-	reg_la2_data = 0x20000000;
-	reg_la1_data = 0x04000040;
-	reg_la0_data = 0x00000010;
-
-	// Toggle clock to load into SRAM register
-	reg_la3_data = 0x20004000;
-	reg_la3_data = 0xA0004000;
-	
-	// Toggle clock to read SRAM
-	reg_la3_data = 0x08004000;
-	reg_la3_data = 0x80004000;
-
-	// Toggle clock to store into dout FF
-	reg_la3_data = 0x00004000;
-	reg_la3_data = 0x80004000;
-
-	// Toggle clock to replace din with dout
-	reg_la3_data = 0x100004000;
-	reg_la3_data = 0x900004000;
-
-	/* SINGLE PORT MEMORIES */
-	
-	// SRAM 8
-	// Write DEADBEEF to address 1
-	// Send input packet
-	reg_la3_data = 0xA0008000;
-	reg_la2_data = 0x1DEADBEE;
-	reg_la1_data = 0xF3C00000;
-	reg_la0_data = 0x00000000;
-
-	// Toggle clock to load into SRAM register
-	reg_la3_data = 0x20008000;
-	reg_la3_data = 0xA0008000;
-	
-	// Toggle clock to write SRAM
-	reg_la3_data = 0x08008000;
-	reg_la3_data = 0x80008000;
-
-	// Read back data
-	// Send input packet
-	reg_la3_data = 0xA0008000;
-	reg_la2_data = 0x10000000;
-	reg_la1_data = 0x04000000;
-	reg_la0_data = 0x00000000;
-
-	// Toggle clock to load into SRAM register
-	reg_la3_data = 0x20008000;
-	reg_la3_data = 0xA0008000;
-	
-	// Toggle clock to read SRAM
-	reg_la3_data = 0x08008000;
-	reg_la3_data = 0x80008000;
-
-	// Toggle clock to store into dout FF
-	reg_la3_data = 0x00008000;
-	reg_la3_data = 0x80008000;
-
-	// Toggle clock to replace din with dout
-	reg_la3_data = 0x100008000;
-	reg_la3_data = 0x900008000;
-
-	// SRAM 9
-	// Write DEADBEEF to address 1
-	// Send input packet
-	reg_la3_data = 0xA0009000;
-	reg_la2_data = 0x1DEADBEE;
-	reg_la1_data = 0xF3C00000;
-	reg_la0_data = 0x00000000;
-
-	// Toggle clock to load into SRAM register
-	reg_la3_data = 0x20009000;
-	reg_la3_data = 0xA0009000;
-	
-	// Toggle clock to write SRAM
-	reg_la3_data = 0x08009000;
-	reg_la3_data = 0x80009000;
-
-	// Read back data
-	// Send input packet
-	reg_la3_data = 0xA0009000;
-	reg_la2_data = 0x10000000;
-	reg_la1_data = 0x04000000;
-	reg_la0_data = 0x00000000;
-
-	// Toggle clock to load into SRAM register
-	reg_la3_data = 0x20009000;
-	reg_la3_data = 0xA0009000;
-	
-	// Toggle clock to read SRAM
-	reg_la3_data = 0x08009000;
-	reg_la3_data = 0x80009000;
-
-	// Toggle clock to store into dout FF
-	reg_la3_data = 0x00009000;
-	reg_la3_data = 0x80009000;
-
-	// Toggle clock to replace din with dout
-	reg_la3_data = 0x100009000;
-	reg_la3_data = 0x900009000;
-
-	// SRAM 10
-	// Write DEADBEEF to address 1
-	// Send input packet
-	reg_la3_data = 0xA000A000;
-	reg_la2_data = 0x1DEADBEE;
-	reg_la1_data = 0xF3C00000;
-	reg_la0_data = 0x00000000;
-
-	// Toggle clock to load into SRAM register
-	reg_la3_data = 0x2000A000;
-	reg_la3_data = 0xA000A000;
-	
-	// Toggle clock to write SRAM
-	reg_la3_data = 0x0800A000;
-	reg_la3_data = 0x8000A000;
-
-	// Read back data
-	// Send input packet
-	reg_la3_data = 0xA000A000;
-	reg_la2_data = 0x10000000;
-	reg_la1_data = 0x04000000;
-	reg_la0_data = 0x00000000;
-
-	// Toggle clock to load into SRAM register
-	reg_la3_data = 0x2000A000;
-	reg_la3_data = 0xA000A000;
-	
-	// Toggle clock to read SRAM
-	reg_la3_data = 0x0800A000;
-	reg_la3_data = 0x8000A000;
-
-	// Toggle clock to store into dout FF
-	reg_la3_data = 0x0000A000;
-	reg_la3_data = 0x8000A000;
-
-	// Toggle clock to replace din with dout
-	reg_la3_data = 0x10000A000;
-	reg_la3_data = 0x90000A000;
-
-	// SRAM 11
-	// Write DEADBEEF to address 1
-	// Send input packet
-	reg_la3_data = 0xA000B000;
-	reg_la2_data = 0x1DEADBEE;
-	reg_la1_data = 0xF3C00000;
-	reg_la0_data = 0x00000000;
-
-	// Toggle clock to load into SRAM register
-	reg_la3_data = 0x2000B000;
-	reg_la3_data = 0xA000B000;
-	
-	// Toggle clock to write SRAM
-	reg_la3_data = 0x0800B000;
-	reg_la3_data = 0x8000B000;
-
-	// Read back data
-	// Send input packet
-	reg_la3_data = 0xA000B000;
-	reg_la2_data = 0x10000000;
-	reg_la1_data = 0x04000000;
-	reg_la0_data = 0x00000000;
-
-	// Toggle clock to load into SRAM register
-	reg_la3_data = 0x2000B000;
-	reg_la3_data = 0xA000B000;
-	
-	// Toggle clock to read SRAM
-	reg_la3_data = 0x0800B000;
-	reg_la3_data = 0x8000B000;
-
-	// Toggle clock to store into dout FF
-	reg_la3_data = 0x0000B000;
-	reg_la3_data = 0x8000B000;
-
-	// Toggle clock to replace din with dout
-	reg_la3_data = 0x10000B000;
-	reg_la3_data = 0x90000B000;
-
-	/*
-	// This is how to read from the LA
+	// Read from the LA
 	// This will trigger a sample of the LA bits to read
 	// Configure LA probes as outputs from the cpu
 	reg_la0_oenb = reg_la0_iena = 0xFFFFFFFF;    // [31:0]
@@ -575,12 +139,138 @@
 	
 	reg_la_sample = 1;
 	// Now read them
-
-	if(reg_la0_data == 0x00000050){
-		print("Passed!\n");
+	if(reg_la0_data != 0x00000050){
+		reg_mprj_datal = 0x00000001 | 1 << (sel + 1);
 	}
-	*/
-	print("Done with tests\n");
+}
+
+void write_sp_sram(int sel) {
+	// Configure LA probes as outputs from the cpu
+	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]
+
+	// Write DEADBEEF to address 1
+	// Send input packet
+	reg_la3_data = 0xA0000000 | sel << 12;
+	reg_la2_data = 0x1DEADBEE;
+	reg_la1_data = 0xF3C00000;
+	reg_la0_data = 0x00000000;
+
+	// Toggle clock to load into SRAM register
+	reg_la3_data = 0x20000000 | sel << 12;
+	reg_la3_data = 0xA0000000 | sel << 12;
+	
+	// Toggle clock to write SRAM
+	reg_la3_data = 0x08000000 | sel << 12;
+	reg_la3_data = 0x80000000 | sel << 12;
+}
+
+void read_sp_sram(int sel){
+	// Read back data
+	// Send input packet
+	reg_la3_data = 0xA0000000 | sel << 12;
+	reg_la2_data = 0x10000000;
+	reg_la1_data = 0x04000000;
+	reg_la0_data = 0x00000000;
+
+	// Toggle clock to load into SRAM register
+	reg_la3_data = 0x20000000 | sel << 12;
+	reg_la3_data = 0xA0000000 | sel << 12;
+	
+	// Toggle clock to read SRAM
+	reg_la3_data = 0x08000000 | sel << 12;
+	reg_la3_data = 0x80000000 | sel << 12;
+
+	// Toggle clock to store into dout FF
+	reg_la3_data = 0x00000000 | sel << 12;
+	reg_la3_data = 0x80000000 | sel << 12;
+
+	// Toggle clock to replace din with dout
+	reg_la3_data = 0x10000000 | sel << 12;
+	reg_la3_data = 0x90000000 | sel << 12;
+
+	// Read from the LA
+	// This will trigger a sample of the LA bits to read
+	// Configure LA probes as outputs from the cpu
+	reg_la0_oenb = reg_la0_iena = 0xFFFFFFFF;    // [31:0]
+	reg_la1_oenb = reg_la1_iena = 0xFFFFFFFF;    // [63:32]
+	reg_la2_oenb = reg_la2_iena = 0xFFFFFFFF;    // [95:64]
+	reg_la3_oenb = reg_la3_iena = 0xFFFFFFFF;    // [127:96]
+	
+	reg_la_sample = 1;
+	// Now read them
+	if(reg_la2_data != 0x1DEADBEE){
+		reg_mprj_datal = 0x00000001 | 1 << (sel - 2);
+	}
+}
+
+
+void main()
+{
+	reg_spimaster_config = 0xa002;	// Enable, prescaler = 2,
+                                        // connect to housekeeping SPI
+
+	// This is to signal when the code is ready to the test bench
+	reg_mprj_io_0 = GPIO_MODE_MGMT_STD_OUTPUT;
+	reg_mprj_io_1 = GPIO_MODE_MGMT_STD_OUTPUT;
+	reg_mprj_io_2 = GPIO_MODE_MGMT_STD_OUTPUT;
+	reg_mprj_io_3 = GPIO_MODE_MGMT_STD_OUTPUT;
+	reg_mprj_io_4 = GPIO_MODE_MGMT_STD_OUTPUT;
+	reg_mprj_io_5 = GPIO_MODE_MGMT_STD_OUTPUT;
+	reg_mprj_io_6 = GPIO_MODE_MGMT_STD_OUTPUT;
+	reg_mprj_io_7 = GPIO_MODE_MGMT_STD_OUTPUT;
+	reg_mprj_io_8 = GPIO_MODE_MGMT_STD_OUTPUT;
+	reg_mprj_io_9 = GPIO_MODE_MGMT_STD_OUTPUT;
+ 
+	/* Apply configuration */
+	reg_mprj_xfer = 1;
+	while (reg_mprj_xfer == 1);
+	
+	// To start, set pin 0 to 1
+	reg_mprj_datal = 0x00000001;
+
+	/* DUAL PORT MEMORIES */
+
+	//SRAM 0
+	write_dp_sram(0);
+	read_dp_sram(0);
+
+	//SRAM 1
+	write_dp_sram(1);
+	read_dp_sram(1);
+
+	// SRAM 2
+	write_dp_sram(2);
+	read_dp_sram(2);
+	
+	// SRAM 3
+	write_dp_sram(3);
+	read_dp_sram(3);
+
+	// SRAM 4
+	write_dp_sram(4);
+	read_dp_sram(4);
+	
+	/* SINGLE PORT MEMORIES */
+	
+	// SRAM 8
+	write_sp_sram(8);
+	read_sp_sram(8);
+	
+	// SRAM 9
+	write_sp_sram(9);
+	read_sp_sram(9);
+
+	// SRAM 10
+	write_sp_sram(10);
+	read_sp_sram(10);
+
+	// SRAM 11
+	write_sp_sram(11);
+	read_sp_sram(11);
+
 	// On end, set pin 0 to 0
 	reg_mprj_datal = 0x00000000;
 }
diff --git a/verilog/dv/la_test/la_test_tb.v b/verilog/dv/la_test/la_test_tb.v
index 5b1ad56..a4ab56e 100644
--- a/verilog/dv/la_test/la_test_tb.v
+++ b/verilog/dv/la_test/la_test_tb.v
@@ -32,6 +32,14 @@
 	wire [37:0] mprj_io;
 	wire mprj_io_0 = mprj_io[0];
 	wire mprj_io_1 = mprj_io[1];
+	wire mprj_io_2 = mprj_io[2];
+	wire mprj_io_3 = mprj_io[3];
+	wire mprj_io_4 = mprj_io[4];
+	wire mprj_io_5 = mprj_io[5];
+	wire mprj_io_6 = mprj_io[6];
+	wire mprj_io_7 = mprj_io[7];
+	wire mprj_io_8 = mprj_io[8];
+	wire mprj_io_9 = mprj_io[9];
 
 	// External clock is used by default.  Make this artificially fast for the
 	// simulation.  Normally this would be a slow clock and the digital PLL
@@ -68,17 +76,56 @@
 
 		wait(mprj_io_0 == 1'b0);
 		$display($time, " Saw bit 0: VCD stopping");
-		
+		$display("Done with tests");
 		$finish;
 
 	end // initial begin
 	
 	initial begin
-		repeat (9) begin
-			wait (mprj_io_1 == 1'b1);
-			$display($time, " Read byte correctly using logic analyzer!");
-		end
+		wait (mprj_io_1 == 1'b1);
+		$display($time, " Data mismatch while reading byte from SRAM 0!"); $finish;
 	end
+	
+	initial begin
+		wait (mprj_io_2 == 1'b1);
+		$display($time, " Data mismatch while reading byte from SRAM 1!"); $finish;
+	end
+		
+	initial begin 
+		wait (mprj_io_3 == 1'b1);
+		$display($time, " Data mismatch while reading byte from SRAM 2!"); $finish;
+	end
+
+	initial begin
+		wait (mprj_io_4 == 1'b1);
+		$display($time, " Data mismatch while reading byte from SRAM 3!"); $finish;
+	end
+
+	initial begin
+		wait (mprj_io_5 == 1'b1);
+		$display($time, " Data mismatch while reading byte from SRAM 4!"); $finish;
+	end
+
+	initial begin
+		wait (mprj_io_6 == 1'b1);
+		$display($time, " Data mismatch while reading byte from SRAM 8!"); $finish;
+	end
+
+	initial begin
+		wait (mprj_io_7 == 1'b1);
+		$display($time, " Data mismatch while reading byte from SRAM 9!"); $finish;
+	end
+
+	initial begin
+		wait (mprj_io_8 == 1'b1);
+		$display($time, " Data mismatch while reading byte from SRAM 10!"); $finish;
+	end
+
+	initial begin
+		wait (mprj_io_9 == 1'b1);
+		$display($time, " Data mismatch while reading byte from SRAM 11!"); $finish;
+	end
+
    initial begin
       //$dumpfile("foo.vcd");
       //$dumpvars(0, la_test_tb);