Compare commits
4 Commits
4061cde25c
...
5493c3030c
Author | SHA1 | Date | |
---|---|---|---|
5493c3030c | |||
2b15c90bc1 | |||
31fdf14b23 | |||
e17e463cf3 |
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,7 +1,7 @@
|
|||||||
/build/
|
/build/
|
||||||
/Debug/
|
/Debug/
|
||||||
.settings
|
.settings
|
||||||
/.venv
|
/.venv*
|
||||||
/Debug-PA/
|
/Debug-PA/
|
||||||
/_build/
|
/_build/
|
||||||
/install/
|
/install/
|
||||||
@ -12,3 +12,5 @@
|
|||||||
*.disass
|
*.disass
|
||||||
*.trc
|
*.trc
|
||||||
/*.core_desc
|
/*.core_desc
|
||||||
|
/fasterDecoding/
|
||||||
|
*.ll
|
@ -10,6 +10,7 @@ if(CMAKE_PROJECT_NAME STREQUAL "TGFS-ISS")
|
|||||||
###########################################################################
|
###########################################################################
|
||||||
set(CORE_NAME TGC5C CACHE STRING "The core to build the ISS for" )
|
set(CORE_NAME TGC5C CACHE STRING "The core to build the ISS for" )
|
||||||
option(FW_BUILD "Enable the automatic download and build of some firmware to run on the ISS" OFF)
|
option(FW_BUILD "Enable the automatic download and build of some firmware to run on the ISS" OFF)
|
||||||
|
option(ENABLE_SANITIZER "Enable address sanitizer" OFF)
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 14)
|
set(CMAKE_CXX_STANDARD 14)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
@ -34,7 +35,12 @@ if(CMAKE_PROJECT_NAME STREQUAL "TGFS-ISS")
|
|||||||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
||||||
set(warnings "/W4 /WX /EHsc")
|
set(warnings "/W4 /WX /EHsc")
|
||||||
endif()
|
endif()
|
||||||
|
if(ENABLE_SANITIZER)
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address")
|
||||||
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fsanitize=address")
|
||||||
|
endif()
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
include(ConanInline)
|
include(ConanInline)
|
||||||
if(BUILD_SHARED_LIBS)
|
if(BUILD_SHARED_LIBS)
|
||||||
|
Submodule dbt-rise-core updated: 1371960389...58cacfb8c4
Submodule dbt-rise-tgc updated: c7038cafa5...212fb1c8ff
91
run_riscv_tests.sh
Executable file
91
run_riscv_tests.sh
Executable file
@ -0,0 +1,91 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
##
|
||||||
|
|
||||||
|
# Absolute path to this script, e.g. /home/user/bin/foo.sh
|
||||||
|
SCRIPT=`readlink -f "$0"`
|
||||||
|
# Absolute path this script is in, thus /home/user/bin
|
||||||
|
SCRIPTDIR=`dirname "$SCRIPT"`
|
||||||
|
SCRIPTNAME=`basename "$SCRIPT"`
|
||||||
|
function print_help {
|
||||||
|
echo "Usage: $SCRIPTNAME [-b <backend>] [-s <sim args>]}"
|
||||||
|
echo "Run UCB risc-v compliance test suite on backends"
|
||||||
|
echo "Optional cli arguments:"
|
||||||
|
echo " -b backend type, default all"
|
||||||
|
echo " -s <args> simulator arguments"
|
||||||
|
echo " -h print help"
|
||||||
|
echo " -v increase verbosity"
|
||||||
|
echo " -t set build type"
|
||||||
|
}
|
||||||
|
SIM_ARGS="-v1"
|
||||||
|
BACKENDS=("interp" "tcc" "llvm")
|
||||||
|
DEBUG=0
|
||||||
|
BUILD_TYPE=Debug
|
||||||
|
while getopts 'b:s:hvt:' c
|
||||||
|
do
|
||||||
|
case $c in
|
||||||
|
b) BACKENDS=($OPTARG);;
|
||||||
|
s) SIM_ARGS=$OPTARG ;;
|
||||||
|
h) print_help; exit 0 ;;
|
||||||
|
v) DEBUG=1 ;;
|
||||||
|
t) BUILD_TYPE = $OPTARG;;
|
||||||
|
?)
|
||||||
|
print_help >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
||||||
|
ROOT_DIR=$DIR
|
||||||
|
|
||||||
|
RISCV_TEST=$ROOT_DIR/build/riscv-tests
|
||||||
|
# prepare riscv-test binaries
|
||||||
|
if [ ! -d $RISCV_TEST ]; then
|
||||||
|
mkdir -p $ROOT_DIR/build; cd $ROOT_DIR/build
|
||||||
|
git clone --recursive https://github.com/riscv/riscv-tests.git
|
||||||
|
cd $RISCV_TEST
|
||||||
|
autoconf
|
||||||
|
./configure --with-xlen=32
|
||||||
|
cd $ROOT_DIR
|
||||||
|
make -C $RISCV_TEST -j -k
|
||||||
|
fi
|
||||||
|
# check that we have an executable
|
||||||
|
RISCV_EXE=$ROOT_DIR/build/${BUILD_TYPE}/dbt-rise-tgc/tgc-sim
|
||||||
|
if [ ! -x $RISCV_EXE ]; then
|
||||||
|
mkdir -p build/${BUILD_TYPE}
|
||||||
|
echo "running cmake -B build/${BUILD_TYPE} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DWITH_TCC=ON -DWITH_LLVM=ON "
|
||||||
|
cmake -S . -B build/${BUILD_TYPE} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DWITH_TCC=ON -DWITH_LLVM=ON ../.. || exit 1
|
||||||
|
cmake --build build/${BUILD_TYPE} -j 20 || exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
test_ui_list=`find ${RISCV_TEST}/isa -type f -name rv32ui-p-\* -executable | grep -v fence | grep -v ma_data |sort`
|
||||||
|
test_uc_list=`find ${RISCV_TEST}/isa -type f -name rv32uc-p-\* -executable | grep -v fence | sort`
|
||||||
|
test_um_list=`find ${RISCV_TEST}/isa -type f -name rv32um-p-\* -executable | grep -v fence | sort`
|
||||||
|
test_list="$test_ui_list $test_uc_list $test_um_list $test_mmode_list"
|
||||||
|
|
||||||
|
for backend in "${BACKENDS[@]}"; do
|
||||||
|
failed_list=()
|
||||||
|
for elf in $test_list; do
|
||||||
|
[ $DEBUG -eq 0 ] || echo Running "${RISCV_EXE} $SIM_ARGS -f $elf --backend $backend"
|
||||||
|
${RISCV_EXE} $SIM_ARGS -f $elf --backend $backend
|
||||||
|
if [ $? != 0 ]; then
|
||||||
|
failed_list+="$backend:$elf "
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
tcount=`echo $test_list | wc -w`
|
||||||
|
if [ ! -z "$failed_list" ]; then
|
||||||
|
fcount=`echo $failed_list | wc -w`
|
||||||
|
echo "($backend) $fcount of $tcount test(s) failed:"
|
||||||
|
echo $failed_list | tr ' ' '\n'
|
||||||
|
else
|
||||||
|
echo
|
||||||
|
echo "($backend) All $tcount tests passed."
|
||||||
|
if [ $DEBUG -eq 1 ];then
|
||||||
|
echo "List of executed tests:"
|
||||||
|
for t in $test_list; do
|
||||||
|
name=`basename $t`
|
||||||
|
echo " $name"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
2
scc
2
scc
Submodule scc updated: 8836304704...baba1214d3
Reference in New Issue
Block a user