5#ifndef OPENTITAN_SW_DEVICE_LIB_TESTING_ALERT_HANDLER_TESTUTILS_H_
6#define OPENTITAN_SW_DEVICE_LIB_TESTING_ALERT_HANDLER_TESTUTILS_H_
10#include "sw/device/lib/base/status.h"
15#include "hw/top/alert_handler_regs.h"
18 kAlertHandlerTestutilsDefaultPingTimeout = 256,
21typedef enum alert_handler_class_state {
30} alert_handler_class_state_t;
40 kAlertHandlerClassEscStateBits = 3,
41 kAlertHandlerClassEscCntBits = ALERT_HANDLER_PARAM_ESC_CNT_DW,
42 kAlertHandlerClassAccumCntBits = ALERT_HANDLER_PARAM_ACCU_CNT_DW,
43 kAlertHandlerCrashdumpBits =
44 ALERT_HANDLER_PARAM_N_CLASSES *
45 (kAlertHandlerClassEscStateBits + kAlertHandlerClassEscCntBits +
46 kAlertHandlerClassAccumCntBits) +
47 ALERT_HANDLER_PARAM_N_LOC_ALERT + ALERT_HANDLER_PARAM_N_ALERTS,
48 kAlertHandlerCrashdumpWords = (kAlertHandlerCrashdumpBits + 31) / 32,
51 "Alert crash dump does not fit the rstmgr alert info buffer");
57 bool alert_cause[ALERT_HANDLER_PARAM_N_ALERTS];
58 uint8_t loc_alert_cause;
59 uint16_t class_accum_cnt[ALERT_HANDLER_PARAM_N_CLASSES];
60 uint32_t class_esc_cnt[ALERT_HANDLER_PARAM_N_CLASSES];
61 alert_handler_class_state_t class_esc_state[ALERT_HANDLER_PARAM_N_CLASSES];
62} alert_handler_testutils_info_t;
63static_assert(ALERT_HANDLER_PARAM_N_LOC_ALERT <= 8 &&
64 kAlertHandlerClassAccumCntBits <= 16 &&
65 kAlertHandlerClassEscCntBits <= 32,
66 "Crash dump fields do not fit alert_handler_testutils_info_t");
78status_t alert_handler_testutils_info_parse(
80 alert_handler_testutils_info_t *info);
85void alert_handler_testutils_info_dump(
86 const alert_handler_testutils_info_t *info);
103status_t alert_handler_testutils_configure_all(
115status_t alert_handler_testutils_get_cycles_from_us(uint64_t microseconds,
134uint32_t alert_handler_testutils_cycle_rescaling_factor(
void);
148status_t alert_handler_testutils_status_log(
164status_t alert_handler_testutils_dump_log(
const dif_rstmgr_t *rstmgr);
178status_t alert_handler_testutils_dump_enable(