Merge "Use simple_sec for SMC tests"
diff --git a/sw/device/tests/BUILD b/sw/device/tests/BUILD
index 1f7375c..e8e813d 100644
--- a/sw/device/tests/BUILD
+++ b/sw/device/tests/BUILD
@@ -8,6 +8,10 @@
package(default_visibility = ["//visibility:public"])
+sec_fpga_device = {
+ "fpga_nexus": [NEXUS_CORE_TARGETS.get("secure_core")],
+}
+
# TODO: We could put all matcha related tests into a separate directory.
sec_flash_binary(
name = "smc_ctrl_test",
@@ -41,13 +45,18 @@
sec_flash_binary(
name = "i2s_rx_test",
srcs = [
- "i2s_rx_test.c",
+ "simple_sec.c",
"//sw/device/tests/smc:smc_i2s_rx_test_fpga_nexus_bin_c.h",
],
copts = [
"-nostdlib",
"-ffreestanding",
],
+ defines = [
+ "I2S_RX_TEST",
+ "HAS_SMC_BIN",
+ ],
+ per_device_deps = sec_fpga_device,
deps = [
":test_lib",
"//sw/device/lib/dif:i2s",
@@ -60,13 +69,18 @@
sec_flash_binary(
name = "i2s_tx_test",
srcs = [
- "i2s_tx_test.c",
+ "simple_sec.c",
"//sw/device/tests/smc:smc_i2s_tx_test_fpga_nexus_bin_c.h",
],
copts = [
"-nostdlib",
"-ffreestanding",
],
+ defines = [
+ "I2S_TX_TEST",
+ "HAS_SMC_BIN",
+ ],
+ per_device_deps = sec_fpga_device,
deps = [
":test_lib",
"//sw/device/lib/dif:i2s",
@@ -169,13 +183,18 @@
sec_flash_binary(
name = "supervisor_mode_test",
srcs = [
- "supervisor_mode_test.c",
+ "simple_sec.c",
"//sw/device/tests/smc:smc_supervisor_mode_test_fpga_nexus_bin_c.h",
],
copts = [
"-nostdlib",
"-ffreestanding",
],
+ defines = [
+ "SUPERVISOR_MODE_TEST",
+ "HAS_SMC_BIN",
+ ],
+ per_device_deps = sec_fpga_device,
deps = [
":test_lib",
"//sw/device/lib/dif:smc_ctrl",
@@ -185,13 +204,18 @@
sec_flash_binary(
name = "virtual_memory_test",
srcs = [
- "virtual_memory_test.c",
+ "simple_sec.c",
"//sw/device/tests/smc:smc_virtual_memory_test_fpga_nexus_bin_c.h",
],
copts = [
"-nostdlib",
"-ffreestanding",
],
+ defines = [
+ "VIRTUAL_MEMORY_TEST",
+ "HAS_SMC_BIN",
+ ],
+ per_device_deps = sec_fpga_device,
deps = [
":test_lib",
"//sw/device/lib/dif:smc_ctrl",
@@ -212,6 +236,7 @@
"HAS_SMC_BIN",
"PAGE_BOUNDARY_TEST",
],
+ per_device_deps = sec_fpga_device,
deps = [
":test_lib",
"//sw/device/lib/dif:smc_ctrl",
@@ -232,6 +257,7 @@
"HAS_SMC_BIN",
"LSU_PAGE_BOUNDARY_TEST",
],
+ per_device_deps = sec_fpga_device,
deps = [
":test_lib",
"//sw/device/lib/dif:smc_ctrl",
@@ -252,6 +278,7 @@
"HAS_SMC_BIN",
"INTERRUPT_BOUNDARY_TEST",
],
+ per_device_deps = sec_fpga_device,
deps = [
":test_lib",
"//sw/device/lib/dif:smc_ctrl",
@@ -272,6 +299,7 @@
"HAS_SMC_BIN",
"LSU_INTERRUPT_BOUNDARY_TEST",
],
+ per_device_deps = sec_fpga_device,
deps = [
":test_lib",
"//sw/device/lib/dif:smc_ctrl",
@@ -298,16 +326,18 @@
sec_flash_binary(
name = "cam_i2c_test",
srcs = [
- "cam_i2c_test.c",
+ "simple_sec.c",
"//sw/device/tests/smc:smc_cam_i2c_test_fpga_nexus_bin_c.h",
],
copts = [
"-nostdlib",
"-ffreestanding",
],
- per_device_deps = {
- "fpga_nexus": [NEXUS_CORE_TARGETS.get("secure_core")],
- },
+ defines = [
+ "CAM_I2C_TEST",
+ "HAS_SMC_BIN",
+ ],
+ per_device_deps = sec_fpga_device,
deps = [
":test_lib",
"//sw/device/lib/dif:smc_ctrl",
@@ -539,14 +569,14 @@
matcha_verilator_test(
name = "verilator_i2s_rx_test",
timeout = "eternal",
- sec_flash_binary = ":i2s_rx_test",
+ sec_flash_binary = ":simple_sec",
smc_flash_binary = "//sw/device/tests/smc:smc_i2s_rx_test",
)
matcha_verilator_test(
name = "verilator_i2s_tx_test",
timeout = "eternal",
- sec_flash_binary = ":i2s_tx_test",
+ sec_flash_binary = ":simple_sec",
smc_flash_binary = "//sw/device/tests/smc:smc_i2s_tx_test",
)
diff --git a/sw/device/tests/cam_i2c_test.c b/sw/device/tests/cam_i2c_test.c
deleted file mode 100644
index 2628e94..0000000
--- a/sw/device/tests/cam_i2c_test.c
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2023 Google LLC.
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-
-#include "hw/top_matcha/sw/autogen/top_matcha.h"
-#include "sw/device/lib/arch/device.h"
-#include "sw/device/lib/dif/dif_smc_ctrl.h"
-#include "sw/device/lib/dif/dif_uart.h"
-#include "sw/device/lib/runtime/print.h"
-#include "sw/device/lib/testing/test_framework/check.h"
-#include "sw/device/lib/testing/test_framework/ottf_test_config.h"
-#include "sw/device/lib/testing/test_framework/test_util.h"
-#include "sw/device/tests/smc/smc_cam_i2c_test_fpga_nexus_bin_c.h"
-
-OTTF_DEFINE_TEST_CONFIG();
-
-static dif_smc_ctrl_t smc_ctrl;
-static dif_uart_t uart;
-
-void _ottf_main(void) {
- // Initialize the UART to enable logging for non-DV simulation platforms.
- if (kDeviceType != kDeviceSimDV) {
- init_uart(TOP_MATCHA_UART0_BASE_ADDR, &uart);
- }
- LOG_INFO("Start cam_i2c_test");
- test_status_set(kTestStatusInTest);
- // Copy embedded binary to SMC RAM.
- memcpy((void *)TOP_MATCHA_RAM_SMC_BASE_ADDR, smc_bin, smc_bin_len);
- CHECK_DIF_OK(dif_smc_ctrl_init(
- mmio_region_from_addr(TOP_MATCHA_SMC_CTRL_BASE_ADDR), &smc_ctrl));
- CHECK_DIF_OK(dif_smc_ctrl_set_en(&smc_ctrl));
- while (true) {
- asm volatile("wfi");
- }
-}
diff --git a/sw/device/tests/i2s_rx_test.c b/sw/device/tests/i2s_rx_test.c
deleted file mode 100644
index 26b6eb2..0000000
--- a/sw/device/tests/i2s_rx_test.c
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-
-#include "hw/top_matcha/sw/autogen/top_matcha.h"
-#include "sw/device/lib/arch/device.h"
-#include "sw/device/lib/dif/dif_smc_ctrl.h"
-#include "sw/device/lib/dif/dif_uart.h"
-#include "sw/device/lib/runtime/hart.h"
-#include "sw/device/lib/runtime/log.h"
-#include "sw/device/lib/runtime/print.h"
-#include "sw/device/lib/testing/test_framework/check.h"
-#include "sw/device/lib/testing/test_framework/ottf_test_config.h"
-#include "sw/device/lib/testing/test_framework/status.h"
-#include "sw/device/lib/testing/test_framework/test_util.h"
-#include "sw/device/tests/smc/smc_i2s_rx_test_fpga_nexus_bin_c.h"
-
-OTTF_DEFINE_TEST_CONFIG();
-
-static dif_uart_t uart;
-static dif_smc_ctrl_t smc_ctrl;
-
-void _ottf_main(void) {
- // Initialize the UART to enable logging for non-DV simulation platforms.
- if (kDeviceType != kDeviceSimDV) {
- init_uart(TOP_MATCHA_UART0_BASE_ADDR, &uart);
- }
-
- // Start testing
- test_status_set(kTestStatusInTest);
-
- // Copy embedded binary to SMC RAM.
- if (kDeviceType == kDeviceFpgaNexus) {
- memcpy((void *)TOP_MATCHA_RAM_SMC_BASE_ADDR, smc_bin, smc_bin_len);
- }
-
- CHECK_DIF_OK(dif_smc_ctrl_init(
- mmio_region_from_addr(TOP_MATCHA_SMC_CTRL_BASE_ADDR), &smc_ctrl));
- CHECK_DIF_OK(dif_smc_ctrl_set_en(&smc_ctrl));
-
- while (true) {
- asm volatile("wfi");
- }
-}
diff --git a/sw/device/tests/i2s_tx_test.c b/sw/device/tests/i2s_tx_test.c
deleted file mode 100644
index b60a4eb..0000000
--- a/sw/device/tests/i2s_tx_test.c
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-
-#include "hw/top_matcha/sw/autogen/top_matcha.h"
-#include "sw/device/lib/arch/device.h"
-#include "sw/device/lib/dif/dif_smc_ctrl.h"
-#include "sw/device/lib/dif/dif_uart.h"
-#include "sw/device/lib/runtime/hart.h"
-#include "sw/device/lib/runtime/log.h"
-#include "sw/device/lib/runtime/print.h"
-#include "sw/device/lib/testing/test_framework/check.h"
-#include "sw/device/lib/testing/test_framework/ottf_test_config.h"
-#include "sw/device/lib/testing/test_framework/status.h"
-#include "sw/device/lib/testing/test_framework/test_util.h"
-#include "sw/device/tests/smc/smc_i2s_tx_test_fpga_nexus_bin_c.h"
-
-OTTF_DEFINE_TEST_CONFIG();
-
-static dif_uart_t uart;
-static dif_smc_ctrl_t smc_ctrl;
-
-void _ottf_main(void) {
- // Initialize the UART to enable logging for non-DV simulation platforms.
- if (kDeviceType != kDeviceSimDV) {
- init_uart(TOP_MATCHA_UART0_BASE_ADDR, &uart);
- }
-
- // Start testing
- test_status_set(kTestStatusInTest);
-
- // Copy embedded binary to SMC RAM.
- if (kDeviceType == kDeviceFpgaNexus) {
- memcpy((void *)TOP_MATCHA_RAM_SMC_BASE_ADDR, smc_bin, smc_bin_len);
- }
-
- CHECK_DIF_OK(dif_smc_ctrl_init(
- mmio_region_from_addr(TOP_MATCHA_SMC_CTRL_BASE_ADDR), &smc_ctrl));
- CHECK_DIF_OK(dif_smc_ctrl_set_en(&smc_ctrl));
-
- while (true) {
- asm volatile("wfi");
- }
-}
diff --git a/sw/device/tests/simple_sec.c b/sw/device/tests/simple_sec.c
index 41d7dd1..c39cab4 100644
--- a/sw/device/tests/simple_sec.c
+++ b/sw/device/tests/simple_sec.c
@@ -8,9 +8,11 @@
#include "hw/top_matcha/sw/autogen/top_matcha.h"
#include "sw/device/lib/arch/device.h"
#include "sw/device/lib/dif/dif_smc_ctrl.h"
+#include "sw/device/lib/dif/dif_uart.h"
#include "sw/device/lib/runtime/hart.h"
#include "sw/device/lib/testing/test_framework/check.h"
#include "sw/device/lib/testing/test_framework/ottf_test_config.h"
+#include "sw/device/lib/testing/test_framework/test_util.h"
#if defined(PAGE_BOUNDARY_TEST)
#include "sw/device/tests/smc/smc_page_boundary_test_fpga_nexus_bin_c.h"
@@ -20,13 +22,28 @@
#include "sw/device/tests/smc/smc_lsu_interrupt_boundary_test_fpga_nexus_bin_c.h"
#elif defined(LSU_PAGE_BOUNDARY_TEST)
#include "sw/device/tests/smc/smc_lsu_page_boundary_test_fpga_nexus_bin_c.h"
+#elif defined(CAM_I2C_TEST)
+#include "sw/device/tests/smc/smc_cam_i2c_test_fpga_nexus_bin_c.h"
+#elif defined(I2S_RX_TEST)
+#include "sw/device/tests/smc/smc_i2s_rx_test_fpga_nexus_bin_c.h"
+#elif defined(I2S_TX_TEST)
+#include "sw/device/tests/smc/smc_i2s_tx_test_fpga_nexus_bin_c.h"
+#elif defined(SUPERVISOR_MODE_TEST)
+#include "sw/device/tests/smc/smc_supervisor_mode_test_fpga_nexus_bin_c.h"
+#elif defined(VIRTUAL_MEMORY_TEST)
+#include "sw/device/tests/smc/smc_virtual_memory_test_fpga_nexus_bin_c.h"
#endif
OTTF_DEFINE_TEST_CONFIG();
static dif_smc_ctrl_t smc_ctrl;
+static dif_uart_t uart;
void _ottf_main(void) {
+ // Initialize the UART to enable logging for non-DV simulation platforms.
+ if (kDeviceType != kDeviceSimDV) {
+ init_uart(TOP_MATCHA_UART0_BASE_ADDR, &uart);
+ }
#if defined(HAS_SMC_BIN)
if (kDeviceType == kDeviceFpgaNexus) {
memcpy((void*)TOP_MATCHA_RAM_SMC_BASE_ADDR, smc_bin, smc_bin_len);
@@ -39,5 +56,7 @@
// Note: the SMC must end the simulation through testing or otherwise, as the
// secure core indefinitely sleeps.
- asm volatile("wfi");
+ while (true) {
+ asm volatile("wfi");
+ }
}
diff --git a/sw/device/tests/supervisor_mode_test.c b/sw/device/tests/supervisor_mode_test.c
deleted file mode 100644
index 0f6632d..0000000
--- a/sw/device/tests/supervisor_mode_test.c
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2023 Google LLC.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-
-#include "hw/top_matcha/sw/autogen/top_matcha.h"
-#include "sw/device/lib/arch/device.h"
-#include "sw/device/lib/dif/dif_smc_ctrl.h"
-#include "sw/device/lib/dif/dif_uart.h"
-#include "sw/device/lib/runtime/print.h"
-#include "sw/device/lib/testing/test_framework/check.h"
-#include "sw/device/lib/testing/test_framework/ottf_test_config.h"
-#include "sw/device/lib/testing/test_framework/test_util.h"
-#include "sw/device/tests/smc/smc_supervisor_mode_test_fpga_nexus_bin_c.h"
-
-OTTF_DEFINE_TEST_CONFIG();
-
-static dif_smc_ctrl_t smc_ctrl;
-static dif_uart_t uart;
-
-void _ottf_main(void) {
- // Initialize the UART to enable logging for non-DV simulation platforms.
- if (kDeviceType != kDeviceSimDV) {
- init_uart(TOP_MATCHA_UART0_BASE_ADDR, &uart);
- }
- LOG_INFO("Start supervisor_mode_test");
- test_status_set(kTestStatusInTest);
- // Copy embedded binary to SMC RAM.
- if (kDeviceType == kDeviceFpgaNexus) {
- memcpy((void *)TOP_MATCHA_RAM_SMC_BASE_ADDR, smc_bin, smc_bin_len);
- }
- CHECK_DIF_OK(dif_smc_ctrl_init(
- mmio_region_from_addr(TOP_MATCHA_SMC_CTRL_BASE_ADDR), &smc_ctrl));
- CHECK_DIF_OK(dif_smc_ctrl_set_en(&smc_ctrl));
- while (true) {
- asm volatile("wfi");
- }
-}
diff --git a/sw/device/tests/virtual_memory_test.c b/sw/device/tests/virtual_memory_test.c
deleted file mode 100644
index da99288..0000000
--- a/sw/device/tests/virtual_memory_test.c
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2023 Google LLC.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-
-#include "hw/top_matcha/sw/autogen/top_matcha.h"
-#include "sw/device/lib/arch/device.h"
-#include "sw/device/lib/dif/dif_smc_ctrl.h"
-#include "sw/device/lib/dif/dif_uart.h"
-#include "sw/device/lib/runtime/print.h"
-#include "sw/device/lib/testing/test_framework/check.h"
-#include "sw/device/lib/testing/test_framework/ottf_test_config.h"
-#include "sw/device/lib/testing/test_framework/test_util.h"
-#include "sw/device/tests/smc/smc_virtual_memory_test_fpga_nexus_bin_c.h"
-
-OTTF_DEFINE_TEST_CONFIG();
-
-static dif_smc_ctrl_t smc_ctrl;
-static dif_uart_t uart;
-
-void _ottf_main(void) {
- // Initialize the UART to enable logging for non-DV simulation platforms.
- if (kDeviceType != kDeviceSimDV) {
- init_uart(TOP_MATCHA_UART0_BASE_ADDR, &uart);
- }
- LOG_INFO("Start virtual_memory_test");
- test_status_set(kTestStatusInTest);
- // Copy embedded binary to SMC RAM.
- if (kDeviceType == kDeviceFpgaNexus) {
- memcpy((void *)TOP_MATCHA_RAM_SMC_BASE_ADDR, smc_bin, smc_bin_len);
- }
- CHECK_DIF_OK(dif_smc_ctrl_init(
- mmio_region_from_addr(TOP_MATCHA_SMC_CTRL_BASE_ADDR), &smc_ctrl));
- CHECK_DIF_OK(dif_smc_ctrl_set_en(&smc_ctrl));
- while (true) {
- asm volatile("wfi");
- }
-}