blob: dee339674ba75b2ca9689a39fb004f6d070310a8 [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_AON_TIMER_TESTUTILS_H_
#define OPENTITAN_SW_DEVICE_LIB_TESTING_AON_TIMER_TESTUTILS_H_
#include <stdint.h>
#include "sw/device/lib/dif/dif_aon_timer.h"
/**
* Returns the number of AON cycles corresponding to the given microseconds.
*/
uint32_t aon_timer_testutils_get_aon_cycles_from_us(uint64_t microseconds);
/**
* Returns the number of microseconds corresponding to the given AON cycles.
*/
uint32_t aon_timer_testutils_get_us_from_aon_cycles(uint64_t cycles);
/**
* Configure wakeup counter for a number of AON clock cycles.
* @param cycles The number of AON clock cycles.
*/
void aon_timer_testutils_wakeup_config(const dif_aon_timer_t *aon_timer,
uint32_t cycles);
/**
* Configure watchdog counter in number of AON clock cycles.
*
* The watchdog counter is set without locking it, and configured so it doesn't
* pause for low power.
* @param bark_cycles The number of AON clock cycles till barking.
* @param bite_cycles The number of AON clock cycles till biting.
* @param pause_in_sleep Don't increment while sleeping.
*/
void aon_timer_testutils_watchdog_config(const dif_aon_timer_t *aon_timer,
uint32_t bark_cycles,
uint32_t bite_cycles,
bool pause_in_sleep);
/**
* Turn off the AON timer peripheral.
*
* At the end of the simulation, stop the wakeup and watchdog timers so that
* the design stops generating events that may affect the simulation from
* terminating cleanly. The wakeup and watchdog timer controls are read back
* to ensure the written value successfully crossed the AON clock domain.
*/
void aon_timer_testutils_shutdown(const dif_aon_timer_t *aon_timer);
#endif // OPENTITAN_SW_DEVICE_LIB_TESTING_AON_TIMER_TESTUTILS_H_