Add lit tests for Kelvin SystemC HW simulation test The simulation uses .bin format. Add custom command to generate the binary file from ELF via objcopy. Change-Id: I2a53188a3b9a012d48ef840bd70cfd8d25a3fcf5
diff --git a/audio_prep/mfcc_test.run b/audio_prep/mfcc_test.run index 95e774d..23b584d 100644 --- a/audio_prep/mfcc_test.run +++ b/audio_prep/mfcc_test.run
@@ -1,3 +1,4 @@ +// UNSUPPORTED: kelvin_hw // RUN: ${TEST_RUNNER_CMD} %S/mfcc_test 2>&1 | tee %t // RUN: cat %t | FileCheck %s // CHECK: PASSED
diff --git a/cmake/riscv_iree_gcc.cmake b/cmake/riscv_iree_gcc.cmake index c1d34e1..d484ae2 100644 --- a/cmake/riscv_iree_gcc.cmake +++ b/cmake/riscv_iree_gcc.cmake
@@ -30,6 +30,7 @@ set(CMAKE_AR "${RISCV_TOOLCHAIN_ROOT}/bin/riscv32-unknown-elf-ar") set(CMAKE_RANLIB "${RISCV_TOOLCHAIN_ROOT}/bin/riscv32-unknown-elf-ranlib") set(CMAKE_STRIP "${RISCV_TOOLCHAIN_ROOT}/bin/riscv32-unknown-elf-strip") +set(CMAKE_OBJCOPY "${RISCV_TOOLCHAIN_ROOT}/bin/riscv32-unknown-elf-objcopy") set(RISCV_COMPILER_FLAGS "" CACHE STRING "RISC-V compiler flags for C, CXX, and ASM") set(RISCV_COMPILER_FLAGS_CXX)
diff --git a/risp4ml/common/image_test.run b/risp4ml/common/image_test.run index d8bf7c4..7afb694 100644 --- a/risp4ml/common/image_test.run +++ b/risp4ml/common/image_test.run
@@ -1,3 +1,4 @@ +// UNSUPPORTED: kelvin_hw // RUN: ${TEST_RUNNER_CMD} %S/image_test 2>&1 | tee %t // RUN: cat %t | FileCheck %s // CHECK: PASSED
diff --git a/risp4ml/isp_stages/CMakeLists.txt b/risp4ml/isp_stages/CMakeLists.txt index ac2023b..59ed028 100644 --- a/risp4ml/isp_stages/CMakeLists.txt +++ b/risp4ml/isp_stages/CMakeLists.txt
@@ -138,10 +138,26 @@ pw_assert_basic TESTFILES "wbg_test.run" + "wbg_bin_test.run" +) + +if (${BUILD_WITH_KELVIN}) +# Kelvin-only systemc tests +add_custom_command( + TARGET + risp4ml_isp_stages_wbg_test + POST_BUILD + COMMAND + ${CMAKE_OBJCOPY} -g -O binary + wbg_test + wbg_test.bin + BYPRODUCTS + wbg_test.bin + COMMENT + "Objcopy the binary file" ) # Do not compile the following tests for Kelvin -if (${BUILD_WITH_KELVIN}) return() endif()
diff --git a/risp4ml/isp_stages/blc_test.run b/risp4ml/isp_stages/blc_test.run index 830fef0..dcff7f0 100644 --- a/risp4ml/isp_stages/blc_test.run +++ b/risp4ml/isp_stages/blc_test.run
@@ -1,3 +1,4 @@ +// UNSUPPORTED: kelvin_hw // RUN: ${TEST_RUNNER_CMD} %S/blc_test 2>&1 | tee %t // RUN: cat %t | FileCheck %s // CHECK: PASSED
diff --git a/risp4ml/isp_stages/dg_test.run b/risp4ml/isp_stages/dg_test.run index 86724e1..d18f528 100644 --- a/risp4ml/isp_stages/dg_test.run +++ b/risp4ml/isp_stages/dg_test.run
@@ -1,3 +1,4 @@ +// UNSUPPORTED: kelvin_hw // RUN: ${TEST_RUNNER_CMD} %S/dg_test 2>&1 | tee %t // RUN: cat %t | FileCheck %s // CHECK: PASSED
diff --git a/risp4ml/isp_stages/wbg_bin_test.run b/risp4ml/isp_stages/wbg_bin_test.run new file mode 100644 index 0000000..efba30b --- /dev/null +++ b/risp4ml/isp_stages/wbg_bin_test.run
@@ -0,0 +1,2 @@ +// REQUIRES: kelvin_hw +// RUN: ${TEST_RUNNER_CMD} %S/wbg_test.bin
diff --git a/risp4ml/isp_stages/wbg_test.run b/risp4ml/isp_stages/wbg_test.run index 761aefb..cfdff4f 100644 --- a/risp4ml/isp_stages/wbg_test.run +++ b/risp4ml/isp_stages/wbg_test.run
@@ -1,3 +1,4 @@ +// UNSUPPORTED: kelvin_hw // RUN: ${TEST_RUNNER_CMD} %S/wbg_test 2>&1 | tee %t // RUN: cat %t | FileCheck %s // CHECK: PASSED
diff --git a/samples/branch_mul/CMakeLists.txt b/samples/branch_mul/CMakeLists.txt index e45a432..0ab0419 100644 --- a/samples/branch_mul/CMakeLists.txt +++ b/samples/branch_mul/CMakeLists.txt
@@ -25,4 +25,24 @@ "LINKER:--defsym=__tcm_length__=4M" TESTFILES "branch_mul.run" + "branch_mul_bin.run" ) + +# Kelvin-only systemc tests +if (${BUILD_WITH_KELVIN}) + +add_custom_command( + TARGET + samples_branch_mul_branch_mul_emitc_static + POST_BUILD + COMMAND + ${CMAKE_OBJCOPY} -g -O binary + branch_mul_emitc_static + branch_mul_emitc_static.bin + BYPRODUCTS + branch_mul_emitc_static.bin + COMMENT + "Objcopy the binary file" +) + +endif()
diff --git a/samples/branch_mul/branch_mul.run b/samples/branch_mul/branch_mul.run index 5f8c701..b8dcfdb 100644 --- a/samples/branch_mul/branch_mul.run +++ b/samples/branch_mul/branch_mul.run
@@ -1 +1,2 @@ +// UNSUPPORTED: kelvin_hw // RUN: ${TEST_RUNNER_CMD} %S/branch_mul_emitc_static
diff --git a/samples/branch_mul/branch_mul_bin.run b/samples/branch_mul/branch_mul_bin.run new file mode 100644 index 0000000..e91b92a --- /dev/null +++ b/samples/branch_mul/branch_mul_bin.run
@@ -0,0 +1,2 @@ +// REQUIRES: kelvin_hw +// RUN: ${TEST_RUNNER_CMD} %S/branch_mul_emitc_static.bin
diff --git a/samples/lit.cfg.py b/samples/lit.cfg.py index d94a4d0..c4e2590 100644 --- a/samples/lit.cfg.py +++ b/samples/lit.cfg.py
@@ -36,6 +36,9 @@ kelvin_cmd = ( f"{config.environment['ROOTDIR']}/sw/kelvin/build_tools/test_runner.sh ") +kelvin_hw_cmd = ( + f"{config.environment['ROOTDIR']}/sw/kelvin/build_tools/core_sim_test_runner.sh " +) qemu_cmd = (f"{config.environment['ROOTDIR']}/sw/vec/scripts/test_runner.py " "qemu --qemu-path " f"{config.environment['OUT']}/host/qemu/qemu-system-riscv32") @@ -57,6 +60,9 @@ if runner and runner == "kelvin": config.environment["TEST_RUNNER_CMD"] = kelvin_cmd config.available_features.add("kelvin") +elif runner and runner == "kelvin_hw": + config.environment["TEST_RUNNER_CMD"] = kelvin_hw_cmd + config.available_features.add("kelvin_hw") elif runner and runner == "qemu": config.environment["TEST_RUNNER_CMD"] = qemu_cmd config.available_features.add("qemu")
diff --git a/samples/microbenchmarks/conv1x1_test.run b/samples/microbenchmarks/conv1x1_test.run index 2aa9a92..f554269 100644 --- a/samples/microbenchmarks/conv1x1_test.run +++ b/samples/microbenchmarks/conv1x1_test.run
@@ -1 +1,2 @@ +// UNSUPPORTED: kelvin_hw // RUN: ${TEST_RUNNER_CMD} %S/conv1x1_test_emitc_static
diff --git a/samples/simple_vec_mul/CMakeLists.txt b/samples/simple_vec_mul/CMakeLists.txt index e6844ad..5f9a9f2 100644 --- a/samples/simple_vec_mul/CMakeLists.txt +++ b/samples/simple_vec_mul/CMakeLists.txt
@@ -165,4 +165,38 @@ "-DBUILD_EMITC" TESTFILES "simple_test.run" + "simple_int_static_bin_test.run" ) + +# Kelvin-only systemc tests +if (${BUILD_WITH_KELVIN}) + +add_custom_command( + TARGET + samples_simple_vec_mul_simple_int_vec_mul_bytecode_static + POST_BUILD + COMMAND + ${CMAKE_OBJCOPY} -g -O binary + simple_int_vec_mul_bytecode_static + simple_int_vec_mul_bytecode_static.bin + BYPRODUCTS + simple_int_vec_mul_bytecode_static.bin + COMMENT + "Objcopy the binary file" +) + +add_custom_command( + TARGET + samples_simple_vec_mul_simple_int_vec_mul_emitc_static + POST_BUILD + COMMAND + ${CMAKE_OBJCOPY} -g -O binary + simple_int_vec_mul_emitc_static + simple_int_vec_mul_emitc_static.bin + BYPRODUCTS + simple_int_vec_mul_emitc_static.bin + COMMENT + "Objcopy the binary file" +) + +endif()
diff --git a/samples/simple_vec_mul/simple_int_static_bin_test.run b/samples/simple_vec_mul/simple_int_static_bin_test.run new file mode 100644 index 0000000..92c2f3f --- /dev/null +++ b/samples/simple_vec_mul/simple_int_static_bin_test.run
@@ -0,0 +1,3 @@ +// REQUIRES: kelvin_hw +// RUN: ${TEST_RUNNER_CMD} %S/simple_int_vec_mul_bytecode_static.bin +// RUN: ${TEST_RUNNER_CMD} %S/simple_int_vec_mul_emitc_static.bin
diff --git a/samples/simple_vec_mul/simple_test.run b/samples/simple_vec_mul/simple_test.run index 07c6d94..4421333 100644 --- a/samples/simple_vec_mul/simple_test.run +++ b/samples/simple_vec_mul/simple_test.run
@@ -1,3 +1,4 @@ +// UNSUPPORTED: kelvin_hw // RUN: ${TEST_RUNNER_CMD} %S/simple_int_vec_mul_bytecode_static // RUN: ${TEST_RUNNER_CMD} %S/simple_int_vec_mul_emitc_static // RUN: ${TEST_RUNNER_CMD} %S/simple_int_vec_mul_bytecode_vmvx