aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2019-03-16 14:05:17 +0100
committerClifford Wolf <clifford@clifford.at>2019-03-16 14:05:17 +0100
commitc5b6022aa9fdbe522fb19386be8d5cd18ba23b1f (patch)
tree46aa10b84b96ac545a42c7eca137323cbf2d8286
parentd3c0e2ad3e41e132b8858bbb7dd8fbcbd2b43b22 (diff)
downloadpicorv32-c5b6022aa9fdbe522fb19386be8d5cd18ba23b1f.tar.gz
picorv32-c5b6022aa9fdbe522fb19386be8d5cd18ba23b1f.zip
Add byte/hword tests to test firmware
Signed-off-by: Clifford Wolf <clifford@clifford.at>
-rw-r--r--firmware/sieve.c15
-rw-r--r--firmware/start.S6
-rw-r--r--testbench.v5
3 files changed, 23 insertions, 3 deletions
diff --git a/firmware/sieve.c b/firmware/sieve.c
index ff945eb..3c3ff2f 100644
--- a/firmware/sieve.c
+++ b/firmware/sieve.c
@@ -11,6 +11,9 @@
#define BITMAP_SIZE 64
+extern volatile uint32_t scratchpad[];
+volatile uint32_t scratchpad[2];
+
static uint32_t bitmap[BITMAP_SIZE/32];
static uint32_t hash;
@@ -71,6 +74,12 @@ void sieve(void)
}
}
+ print_str("Scratchpad write..\n");
+ *(volatile uint8_t*)(scratchpad+0) = 12;
+ *(volatile uint8_t*)(scratchpad+2) = 34;
+ *(volatile uint16_t*)(scratchpad+6) = 567;
+ *(volatile uint16_t*)(scratchpad+8) = 890;
+
print_str("checksum: ");
print_hex(hash, 8);
@@ -80,5 +89,11 @@ void sieve(void)
print_str(" ERROR\n");
__asm__ volatile ("ebreak");
}
+
+ print_str("Scratchpad read..\n");
+ print_str(*(volatile uint8_t*)(scratchpad+0) == 12 ? "okay (byte = 12)\n" : "ERROR\n");
+ print_str(*(volatile uint8_t*)(scratchpad+2) == 34 ? "okay (byte = 34)\n" : "ERROR\n");
+ print_str(*(volatile uint16_t*)(scratchpad+6) == 567 ? "okay (hword = 567)\n" : "ERROR\n");
+ print_str(*(volatile uint16_t*)(scratchpad+8) == 890 ? "okay (hword = 890)\n" : "ERROR\n");
}
diff --git a/firmware/start.S b/firmware/start.S
index 06d4744..ad9c62b 100644
--- a/firmware/start.S
+++ b/firmware/start.S
@@ -6,10 +6,10 @@
// means.
#define ENABLE_QREGS
-#define ENABLE_RVTST
+#undef ENABLE_RVTST
#define ENABLE_SIEVE
-#define ENABLE_MULTST
-#define ENABLE_STATS
+#undef ENABLE_MULTST
+#undef ENABLE_STATS
#ifndef ENABLE_QREGS
# undef ENABLE_RVTST
diff --git a/testbench.v b/testbench.v
index b87ee36..c9116ae 100644
--- a/testbench.v
+++ b/testbench.v
@@ -105,6 +105,11 @@ module picorv32_wrapper #(
wire mem_axi_rready;
wire [31:0] mem_axi_rdata;
+ always @(posedge clk) begin
+ if (mem_axi_wvalid && mem_axi_wready && (mem_axi_wstrb != 4'b1111))
+ $display("** detected byte/hword write [mem_axi_wstrb=%b] **", mem_axi_wstrb);
+ end
+
axi4_memory #(
.AXI_TEST (AXI_TEST),
.VERBOSE (VERBOSE)