7 #include "gtest/gtest.h"
9 #include "sw/device/lib/base/mock_mmio.h"
10 #include "sw/device/lib/base/multibits.h"
14 #include "sram_ctrl_regs.h"
16 namespace dif_sram_ctrl_autogen_unittest {
18 using ::mock_mmio::MmioTest;
19 using ::mock_mmio::MockDevice;
20 using ::testing::Test;
24 dif_sram_ctrl_t sram_ctrl_ = {.base_addr = dev().region()};
33 TEST_F(Scramble, Locked) {
34 EXPECT_READ32(SRAM_CTRL_CTRL_REGWEN_REG_OFFSET, 0);
38 TEST_F(Scramble, Failure) {
39 EXPECT_READ32(SRAM_CTRL_CTRL_REGWEN_REG_OFFSET, 1);
42 EXPECT_WRITE32(SRAM_CTRL_CTRL_REG_OFFSET,
43 {{SRAM_CTRL_CTRL_RENEW_SCR_KEY_BIT,
true},
44 {SRAM_CTRL_CTRL_INIT_BIT,
false}});
48 EXPECT_WRITE32(SRAM_CTRL_CTRL_REG_OFFSET,
49 {{SRAM_CTRL_CTRL_RENEW_SCR_KEY_BIT,
false},
50 {SRAM_CTRL_CTRL_INIT_BIT,
true}});
51 EXPECT_READ32(SRAM_CTRL_STATUS_REG_OFFSET,
52 std::numeric_limits<uint32_t>::max());
57 TEST_F(Scramble, Success) {
58 EXPECT_READ32(SRAM_CTRL_CTRL_REGWEN_REG_OFFSET, 1);
62 EXPECT_WRITE32(SRAM_CTRL_CTRL_REG_OFFSET,
63 {{SRAM_CTRL_CTRL_RENEW_SCR_KEY_BIT,
true},
64 {SRAM_CTRL_CTRL_INIT_BIT,
false}});
65 EXPECT_READ32(SRAM_CTRL_STATUS_REG_OFFSET, 0);
66 EXPECT_READ32(SRAM_CTRL_STATUS_REG_OFFSET, 0);
71 EXPECT_WRITE32(SRAM_CTRL_CTRL_REG_OFFSET,
72 {{SRAM_CTRL_CTRL_RENEW_SCR_KEY_BIT,
false},
73 {SRAM_CTRL_CTRL_INIT_BIT,
true}});
74 EXPECT_READ32(SRAM_CTRL_STATUS_REG_OFFSET, 0);
75 EXPECT_READ32(SRAM_CTRL_STATUS_REG_OFFSET, 0);
87 TEST_F(RequestNewKeyTest, Locked) {
88 EXPECT_READ32(SRAM_CTRL_CTRL_REGWEN_REG_OFFSET, 0);
92 TEST_F(RequestNewKeyTest, Success) {
93 EXPECT_READ32(SRAM_CTRL_CTRL_REGWEN_REG_OFFSET, 1);
94 EXPECT_WRITE32(SRAM_CTRL_CTRL_REG_OFFSET,
95 {{SRAM_CTRL_CTRL_RENEW_SCR_KEY_BIT,
true},
96 {SRAM_CTRL_CTRL_INIT_BIT,
false}});
106 TEST_F(WipeTest, Locked) {
107 EXPECT_READ32(SRAM_CTRL_CTRL_REGWEN_REG_OFFSET, 0);
111 TEST_F(WipeTest, Success) {
112 EXPECT_READ32(SRAM_CTRL_CTRL_REGWEN_REG_OFFSET, 1);
113 EXPECT_WRITE32(SRAM_CTRL_CTRL_REG_OFFSET,
114 {{SRAM_CTRL_CTRL_RENEW_SCR_KEY_BIT,
false},
115 {SRAM_CTRL_CTRL_INIT_BIT,
true}});
128 TEST_F(GetStatusTest, SuccessSome) {
129 EXPECT_READ32(SRAM_CTRL_STATUS_REG_OFFSET, 0xA5A5A5A5);
133 EXPECT_EQ(
status, 0xA5A5A5A5);
136 TEST_F(GetStatusTest, SuccessAll) {
137 EXPECT_READ32(SRAM_CTRL_STATUS_REG_OFFSET,
138 std::numeric_limits<uint32_t>::max());
142 EXPECT_EQ(
status, std::numeric_limits<uint32_t>::max());
145 TEST_F(GetStatusTest, SuccessNone) {
146 EXPECT_READ32(SRAM_CTRL_STATUS_REG_OFFSET, 0);
162 TEST_F(ExecGetEnabledTest, Enabled) {
164 EXPECT_READ32(SRAM_CTRL_EXEC_REG_OFFSET, kMultiBitBool4True);
169 TEST_F(ExecGetEnabledTest, Disabled) {
171 EXPECT_READ32(SRAM_CTRL_EXEC_REG_OFFSET, kMultiBitBool4False);
176 EXPECT_READ32(SRAM_CTRL_EXEC_REG_OFFSET, 0);
181 EXPECT_READ32(SRAM_CTRL_EXEC_REG_OFFSET,
182 std::numeric_limits<uint32_t>::max());
195 TEST_F(ExecSetEnabledTest, Locked) {
196 EXPECT_READ32(SRAM_CTRL_EXEC_REGWEN_REG_OFFSET, 0x0);
200 EXPECT_READ32(SRAM_CTRL_EXEC_REGWEN_REG_OFFSET, 0x0);
205 TEST_F(ExecSetEnabledTest, Enabled) {
206 EXPECT_READ32(SRAM_CTRL_EXEC_REGWEN_REG_OFFSET, 0x1);
207 EXPECT_WRITE32(SRAM_CTRL_EXEC_REG_OFFSET, kMultiBitBool4True);
210 EXPECT_READ32(SRAM_CTRL_EXEC_REGWEN_REG_OFFSET, 0x1);
211 EXPECT_WRITE32(SRAM_CTRL_EXEC_REG_OFFSET, kMultiBitBool4False);
223 TEST_F(LockTest, Error) {
229 TEST_F(LockTest, LockCtrl) {
230 EXPECT_WRITE32(SRAM_CTRL_CTRL_REGWEN_REG_OFFSET, 0x0);
232 EXPECT_WRITE32(SRAM_CTRL_CTRL_REGWEN_REG_OFFSET, 0x0);
236 TEST_F(LockTest, LockExec) {
237 EXPECT_WRITE32(SRAM_CTRL_EXEC_REGWEN_REG_OFFSET, 0x0);
239 EXPECT_WRITE32(SRAM_CTRL_EXEC_REGWEN_REG_OFFSET, 0x0);
262 TEST_F(IsLockedTest, Error) {
271 TEST_F(IsLockedTest, Ctrl) {
272 bool is_locked =
true;
273 EXPECT_READ32(SRAM_CTRL_CTRL_REGWEN_REG_OFFSET, 0x1);
276 EXPECT_EQ(is_locked,
false);
279 EXPECT_READ32(SRAM_CTRL_CTRL_REGWEN_REG_OFFSET, 0x0);
282 EXPECT_EQ(is_locked,
true);
285 TEST_F(IsLockedTest, Exec) {
286 bool is_locked =
true;
287 EXPECT_READ32(SRAM_CTRL_EXEC_REGWEN_REG_OFFSET, 0x1);
290 EXPECT_EQ(is_locked,
false);
293 EXPECT_READ32(SRAM_CTRL_EXEC_REGWEN_REG_OFFSET, 0x0);
296 EXPECT_EQ(is_locked,
true);
302 multi_bit_bool_t success;
311 TEST_F(IsLockedTest, Rotated0) {
312 multi_bit_bool_t success = kMultiBitBool4True;
313 EXPECT_READ32(SRAM_CTRL_SCR_KEY_ROTATED_REG_OFFSET, kMultiBitBool4False);
314 EXPECT_WRITE32(SRAM_CTRL_SCR_KEY_ROTATED_REG_OFFSET, kMultiBitBool4False);
316 kMultiBitBool4False));
317 EXPECT_EQ(success, kMultiBitBool4False);
320 TEST_F(IsLockedTest, Rotated1) {
321 multi_bit_bool_t success = kMultiBitBool4False;
322 EXPECT_READ32(SRAM_CTRL_SCR_KEY_ROTATED_REG_OFFSET, kMultiBitBool4True);
323 EXPECT_WRITE32(SRAM_CTRL_SCR_KEY_ROTATED_REG_OFFSET, kMultiBitBool4True);
326 EXPECT_EQ(success, kMultiBitBool4True);
329 TEST_F(IsLockedTest, Rotated2) {
330 multi_bit_bool_t success = kMultiBitBool4False;
331 EXPECT_READ32(SRAM_CTRL_SCR_KEY_ROTATED_REG_OFFSET, kMultiBitBool4True);
332 EXPECT_WRITE32(SRAM_CTRL_SCR_KEY_ROTATED_REG_OFFSET, kMultiBitBool4False);
334 kMultiBitBool4False));
335 EXPECT_EQ(success, kMultiBitBool4True);