From 12046adcd4e53d7b093c964f33ed1db7b9c3e248 Mon Sep 17 00:00:00 2001 From: Richard Qin Date: Tue, 31 Mar 2026 18:04:30 +0000 Subject: test(trap_ctrl): add store page fault unit test case Added a specific test scenario for Store Page Fault in tb/unit/tb_trap_ctrl.cc. - Defined EXC_STORE_PAGE_FAULT (15) constant. - Implemented a test case that asserts trap_store_page_fault and verifies mcause and mtval. - Improved clarity by renaming existing page fault test labels to LoadPageFault. Co-authored-by: Richard-Qin-001 <69390919+Richard-Qin-001@users.noreply.github.com> --- rv64cpu/tb/unit/tb_trap_ctrl.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/rv64cpu/tb/unit/tb_trap_ctrl.cc b/rv64cpu/tb/unit/tb_trap_ctrl.cc index 1708598..c57e6da 100644 --- a/rv64cpu/tb/unit/tb_trap_ctrl.cc +++ b/rv64cpu/tb/unit/tb_trap_ctrl.cc @@ -28,6 +28,7 @@ namespace { constexpr uint64_t EXC_INST_ILLEGAL = 2ULL; constexpr uint64_t EXC_ECALL_FROM_S = 9ULL; constexpr uint64_t EXC_LOAD_PAGE_FAULT= 13ULL; +constexpr uint64_t EXC_STORE_PAGE_FAULT= 15ULL; constexpr uint64_t EXC_LOAD_FAULT = 5ULL; constexpr uint64_t EXC_STORE_FAULT = 7ULL; @@ -124,8 +125,15 @@ int main(int argc, char** argv) { dut->trap_load_page_fault = 1; dut->trap_bad_addr = 0xBADC0FFEE0ULL; dut->eval(); - check(dut->trap_mcause == EXC_LOAD_PAGE_FAULT, "PageFault_Mcause"); - check(dut->trap_mtval == 0xBADC0FFEE0ULL, "PageFault_Mtval"); + check(dut->trap_mcause == EXC_LOAD_PAGE_FAULT, "LoadPageFault_Mcause"); + check(dut->trap_mtval == 0xBADC0FFEE0ULL, "LoadPageFault_Mtval"); + + drive_defaults(dut); + dut->trap_store_page_fault = 1; + dut->trap_bad_addr = 0xDEADBEEF00ULL; + dut->eval(); + check(dut->trap_mcause == EXC_STORE_PAGE_FAULT, "StorePageFault_Mcause"); + check(dut->trap_mtval == 0xDEADBEEF00ULL, "StorePageFault_Mtval"); drive_defaults(dut); dut->trap_load_fault = 1; -- cgit v1.2.3