5 #ifndef OPENTITAN_SW_DEVICE_LIB_TESTING_TEST_FRAMEWORK_OTTF_MAIN_H_
6 #define OPENTITAN_SW_DEVICE_LIB_TESTING_TEST_FRAMEWORK_OTTF_MAIN_H_
10 #include "sw/device/lib/base/status.h"
14 #include "sw/device/lib/testing/test_framework/FreeRTOSConfig.h"
15 #include "sw/device/lib/testing/test_framework/check.h"
16 #include "sw/device/lib/testing/test_framework/ottf_test_config.h"
39 kOttfFreeRtosMinStackSize = configMINIMAL_STACK_SIZE,
81 configSTACK_DEPTH_TYPE task_stack_depth,
82 uint32_t task_priority);
113 #define EXECUTE_TEST(result_, test_function_, ...) \
115 LOG_INFO("Starting test " #test_function_ "..."); \
116 uint64_t t_start_ = ibex_mcycle_read(); \
117 status_t local_status = INTO_STATUS(test_function_(__VA_ARGS__)); \
118 uint64_t cycles_ = ibex_mcycle_read() - t_start_; \
119 CHECK(kClockFreqCpuHz <= UINT32_MAX, ""); \
120 uint32_t clock_mhz = (uint32_t)kClockFreqCpuHz / 1000000; \
121 if (status_ok(local_status)) { \
122 if (cycles_ <= UINT32_MAX) { \
123 uint32_t micros = (uint32_t)cycles_ / clock_mhz; \
124 LOG_INFO("Successfully finished test " #test_function_ \
125 " in %u cycles or %u us @ %u MHz.", \
126 (uint32_t)cycles_, micros, clock_mhz); \
128 uint32_t cycles_lower_ = (uint32_t)(cycles_ & UINT32_MAX); \
129 uint32_t cycles_upper_ = (uint32_t)(cycles_ >> 32); \
130 LOG_INFO("Successfully finished test " #test_function_ \
131 " in 0x%08x%08x cycles.", \
132 cycles_upper_, cycles_lower_); \
135 result_ = local_status; \
136 LOG_ERROR("Finished test " #test_function_ ": %r.", local_status); \
145 #define OTTF_OVERRIDE_STATUS_REPORT_LIST(list_size) \
146 const size_t kStatusReportListSize = list_size; \
147 status_t status_report_list[list_size];