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);