blob: 7975a9c6dcd4c6b52fbc3d3ae9647f25d37584b1 [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
#ifndef OPENTITAN_SW_DEVICE_LIB_TESTING_RSTMGR_TESTUTILS_H_
#define OPENTITAN_SW_DEVICE_LIB_TESTING_RSTMGR_TESTUTILS_H_
#include <stdint.h>
#include "sw/device/lib/dif/dif_rstmgr.h"
/**
* Determines if the reset_info matches info.
*
* @param rstmgr A reset manager handle.
* @param info A bit mask of reset reasons.
*
* @return True if the reset_info CSR matches info.
*/
bool rstmgr_testutils_is_reset_info(const dif_rstmgr_t *rstmgr,
dif_rstmgr_reset_info_bitfield_t info);
/**
* Determines if the reset info contains any of the reasons in `info`.
*
* @param rstmgr A reset manager handle.
* @param info A bit mask of reset reasons.
*
* @return True if the reset info contains any of the reasons in `info`.
*/
bool rstmgr_testutils_reset_info_any(const dif_rstmgr_t *rstmgr,
dif_rstmgr_reset_info_bitfield_t info);
/**
* Compares the given alert dump against the device's.
*
* If the dump array is null or its size is zero this check succeeds. It is
* possible to compare less words than the device captures, but it is an error
* to try to compare more.
*
* @param rstmgr A reset manager handle.
* @param expected_alert_dump An array holding the expected alert dump.
* @param dump_size The size of the expected_alert_dump array.
*/
void rstmgr_testutils_compare_alert_info(
const dif_rstmgr_t *rstmgr,
dif_rstmgr_alert_info_dump_segment_t *expected_alert_dump,
size_t dump_size);
/**
* Compares the given cpu dump against the device's.
*
* If the dump array is null or its size is zero this check succeeds. It is
* possible to compare less words than the device captures, but it is an error
* to try to compare more.
*
* @param rstmgr A reset manager handle.
* @param expected_cpu_dump An array holding the expected cpu dump.
* @param dump_size The size of the expected_cpu_dump array.
*/
void rstmgr_testutils_compare_cpu_info(
const dif_rstmgr_t *rstmgr,
dif_rstmgr_cpu_info_dump_segment_t *expected_cpu_dump, size_t dump_size);
/**
* Prepares the rstmgr for a reset scenario.
*
* @param rstmgr A reset manager handle.
*/
void rstmgr_testutils_pre_reset(const dif_rstmgr_t *rstmgr);
/**
* Checks state after a reset.
*
* This will cause a failure if any of the checks fail. If either of the dump
* arrays is null or its size is zero the corresponding comparison will be
* skipped.
*
* @param rstmgr A reset manager handle.
* @param expected_reset_info The expected contents of the reset_info CSR.
* @param expected_alert_dump An array with the expected contents of the
* alert_info CSR.
* @param alert_dump_size The size of the expected_alert_dump array.
* @param expected_cpu_dump An array with the expected contents of the cpu_info
* CSR.
* @param cpu_dump_size The size of the expected_cpu_dump array.
*/
void rstmgr_testutils_post_reset(
const dif_rstmgr_t *rstmgr,
dif_rstmgr_reset_info_bitfield_t expected_reset_info,
dif_rstmgr_alert_info_dump_segment_t *expected_alert_dump,
size_t alert_dump_size,
dif_rstmgr_cpu_info_dump_segment_t *expected_cpu_dump,
size_t cpu_dump_size);
/**
* Gets the reason for a reset in retention SRAM.
*
* @returns reset reason
*/
dif_rstmgr_reset_info_bitfield_t rstmgr_testutils_reason_get(void);
/**
* Clears the reset information in Retention SRAM
*/
void rstmgr_testutils_reason_clear(void);
#endif // OPENTITAN_SW_DEVICE_LIB_TESTING_RSTMGR_TESTUTILS_H_