`include "macroasm.vh" // look into macroasm.vh for more info //// First half of operations has (SEL_O == 4'b111 && ADR_O[0] == 0) // First - a sequence of reads and writes like in self_32bit_word test `WRITE(000000, deadbeef) `WAIT `READ (000000, deadbeef) `WRITE(180004, 1234abcd) `READ (000000, deadbeef) `DESELECT `DESELECT `READ (180004, 1234abcd) `WRITE(101010, a2a24444) `WRITE(180004, 7c7c7c7c) `READ (101010, a2a24444) `WRITE(100004, 9901fe23) `WAIT `WAIT `WAIT `WAIT `WAIT `DESELECT `DESELECT `DESELECT `WAIT `READ(100004, 9901fe23) `DESELECT `WAIT `READ(180004, 7c7c7c7c) // Now, a sequence with some word-aligned but not dword-aligned reads and writes `WRITE(180006, bebebaba) `READ (180004, baba7c7c) `WAIT `WRITE(18000a, 90907878) `DESELECT `WRITE(10100e, a1a1a0a0) `READ (180008, 7878bebe) `READ (101010, a2a2a1a1) `WAIT `DESELECT `WAIT `WRITE(004402, 2c0ffee5) `READ (004402, 2c0ffee5) `WRITE(004404, 00003c0f) `WAIT `WAIT `WAIT `READ (004402, 3c0ffee5) `WRITE(012302, 0fca0000) `WRITE(012306, 0000baca) `READ (012304, baca0fca) //// Second half with non-aligned accesses and weird SEL_O patterns starts here `WRITE (200013, afe8b317) `READ (200013, afe8b317) `WRITES(140022, xxxxd0d3, 3) // Only select 2 bottom bytes `READS (140022, xxxxd0d3, 3) `WRITES(140022, xx48e2xx, 6) // Only select 2 middle bytes `READS (140022, xx48e2xx, 6) `READS (140022, xx48e2d3, f) // Select 3 bottom bytes `WRITES(140025, xxxxxx72, 1) // Single byte write at odd address `WRITES(140024, xxxx7248, 3) `READS (140023, xx7248e2, 7) // Non-aligned read `DESELECT // Some other complicated stuff `WRITES(2013e4, 1182bbxx, a) `WAIT `WRITES(2013e6, xx10xxa2, 5) `WAIT `WAIT `WAIT `READS (2013e5, 1011a2bb, f) `READS (2013e7, 23232323, 0) `DESELECT `WAIT `WRITES(987135, 8dxxxx1e, 9) `WRITES(987137, xxxxxx3f, 1) `WRITES(987135, fedcba98, 0) // Should not do anything `WRITES(987133, 44xxxxxx, 8) `READS (987135, 8d3f441e, f)