Software APIs
dif_rv_dm_unittest.cc
1 // Copyright lowRISC contributors (OpenTitan project).
2 // Licensed under the Apache License, Version 2.0, see LICENSE for details.
3 // SPDX-License-Identifier: Apache-2.0
4 // DO NOT EDIT THIS FILE DIRECTLY.
5 // It has been generated with ./util/design/gen-otp-mmap.py
6 
8 
9 #include <cstring>
10 #include <limits>
11 #include <ostream>
12 
13 #include "gtest/gtest.h"
15 #include "sw/device/lib/base/mock_mmio.h"
17 
18 #include "rv_dm_regs.h" // Generated.
19 
20 namespace dif_rv_dm_unittest {
21 namespace {
22 using ::mock_mmio::LeInt;
23 using ::mock_mmio::MmioTest;
24 using ::mock_mmio::MockDevice;
25 using ::testing::Each;
26 using ::testing::ElementsAre;
27 
28 class RvDmTest : public testing::Test, public MmioTest {
29  protected:
30  dif_rv_dm_t rv_dm_ = {.base_addr = dev().region()};
31 };
32 
33 TEST_F(RvDmTest, LateDebugEnable) {
34  EXPECT_READ32(
35  RV_DM_LATE_DEBUG_ENABLE_REGWEN_REG_OFFSET,
36  {{RV_DM_LATE_DEBUG_ENABLE_REGWEN_LATE_DEBUG_ENABLE_REGWEN_BIT, true}});
37  EXPECT_WRITE32(RV_DM_LATE_DEBUG_ENABLE_REG_OFFSET, kMultiBitBool32True);
39 
40  EXPECT_READ32(
41  RV_DM_LATE_DEBUG_ENABLE_REGWEN_REG_OFFSET,
42  {{RV_DM_LATE_DEBUG_ENABLE_REGWEN_LATE_DEBUG_ENABLE_REGWEN_BIT, true}});
43  EXPECT_WRITE32(RV_DM_LATE_DEBUG_ENABLE_REG_OFFSET, kMultiBitBool32False);
45 }
46 
47 TEST_F(RvDmTest, LateDebugEnableErrorDifLocked) {
48  EXPECT_READ32(
49  RV_DM_LATE_DEBUG_ENABLE_REGWEN_REG_OFFSET,
50  {{RV_DM_LATE_DEBUG_ENABLE_REGWEN_LATE_DEBUG_ENABLE_REGWEN_BIT, false}});
52 }
53 
54 TEST_F(RvDmTest, LockLateDebug) {
55  EXPECT_WRITE32(
56  RV_DM_LATE_DEBUG_ENABLE_REGWEN_REG_OFFSET,
57  {{RV_DM_LATE_DEBUG_ENABLE_REGWEN_LATE_DEBUG_ENABLE_REGWEN_BIT, false}});
59 }
60 
61 TEST_F(RvDmTest, BadArgs) {
63 
66  &rv_dm_, /*enable=*/(dif_toggle_t)UINT32_MAX));
67 
68  bool flag;
71 }
72 
73 TEST_F(RvDmTest, IsLateDebugLocked) {
74  EXPECT_READ32(
75  RV_DM_LATE_DEBUG_ENABLE_REGWEN_REG_OFFSET,
76  {{RV_DM_LATE_DEBUG_ENABLE_REGWEN_LATE_DEBUG_ENABLE_REGWEN_BIT, true}});
77 
78  bool flag;
80  EXPECT_FALSE(flag);
81 
82  EXPECT_READ32(
83  RV_DM_LATE_DEBUG_ENABLE_REGWEN_REG_OFFSET,
84  {{RV_DM_LATE_DEBUG_ENABLE_REGWEN_LATE_DEBUG_ENABLE_REGWEN_BIT, false}});
86  EXPECT_TRUE(flag);
87 }
88 
89 } // namespace
90 } // namespace dif_rv_dm_unittest