Add SystemC test bazel targets
Test .bin artifacts with SystemC core_sim binary
Change-Id: I54ef143c84f8c81576cc76f6f587b78937f190db
diff --git a/build_tools/BUILD b/build_tools/BUILD
index d53f03c..bdc0ccd 100644
--- a/build_tools/BUILD
+++ b/build_tools/BUILD
@@ -1,5 +1,6 @@
package(default_visibility = ["//visibility:public"])
exports_files([
+ "core_sim_test_runner.sh",
"test_runner.sh",
])
diff --git a/build_tools/bazel/kelvin.bzl b/build_tools/bazel/kelvin.bzl
index e6fb102..bdbe612 100644
--- a/build_tools/bazel/kelvin.bzl
+++ b/build_tools/bazel/kelvin.bzl
@@ -192,15 +192,20 @@
def kelvin_test(
name,
- size = "small",
+ hw_test_size = "medium",
+ hw_test_tags = [],
+ iss_test_size = "small",
**kwargs):
"""A sh_test wrapper for kelvin binaries
- A wrapper to build kelvin_binary and test it against build_tools/test_runner.sh
+ A wrapper to build kelvin_binary and test it against build_tools/*test_runner.sh
+ on both ISS and HW SystemC simulations.
Args:
name: The name of this rule.
- size: Test size. Default to small.
+ iss_test_size: ISS test size. Default to small.
+ hw_test_size: Tests size for SystemC test, default to medium.
+ hw_test_tags: Test tags passed to System test.
**kwargs: Agruments that will be forwarded to kelvin_binary
"""
@@ -210,9 +215,10 @@
**kwargs
)
+ iss_test = "{}_iss".format(name)
native.sh_test(
- name = name,
- size = size,
+ name = iss_test,
+ size = iss_test_size,
srcs = [
"//build_tools:test_runner.sh",
],
@@ -224,6 +230,28 @@
],
)
+ hw_test = "{}_hw".format(name)
+ native.sh_test(
+ name = hw_test,
+ size = hw_test_size,
+ srcs = ["//build_tools:core_sim_test_runner.sh"],
+ args = [
+ "$(location %s.bin)" % kelvin_elf,
+ ],
+ data = [
+ "{}.bin".format(kelvin_elf),
+ ],
+ tags = hw_test_tags,
+ )
+
+ native.test_suite(
+ name = name,
+ tests = [
+ iss_test,
+ hw_test,
+ ],
+ )
+
# From @tflite-micro//tensorflow/lite/micro/build_def.bzl, and paths
# modified to point to the external repo.
def generate_cc_arrays(name, src, out, visibility = None, tags = []):
diff --git a/build_tools/core_sim_test_runner.sh b/build_tools/core_sim_test_runner.sh
new file mode 100755
index 0000000..946d578
--- /dev/null
+++ b/build_tools/core_sim_test_runner.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+# Test runner for SystemC simulator. Note the input should be the .bin file.
+
+function print_usage {
+ echo "Usage: core_sim_test_runner.sh <bin location> [extra flags]"
+}
+
+if [[ $1 == "--help" ]]; then
+ print_usage
+fi
+
+if [[ -z ${ROOTDIR} ]]; then
+ echo "Please run \"source build/setup.sh\" first"
+ exit 1
+fi
+
+CORE_SIM="${ROOTDIR}/out/kelvin/hw/bazel_out/core_sim"
+
+if [[ ! -f ${CORE_SIM} ]]; then
+ echo "Please run \"m kelvin_hw_sim\" first"
+ exit 1
+fi
+
+if (( $# != 1 )); then
+ print_usage
+ exit 1
+fi
+
+BIN_FILE=$(realpath $1)
+shift 1
+SIM_OUT=$(${CORE_SIM} "${BIN_FILE}" $@)
+RESULT=$?
+echo "${SIM_OUT}"
+
+exit ${RESULT}
diff --git a/tests/kelvin_isa/BUILD b/tests/kelvin_isa/BUILD
index 01f88d7..2be5c10 100644
--- a/tests/kelvin_isa/BUILD
+++ b/tests/kelvin_isa/BUILD
@@ -38,6 +38,7 @@
srcs = [
"vpadd.cc",
],
+ hw_test_size = "small",
deps = [
":kelvin_test",
],
diff --git a/tests/riscv-tests/BUILD b/tests/riscv-tests/BUILD
index 2b8f273..aa188bd 100644
--- a/tests/riscv-tests/BUILD
+++ b/tests/riscv-tests/BUILD
@@ -74,6 +74,7 @@
defines = [
"RVTEST_RV64U=RVTEST_RV32U",
],
+ hw_test_size = "small",
is_riscv_test = True,
deps = [
":riscv_tests_base",
@@ -101,6 +102,7 @@
"-Iexternal/riscv-tests/isa/macros/scalar",
"-Wno-variadic-macros",
],
+ hw_test_size = "small",
is_riscv_test = True,
deps = [
":riscv_tests_base",
@@ -112,6 +114,7 @@
srcs = [
"branch_modulo_test.cc",
],
+ hw_test_size = "small",
deps = [
"//crt:crt_header",
],
@@ -122,6 +125,7 @@
srcs = [
"branch_div_test.cc",
],
+ hw_test_size = "small",
deps = [
"//crt:crt_header",
],
diff --git a/tests/tflm/BUILD b/tests/tflm/BUILD
index 05c196b..aeb826e 100644
--- a/tests/tflm/BUILD
+++ b/tests/tflm/BUILD
@@ -7,6 +7,8 @@
srcs = [
"@tflite-micro//tensorflow/lite/micro/kernels:add_test.cc",
],
+ # TODO(b/295921340): Re-enable HW test.
+ hw_test_tags = ["broken"],
deps = [
"//crt:crt_header",
"@tflite-micro//tensorflow/lite/c:common",
@@ -39,6 +41,7 @@
srcs = [
"@tflite-micro//tensorflow/lite/micro/kernels:reshape_test.cc",
],
+ hw_test_size = "large",
deps = [
"//crt:crt_header",
"@tflite-micro//tensorflow/lite/c:common",