aboutsummaryrefslogtreecommitdiff
path: root/rv64cpu/tb/unit
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-03-31 18:04:30 +0000
committerRichard Qin <richard.qin.x@gmail.com>2026-03-31 18:04:30 +0000
commit12046adcd4e53d7b093c964f33ed1db7b9c3e248 (patch)
treed98b4ca1fbce1c8d660e2a4788bba6271a4152ba /rv64cpu/tb/unit
parentcf0476e565c74082f011a6c428095e60a743b822 (diff)
downloadrcc-project-12046adcd4e53d7b093c964f33ed1db7b9c3e248.tar.gz
rcc-project-12046adcd4e53d7b093c964f33ed1db7b9c3e248.tar.xz
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>
Diffstat (limited to 'rv64cpu/tb/unit')
-rw-r--r--rv64cpu/tb/unit/tb_trap_ctrl.cc12
1 files 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;