diff options
author | Clifford Wolf <clifford@clifford.at> | 2019-03-16 14:05:17 +0100 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2019-03-16 14:05:17 +0100 |
commit | c5b6022aa9fdbe522fb19386be8d5cd18ba23b1f (patch) | |
tree | 46aa10b84b96ac545a42c7eca137323cbf2d8286 | |
parent | d3c0e2ad3e41e132b8858bbb7dd8fbcbd2b43b22 (diff) | |
download | picorv32-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.c | 15 | ||||
-rw-r--r-- | firmware/start.S | 6 | ||||
-rw-r--r-- | testbench.v | 5 |
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) |