From bd26f7f0adba2963f6d4a4657fe2795c696126c8 Mon Sep 17 00:00:00 2001 From: Wojciech Kosior Date: Wed, 9 Sep 2020 22:25:27 +0200 Subject: enable byte-grained reads and writes through interface_wrapper --- tests/interface_wrapper/operations.memv | 39 ++++++++++++++++++++++++++++ tests/interface_wrapper/test.v | 6 ++--- tests/wrapped_stack_machine_cond_jump/test.v | 6 ++--- 3 files changed, 45 insertions(+), 6 deletions(-) (limited to 'tests') diff --git a/tests/interface_wrapper/operations.memv b/tests/interface_wrapper/operations.memv index 2b581b5..97237f0 100644 --- a/tests/interface_wrapper/operations.memv +++ b/tests/interface_wrapper/operations.memv @@ -1,5 +1,7 @@ `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 @@ -49,3 +51,40 @@ `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) diff --git a/tests/interface_wrapper/test.v b/tests/interface_wrapper/test.v index 4031f35..d69970a 100644 --- a/tests/interface_wrapper/test.v +++ b/tests/interface_wrapper/test.v @@ -145,7 +145,7 @@ interface_wrapper wrapper CLK <= 0; RST <= 1; - for (i = 0; i < 600; i++) begin + for (i = 0; i < 2000; i++) begin #1; CLK <= ~CLK; @@ -155,9 +155,9 @@ interface_wrapper wrapper if (M_finished) $finish; - end + end // for (i = 0; i < 2000; i++) - $display("error: master hasn't finished its operations in 300 ticks"); + $display("error: master hasn't finished its operations in 1000 ticks"); $finish; end endmodule // interface_wrapper_test diff --git a/tests/wrapped_stack_machine_cond_jump/test.v b/tests/wrapped_stack_machine_cond_jump/test.v index 7845045..ae50d4d 100644 --- a/tests/wrapped_stack_machine_cond_jump/test.v +++ b/tests/wrapped_stack_machine_cond_jump/test.v @@ -161,7 +161,7 @@ module wrapped_stack_machine_test(); CLK <= 0; RST <= 1; - for (i = 0; i < 3500; i++) begin + for (i = 0; i < 5000; i++) begin #1; CLK <= ~CLK; @@ -185,9 +185,9 @@ module wrapped_stack_machine_test(); $finish; end // if (M_finished) - end // for (i = 0; i < 3500; i++) + end // for (i = 0; i < 5000; i++) - $display("error: cpu hasn't finished its operations in 1750 ticks"); + $display("error: cpu hasn't finished its operations in 2500 ticks"); $finish; end // initial begin endmodule // wrapped_stack_machine_test -- cgit v1.2.3