aboutsummaryrefslogtreecommitdiff
path: root/rv64cpu/tb/compliance/CMakeLists.txt
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-04-01 04:54:49 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-04-01 05:02:48 +0800
commitbe57ced99b660810158da4763e5a764ddefe3be1 (patch)
treeb518a4295255ee2c07b148100f37c69cf37f5cea /rv64cpu/tb/compliance/CMakeLists.txt
parent15fa51f04bf85239b26fe5bfb424aa38ce2fb888 (diff)
downloadrcc-project-be57ced99b660810158da4763e5a764ddefe3be1.tar.gz
rcc-project-be57ced99b660810158da4763e5a764ddefe3be1.tar.xz
feat(compliance): implement ACT4 strict compliance flow with ELF runner
add functional compliance_runner with ELF loading, memory model, symbol-based signature dump, and tohost handling; wire compliance subdir/target in CMake; upgrade run_compliance.py for ACT4 suite mapping, robust binary/reference discovery, strict signature comparison, and aggregate suites (rv64g/rv64full).
Diffstat (limited to 'rv64cpu/tb/compliance/CMakeLists.txt')
-rw-r--r--rv64cpu/tb/compliance/CMakeLists.txt41
1 files changed, 29 insertions, 12 deletions
diff --git a/rv64cpu/tb/compliance/CMakeLists.txt b/rv64cpu/tb/compliance/CMakeLists.txt
index b832f01..0139f54 100644
--- a/rv64cpu/tb/compliance/CMakeLists.txt
+++ b/rv64cpu/tb/compliance/CMakeLists.txt
@@ -4,18 +4,35 @@
#
# ─────────────────────────────────────────────────────────────────────────────────
-# The compliance runner needs the SoC sim binary
-# Uncomment when both the SoC and compliance_runner are implemented:
-#
-# add_verilator_target(
-# NAME compliance_runner
-# TOP_MODULE richard_soc
-# SOURCES ${ALL_RTL_SOURCES}
-# INCLUDE_DIRS ${RTL_COMMON_INCLUDES}
-# TB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/compliance_runner.cpp
-# EXTRA_FLAGS --threads 2
-# )
-#
+# Minimal compliance runner target (core-only for bootstrap stage).
+# NOTE: This uses richard_core until SoC top and memory/peripheral harness are ready.
+add_verilator_target(
+ NAME compliance_runner
+ TOP_MODULE richard_core
+ SOURCES ${RTL_CORE_DIR}/include/rv64_pkg.sv
+ ${RTL_CORE_DIR}/alu.sv
+ ${RTL_CORE_DIR}/branch_unit.sv
+ ${RTL_CORE_DIR}/decoder.sv
+ ${RTL_CORE_DIR}/regfile.sv
+ ${RTL_CORE_DIR}/if_stage.sv
+ ${RTL_CORE_DIR}/if_id_reg.sv
+ ${RTL_CORE_DIR}/id_stage.sv
+ ${RTL_CORE_DIR}/id_ex_reg.sv
+ ${RTL_CORE_DIR}/ex_stage.sv
+ ${RTL_CORE_DIR}/ex_mem_reg.sv
+ ${RTL_CORE_DIR}/mem_stage.sv
+ ${RTL_CORE_DIR}/mem_wb_reg.sv
+ ${RTL_CORE_DIR}/wb_stage.sv
+ ${RTL_CORE_DIR}/hazard_unit.sv
+ ${RTL_CORE_DIR}/include/csr_pkg.sv
+ ${RTL_CORE_DIR}/csr_unit.sv
+ ${RTL_CORE_DIR}/trap_ctrl.sv
+ ${RTL_CORE_DIR}/richard_core.sv
+ INCLUDE_DIRS ${RTL_COMMON_INCLUDES}
+ TB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/compliance_runner.cc
+ EXTRA_FLAGS -Wno-PINCONNECTEMPTY
+)
+
# ─── Register individual compliance tests via CTest ──────────────────────────────
# This is done dynamically by the compliance_runner binary and run_compliance.py.
# You can also manually register tests like: