From be57ced99b660810158da4763e5a764ddefe3be1 Mon Sep 17 00:00:00 2001 From: Richard Qin Date: Wed, 1 Apr 2026 04:54:49 +0800 Subject: 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). --- rv64cpu/tb/compliance/CMakeLists.txt | 41 +++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 12 deletions(-) (limited to 'rv64cpu/tb/compliance/CMakeLists.txt') 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: -- cgit v1.2.3