diff options
Diffstat (limited to 'scripts/tomthumbtg')
-rw-r--r-- | scripts/tomthumbtg/.gitignore | 15 | ||||
-rw-r--r-- | scripts/tomthumbtg/README | 7 | ||||
-rw-r--r-- | scripts/tomthumbtg/run.sh | 43 | ||||
-rw-r--r-- | scripts/tomthumbtg/sections.lds | 7 | ||||
-rw-r--r-- | scripts/tomthumbtg/start.S | 57 | ||||
-rw-r--r-- | scripts/tomthumbtg/testbench.v | 83 |
6 files changed, 0 insertions, 212 deletions
diff --git a/scripts/tomthumbtg/.gitignore b/scripts/tomthumbtg/.gitignore deleted file mode 100644 index c1e6b04..0000000 --- a/scripts/tomthumbtg/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -testbench_a -testbench_b -testbench_c -testbench_d -testbench_e -testbench_f -testbench_g -testbench_h -testbench_i -testbench_j -testbench_k -testbench_l -testgen.tgz -testgen -tests diff --git a/scripts/tomthumbtg/README b/scripts/tomthumbtg/README deleted file mode 100644 index 4e12ba8..0000000 --- a/scripts/tomthumbtg/README +++ /dev/null @@ -1,7 +0,0 @@ - -Testing PicoRV32 using the test case generator from -the Tom Thumb RISC-V CPU project: - -https://github.com/maikmerten/riscv-tomthumb -https://github.com/maikmerten/riscv-tomthumb-testgen - diff --git a/scripts/tomthumbtg/run.sh b/scripts/tomthumbtg/run.sh deleted file mode 100644 index 63a6935..0000000 --- a/scripts/tomthumbtg/run.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash - -set -ex - -if [ ! -f testgen.tgz ]; then - rm -f testgen.tgz.part - wget -O testgen.tgz.part http://maikmerten.de/testgen.tgz - mv testgen.tgz.part testgen.tgz -fi - -rm -rf tests testgen/ -tar xvzf testgen.tgz - -iverilog -o testbench_a -s testbench testbench.v ../../picorv32.v -DTWO_STAGE_SHIFT=0 -DBARREL_SHIFTER=0 -DTWO_CYCLE_COMPARE=0 -DTWO_CYCLE_ALU=0 -iverilog -o testbench_b -s testbench testbench.v ../../picorv32.v -DTWO_STAGE_SHIFT=1 -DBARREL_SHIFTER=0 -DTWO_CYCLE_COMPARE=0 -DTWO_CYCLE_ALU=0 -iverilog -o testbench_c -s testbench testbench.v ../../picorv32.v -DTWO_STAGE_SHIFT=0 -DBARREL_SHIFTER=1 -DTWO_CYCLE_COMPARE=0 -DTWO_CYCLE_ALU=0 - -iverilog -o testbench_d -s testbench testbench.v ../../picorv32.v -DTWO_STAGE_SHIFT=0 -DBARREL_SHIFTER=0 -DTWO_CYCLE_COMPARE=1 -DTWO_CYCLE_ALU=0 -iverilog -o testbench_e -s testbench testbench.v ../../picorv32.v -DTWO_STAGE_SHIFT=1 -DBARREL_SHIFTER=0 -DTWO_CYCLE_COMPARE=1 -DTWO_CYCLE_ALU=0 -iverilog -o testbench_f -s testbench testbench.v ../../picorv32.v -DTWO_STAGE_SHIFT=0 -DBARREL_SHIFTER=1 -DTWO_CYCLE_COMPARE=1 -DTWO_CYCLE_ALU=0 - -iverilog -o testbench_g -s testbench testbench.v ../../picorv32.v -DTWO_STAGE_SHIFT=0 -DBARREL_SHIFTER=0 -DTWO_CYCLE_COMPARE=0 -DTWO_CYCLE_ALU=1 -iverilog -o testbench_h -s testbench testbench.v ../../picorv32.v -DTWO_STAGE_SHIFT=1 -DBARREL_SHIFTER=0 -DTWO_CYCLE_COMPARE=0 -DTWO_CYCLE_ALU=1 -iverilog -o testbench_i -s testbench testbench.v ../../picorv32.v -DTWO_STAGE_SHIFT=0 -DBARREL_SHIFTER=1 -DTWO_CYCLE_COMPARE=0 -DTWO_CYCLE_ALU=1 - -iverilog -o testbench_j -s testbench testbench.v ../../picorv32.v -DTWO_STAGE_SHIFT=0 -DBARREL_SHIFTER=0 -DTWO_CYCLE_COMPARE=1 -DTWO_CYCLE_ALU=1 -iverilog -o testbench_k -s testbench testbench.v ../../picorv32.v -DTWO_STAGE_SHIFT=1 -DBARREL_SHIFTER=0 -DTWO_CYCLE_COMPARE=1 -DTWO_CYCLE_ALU=1 -iverilog -o testbench_l -s testbench testbench.v ../../picorv32.v -DTWO_STAGE_SHIFT=0 -DBARREL_SHIFTER=1 -DTWO_CYCLE_COMPARE=1 -DTWO_CYCLE_ALU=1 - -mkdir -p tests -for i in {0..999}; do - fn="tests/test_`printf '%03d' $i`" - - { - cat start.S - java -jar testgen/tomthumb-testgen-1.0-SNAPSHOT.jar - } > $fn.s - - riscv32-unknown-elf-gcc -ffreestanding -nostdlib -Wl,-Bstatic,-T,sections.lds -o $fn.elf $fn.s - riscv32-unknown-elf-objcopy -O binary $fn.elf $fn.bin - python3 ../../firmware/makehex.py $fn.bin 16384 > $fn.hex - for tb in testbench_{a,b,c,d,e,f,g,h,i,j,k,l}; do vvp -N $tb +hex=$fn.hex; done -done diff --git a/scripts/tomthumbtg/sections.lds b/scripts/tomthumbtg/sections.lds deleted file mode 100644 index 8962f5c..0000000 --- a/scripts/tomthumbtg/sections.lds +++ /dev/null @@ -1,7 +0,0 @@ -SECTIONS { - .memory : { - . = 0; - *(.text); - *(*); - } -} diff --git a/scripts/tomthumbtg/start.S b/scripts/tomthumbtg/start.S deleted file mode 100644 index 541c8a4..0000000 --- a/scripts/tomthumbtg/start.S +++ /dev/null @@ -1,57 +0,0 @@ -.section .text.start -.global testcollection - -/* zero-initialize all registers */ -addi x1, zero, 0 -addi x2, zero, 0 -addi x3, zero, 0 -addi x4, zero, 0 -addi x5, zero, 0 -addi x6, zero, 0 -addi x7, zero, 0 -addi x8, zero, 0 -addi x9, zero, 0 -addi x10, zero, 0 -addi x11, zero, 0 -addi x12, zero, 0 -addi x13, zero, 0 -addi x14, zero, 0 -addi x15, zero, 0 -addi x16, zero, 0 -addi x17, zero, 0 -addi x18, zero, 0 -addi x19, zero, 0 -addi x20, zero, 0 -addi x21, zero, 0 -addi x22, zero, 0 -addi x23, zero, 0 -addi x24, zero, 0 -addi x25, zero, 0 -addi x26, zero, 0 -addi x27, zero, 0 -addi x28, zero, 0 -addi x29, zero, 0 -addi x30, zero, 0 -addi x31, zero, 0 - -/* set stack pointer */ -lui sp, %hi(64*1024) -addi sp, sp, %lo(64*1024) - -/* push zeros on the stack for argc and argv */ -/* (stack is aligned to 16 bytes in riscv calling convention) */ -addi sp,sp,-16 -sw zero,0(sp) -sw zero,4(sp) -sw zero,8(sp) -sw zero,12(sp) - -/* call test */ -call testcollection - -/* write test results */ -lui x1, %hi(0x10000000) -addi x1, x1, %lo(0x10000000) -sw x5, 0(x1) - -ebreak diff --git a/scripts/tomthumbtg/testbench.v b/scripts/tomthumbtg/testbench.v deleted file mode 100644 index c39ebca..0000000 --- a/scripts/tomthumbtg/testbench.v +++ /dev/null @@ -1,83 +0,0 @@ -`timescale 1 ns / 1 ps - -module testbench; - reg clk = 1; - reg resetn = 0; - wire trap; - - always #5 clk = ~clk; - - initial begin - repeat (100) @(posedge clk); - resetn <= 1; - end - - wire mem_valid; - wire mem_instr; - reg mem_ready; - wire [31:0] mem_addr; - wire [31:0] mem_wdata; - wire [3:0] mem_wstrb; - reg [31:0] mem_rdata; - - picorv32 #( - .TWO_STAGE_SHIFT(`TWO_STAGE_SHIFT), - .BARREL_SHIFTER(`BARREL_SHIFTER), - .TWO_CYCLE_COMPARE(`TWO_CYCLE_COMPARE), - .TWO_CYCLE_ALU(`TWO_CYCLE_ALU) - ) uut ( - .clk (clk ), - .resetn (resetn ), - .trap (trap ), - .mem_valid (mem_valid ), - .mem_instr (mem_instr ), - .mem_ready (mem_ready ), - .mem_addr (mem_addr ), - .mem_wdata (mem_wdata ), - .mem_wstrb (mem_wstrb ), - .mem_rdata (mem_rdata ) - ); - - reg [31:0] memory [0:16*1024-1]; - reg [1023:0] hex_filename; - - initial begin - if ($value$plusargs("hex=%s", hex_filename)) - $readmemh(hex_filename, memory); - end - - initial begin - // $dumpfile("testbench.vcd"); - // $dumpvars(0, testbench); - end - - always @(posedge clk) begin - if (resetn && trap) begin - repeat (10) @(posedge clk); - $display("TRAP"); - $stop; - end - end - - always @(posedge clk) begin - mem_ready <= 0; - if (mem_valid && !mem_ready) begin - mem_ready <= 1; - if (mem_addr == 32'h 1000_0000) begin - if (mem_wdata != -32'd1) begin - $display("Failed test case: %d", mem_wdata); - $stop; - end else begin - $display("OK."); - $finish; - end - end else begin - mem_rdata <= memory[mem_addr >> 2]; - if (mem_wstrb[0]) memory[mem_addr >> 2][ 7: 0] <= mem_wdata[ 7: 0]; - if (mem_wstrb[1]) memory[mem_addr >> 2][15: 8] <= mem_wdata[15: 8]; - if (mem_wstrb[2]) memory[mem_addr >> 2][23:16] <= mem_wdata[23:16]; - if (mem_wstrb[3]) memory[mem_addr >> 2][31:24] <= mem_wdata[31:24]; - end - end - end -endmodule |