Works for all memories
diff --git a/verilog/dv/la_test/la_test.c b/verilog/dv/la_test/la_test.c
index 30031e8..b01a98e 100644
--- a/verilog/dv/la_test/la_test.c
+++ b/verilog/dv/la_test/la_test.c
@@ -142,6 +142,82 @@
 	}
 }
 
+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]
+
+	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;
+
+	// Write 2 to address 2
+	// Send input packet
+	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 | 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,
@@ -189,247 +265,22 @@
 	read_dp_sram(4);
 	
 	/* SINGLE PORT MEMORIES */
-	// 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]
-	
+
 	// 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;
+	write_sp_sram(8);
+	read_sp_sram(8);
 	
-	// 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;
-
-	// 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 = 0x00000041;
-	}
-
-	// Configure LA as CPU output
-	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]
-
 	// 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;
-
-	// 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 = 0x00000081;
-	}
-
-	// Configure LA as CPU output
-	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_sp_sram(9);
+	read_sp_sram(9);
 
 	// 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;
-
-		// 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 = 0x00000101;
-	}
-
-	// Configure LA as CPU output
-	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_sp_sram(10);
+	read_sp_sram(10);
 
 	// 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;
-
-	// 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 = 0x00000201;
-	}
-
-	// Configure LA as CPU output
-	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_sp_sram(11);
+	read_sp_sram(11);
 
 	// On end, set pin 0 to 0
 	reg_mprj_datal = 0x00000000;