9 #include "sw/device/lib/testing/aon_timer_testutils.h"
10 #include "sw/device/lib/testing/clkmgr_testutils.h"
11 #include "sw/device/lib/testing/pwrmgr_testutils.h"
12 #include "sw/device/lib/testing/sensor_ctrl_testutils.h"
13 #include "sw/device/lib/testing/test_framework/check.h"
18 OTTF_DEFINE_TEST_CONFIG();
47 kMeasurementsPerRound = 100,
50 static const dt_pwrmgr_t kPwrmgrDt = 0;
51 static_assert(kDtPwrmgrCount == 1,
"this test expects a pwrmgr");
52 static const dt_clkmgr_t kClkmgrDt = 0;
53 static_assert(kDtClkmgrCount == 1,
"this test expects a clkmgr");
55 static dif_clkmgr_t clkmgr;
56 static dif_pwrmgr_t pwrmgr;
60 static void test_clock_frequencies_with_jitter_enabled(uint32_t delay_micros) {
61 LOG_INFO(
"Testing frequencies with jitter enabled");
62 CHECK_STATUS_OK(clkmgr_testutils_enable_clock_counts_with_expected_thresholds(
67 CHECK_STATUS_OK(clkmgr_testutils_check_measurement_counts(&clkmgr));
68 CHECK_STATUS_OK(clkmgr_testutils_disable_clock_counts(&clkmgr));
72 clkmgr_testutils_enable_clock_counts_with_expected_thresholds(
73 &clkmgr,
false,
false,
78 CHECK(err_codes != 0);
80 CHECK_STATUS_OK(clkmgr_testutils_disable_clock_counts(&clkmgr));
83 LOG_INFO(
"Testing with jitter enabled but no-jitter thresholds %s",
84 "is not viable for FPGAs");
88 static void test_clock_frequencies_with_jitter_disabled(uint32_t delay_micros) {
89 LOG_INFO(
"Testing frequencies with jitter disabled");
90 CHECK_STATUS_OK(clkmgr_testutils_enable_clock_counts_with_expected_thresholds(
91 &clkmgr,
false,
false,
95 CHECK_STATUS_OK(clkmgr_testutils_check_measurement_counts(&clkmgr));
96 CHECK_STATUS_OK(clkmgr_testutils_disable_clock_counts(&clkmgr));
98 CHECK_STATUS_OK(clkmgr_testutils_enable_clock_counts_with_expected_thresholds(
102 LOG_INFO(
"Checking measurement counts");
103 CHECK_STATUS_OK(clkmgr_testutils_check_measurement_counts(&clkmgr));
107 dif_sensor_ctrl_t sensor_ctrl;
109 uint32_t delay_micros = 0;
110 CHECK_STATUS_OK(aon_timer_testutils_get_us_from_aon_cycles(
111 kMeasurementsPerRound, &delay_micros));
113 CHECK_DIF_OK(dif_clkmgr_init_from_dt(kClkmgrDt, &clkmgr));
114 CHECK_DIF_OK(dif_sensor_ctrl_init(
117 CHECK_DIF_OK(dif_pwrmgr_init_from_dt(kPwrmgrDt, &pwrmgr));
119 LOG_INFO(
"TEST: wait for ast init");
120 IBEX_SPIN_FOR(sensor_ctrl_ast_init_done(&sensor_ctrl), 1000);
123 CHECK(UNWRAP(pwrmgr_testutils_is_wakeup_reason(&pwrmgr, 0)) ==
true);
131 test_clock_frequencies_with_jitter_enabled(delay_micros);
133 test_clock_frequencies_with_jitter_disabled(delay_micros);
137 test_clock_frequencies_with_jitter_enabled(delay_micros);
139 test_clock_frequencies_with_jitter_disabled(delay_micros);