5 #include "sw/device/silicon_creator/lib/drivers/ast.h"
9 #include "gtest/gtest.h"
11 #include "sw/device/lib/base/mock_abs_mmio.h"
12 #include "sw/device/lib/base/multibits.h"
13 #include "sw/device/silicon_creator/lib/base/mock_csr.h"
14 #include "sw/device/silicon_creator/lib/drivers/mock_otp.h"
15 #include "sw/device/silicon_creator/testing/rom_test.h"
18 #include "otp_ctrl_regs.h"
19 #include "sensor_ctrl_regs.h"
21 namespace ast_unittest {
23 using ::testing::Return;
24 using ::testing::ValuesIn;
36 EXPECT_ABS_READ32(base_ + SENSOR_CTRL_STATUS_REG_OFFSET,
37 {{SENSOR_CTRL_STATUS_AST_INIT_DONE_BIT, done1}});
38 EXPECT_ABS_READ32(base_ + SENSOR_CTRL_STATUS_REG_OFFSET,
39 {{SENSOR_CTRL_STATUS_AST_INIT_DONE_BIT, done2}});
48 EXPECT_CALL(otp_, read32(OTP_CTRL_PARAM_CREATOR_SW_CFG_AST_INIT_EN_OFFSET))
49 .WillOnce(Return(val));
53 rom_test::MockAbsMmio mmio_;
54 rom_test::MockOtp otp_;
55 mock_csr::MockCsr csr_;
58 TEST_F(AstTest, InitDoneTrue) {
59 ExpectStatusRead(
true,
true);
64 TEST_F(AstTest, InitDoneFalse) {
65 ExpectStatusRead(
false,
false);
69 ExpectStatusRead(
true,
false);
73 ExpectStatusRead(
false,
true);
79 public testing::WithParamInterface<lifecycle_state_t> {};
81 constexpr std::array<lifecycle_state_t, 2> kLcStatesWithoutCheck{
89 EXPECT_EQ(ast_check(GetParam()), kErrorOk);
92 INSTANTIATE_TEST_SUITE_P(LcStatesWithoutCheck, AstLcStatesWithoutCheckTest,
93 ValuesIn(kLcStatesWithoutCheck));
95 constexpr std::array<lifecycle_state_t, 3> kLcStatesWithCheck{
104 ExpectOtpRead(kMultiBitBool4False);
106 EXPECT_EQ(ast_check(GetParam()), kErrorOk);
109 TEST_P(AstLcStatesWithCheckTest, CheckTimeout) {
110 ExpectOtpRead(kMultiBitBool4True);
111 EXPECT_CSR_WRITE(CSR_REG_MCYCLE, 0);
112 EXPECT_CSR_READ(CSR_REG_MCYCLE, 100);
113 ExpectStatusRead(
false,
false);
115 ExpectStatusRead(
false,
false);
117 EXPECT_EQ(ast_check(GetParam()), kErrorAstInitNotDone);
120 TEST_P(AstLcStatesWithCheckTest, CheckSuccess) {
121 ExpectOtpRead(kMultiBitBool4True);
122 EXPECT_CSR_WRITE(CSR_REG_MCYCLE, 0);
123 EXPECT_CSR_READ(CSR_REG_MCYCLE, 100);
124 ExpectStatusRead(
false,
false);
126 ExpectStatusRead(
true,
true);
128 EXPECT_EQ(ast_check(GetParam()), kErrorOk);
131 INSTANTIATE_TEST_SUITE_P(LcStatesWithCheck, AstLcStatesWithCheckTest,
132 ValuesIn(kLcStatesWithCheck));