5 #include "sw/device/silicon_creator/lib/drivers/ibex.h"
9 #include "gtest/gtest.h"
10 #include "sw/device/lib/base/mock_abs_mmio.h"
11 #include "sw/device/silicon_creator/lib/base/mock_sec_mmio.h"
12 #include "sw/device/silicon_creator/testing/rom_test.h"
15 #include "rv_core_ibex_regs.h"
17 namespace ibex_unittest {
23 rom_test::MockSecMmio sec_;
27 uint32_t matching_addr = 0x9000000;
28 uint32_t remap_addr = 0x2000000;
29 uint32_t size = 0x8000;
30 EXPECT_SEC_WRITE32(base_ + RV_CORE_IBEX_IBUS_ADDR_MATCHING_0_REG_OFFSET,
32 EXPECT_SEC_WRITE32(base_ + RV_CORE_IBEX_DBUS_ADDR_MATCHING_0_REG_OFFSET,
35 EXPECT_SEC_WRITE32(base_ + RV_CORE_IBEX_IBUS_REMAP_ADDR_0_REG_OFFSET,
37 EXPECT_SEC_WRITE32(base_ + RV_CORE_IBEX_DBUS_REMAP_ADDR_0_REG_OFFSET,
40 EXPECT_SEC_WRITE32(base_ + RV_CORE_IBEX_IBUS_ADDR_EN_0_REG_OFFSET, 1);
41 EXPECT_SEC_WRITE32(base_ + RV_CORE_IBEX_DBUS_ADDR_EN_0_REG_OFFSET, 1);
43 ibex_addr_remap_0_set(matching_addr, remap_addr, size);
46 TEST_F(AddressTranslationTest, Slot1Sucess) {
49 uint32_t matching_addr = 0xB040000;
50 uint32_t remap_addr = 0x6000000;
51 uint32_t size = 0x80000;
52 EXPECT_SEC_WRITE32(base_ + RV_CORE_IBEX_IBUS_ADDR_MATCHING_1_REG_OFFSET,
54 EXPECT_SEC_WRITE32(base_ + RV_CORE_IBEX_DBUS_ADDR_MATCHING_1_REG_OFFSET,
57 EXPECT_SEC_WRITE32(base_ + RV_CORE_IBEX_IBUS_REMAP_ADDR_1_REG_OFFSET,
59 EXPECT_SEC_WRITE32(base_ + RV_CORE_IBEX_DBUS_REMAP_ADDR_1_REG_OFFSET,
62 EXPECT_SEC_WRITE32(base_ + RV_CORE_IBEX_IBUS_ADDR_EN_1_REG_OFFSET, 1);
63 EXPECT_SEC_WRITE32(base_ + RV_CORE_IBEX_DBUS_ADDR_EN_1_REG_OFFSET, 1);
65 ibex_addr_remap_1_set(matching_addr, remap_addr, size);