| #!/bin/bash |
| |
| set -ex |
| |
| |
| ## Generate test case |
| |
| if ! test -f config.vh; then |
| python3 config.py |
| fi |
| |
| if ! test -f test.S; then |
| cd riscv-torture |
| ./sbt "generator/run -C config/test.config" |
| cp output/test.S ../test.S |
| cd .. |
| fi |
| |
| |
| ## Compile test case and create reference |
| |
| riscv32-unknown-elf-gcc `sed '/march=/ ! d; s,^// ,-,; y/RVIMC/rvimc/;' config.vh` -ffreestanding -nostdlib -Wl,-Bstatic,-T,sections.lds -o test.elf test.S |
| LD_LIBRARY_PATH="./riscv-isa-sim:./riscv-fesvr" ./riscv-isa-sim/spike test.elf > test.ref |
| riscv32-unknown-elf-objcopy -O binary test.elf test.bin |
| python3 ../../firmware/makehex.py test.bin 4096 > test.hex |
| |
| |
| ## Run test |
| |
| iverilog -o test.vvp testbench.v ../../picorv32.v |
| vvp test.vvp +vcd +hex=test.hex +ref=test.ref |
| |