Update test_mips_cpu_harvard.sh

Outputs Pass/Fail by comparing to INSTR.ref.txt files (need to add these per instr)
This commit is contained in:
jl7719 2020-12-10 17:24:40 +09:00
parent db344b3150
commit c93473a54d
2 changed files with 28 additions and 16 deletions

1
inputs/addu.ref.txt Normal file
View file

@ -0,0 +1 @@
8

View file

@ -1,11 +1,10 @@
#!/bin/bash #!/bin/bash
# should not create any files in the rtl dir #**Delete command for windows before submission**
# but auxiliary files / dirs can be utilised #rm inputs/*.log.txt inputs/*.ref.txt
# Source File & Source Directory Parsing # Source File & Source Directory Parsing
SRC_DIR=${1?Error: no source directory given in argument}; # e.g. ./rtl SRC_DIR=${1?Error: no source directory given in argument}; # e.g. rtl
SRC=$(ls ${SRC_DIR} | grep -E "harvard|memory|alu|regfile|pc|control"); SRC=$(ls ${SRC_DIR} | grep -E "harvard|memory|alu|regfile|pc|control");
SRC_TEMP=""; SRC_TEMP="";
for src in ${SRC} for src in ${SRC}
@ -13,40 +12,52 @@ do
SRC_TEMP+=${SRC_DIR}/${src}" "; SRC_TEMP+=${SRC_DIR}/${src}" ";
done done
SRC=${SRC_TEMP} SRC=${SRC_TEMP}
echo ${SRC}
# Instruction Argument # Instruction Argument
INSTR=${2:-"No instruction specified: running all testcases"}; # e.g. addiu INSTR=${2:-"No instruction specified: running all testcases"}; # e.g. addiu
echo ${INSTR};
# Start Testing # Start Testing
if [[ ${INSTR} == "No instruction specified: running all testcases" ]]; if [[ ${INSTR} == "No instruction specified: running all testcases" ]];
then then
# All Testcase Files # All Testcase Files
TESTCASES=$(ls ./inputs | grep ".txt"); TESTCASES=$(find ./inputs ! -name '*ref*' ! -name '*log*' ! -name '*out*' ! -name 'inputs' | sed 's#.*/##');
echo ${TESTCASES} #echo ${TESTCASES}
for TESTCASE in ${TESTCASES} for TESTCASE in ${TESTCASES}
do do
# Run Each Testcase File # Run Each Testcase File
echo ${TESTCASE} TESTCASE="${TESTCASE%%.*}";
/mnt/c/Windows/System32/cmd.exe /C \ #echo ${TESTCASE};
#/mnt/c/Windows/System32/cmd.exe /C \
iverilog -Wall -g2012 \ iverilog -Wall -g2012 \
-s mips_cpu_harvard_tb \ -s mips_cpu_harvard_tb \
-P mips_cpu_harvard_tb.RAM_INIT_FILE=\"inputs/${TESTCASE}.txt\" \ -P mips_cpu_harvard_tb.RAM_INIT_FILE=\"inputs/${TESTCASE}.txt\" \
-o exec/mips_cpu_harvard_tb_${TESTCASE} testbench/mips_cpu_harvard_tb.v \ -o exec/mips_cpu_harvard_tb_${TESTCASE} testbench/mips_cpu_harvard_tb.v \
${SRC} ${SRC} 2> /dev/null
/mnt/c/Windows/System32/cmd.exe /C vvp ./exec/mips_cpu_harvard_tb_${TESTCASE}; /mnt/c/Windows/System32/cmd.exe /C vvp ./exec/mips_cpu_harvard_tb_${TESTCASE} &> ./inputs/${TESTCASE}.log.txt; # log file for debugging (contains $display)
echo "$(tail -1 ./inputs/${TESTCASE}.log.txt)" > ./inputs/${TESTCASE}.out.txt; # register v0 output to compare with reference
if diff -w ./inputs/${TESTCASE}.out.txt ./inputs/${TESTCASE}.ref.txt &> /dev/null # compare
then
echo ${TESTCASE} ${TESTCASE} "Pass";
else
printf '%s %s %s%d %s%d%s\n' "${TESTCASE}" "${TESTCASE}" "Fail Output=" "$(tail -1 ./inputs/${TESTCASE}.out.txt)" "Ref=" "$(tail -1 ./inputs/${TESTCASE}.ref.txt)" 2> /dev/null;
fi
done done
else else
# Run Testcase File Of Specified Instruction # Run Testcase File Of Specified Instruction
echo ${INSTR};
/mnt/c/Windows/System32/cmd.exe /C \ /mnt/c/Windows/System32/cmd.exe /C \
iverilog -Wall -g2012 \ iverilog -Wall -g2012 \
-s mips_cpu_harvard_tb \ -s mips_cpu_harvard_tb \
-P mips_cpu_harvard_tb.RAM_INIT_FILE=\"inputs/${INSTR}.txt\" \ -P mips_cpu_harvard_tb.RAM_INIT_FILE=\"inputs/${INSTR}.txt\" \
-o exec/mips_cpu_harvard_tb_${INSTR} testbench/mips_cpu_harvard_tb.v \ -o exec/mips_cpu_harvard_tb_${INSTR} testbench/mips_cpu_harvard_tb.v \
${SRC} ${SRC} 2> /dev/null
/mnt/c/Windows/System32/cmd.exe /C vvp ./exec/mips_cpu_harvard_tb_${INSTR}; /mnt/c/Windows/System32/cmd.exe /C vvp ./exec/mips_cpu_harvard_tb_${INSTR} &> ./inputs/${INSTR}.log.txt; # log file for debugging (contains $display)
echo "$(tail -1 ./inputs/${INSTR}.log.txt)" > ./inputs/${INSTR}.out.txt; # register v0 output to compare with reference
if diff -w ./inputs/${INSTR}.out.txt ./inputs/${INSTR}.ref.txt &> /dev/null # compare
then
echo ${INSTR} ${INSTR} "Pass";
else
printf '%s %s %s%d %s%d%s\n' "${INSTR}" "${INSTR}" "Fail Output=" "$(tail -1 ./inputs/${INSTR}.out.txt)" "Ref=" "$(tail -1 ./inputs/${INSTR}.ref.txt)" 2> /dev/null;
fi fi
fi