-
Notifications
You must be signed in to change notification settings - Fork 250
Description
Issue Description
Hello, I encountered an issue while running the cv32e40p
project. When I attempt to execute the following command in the cv32e40p/sim/core
directory:
make vcs-custom TEST=pulp_general_alu CUSTOM=. CV_SIMULATOR=vcs
The simulation run fails, producing multiple errors, including a UVM_FATAL log entry. Below is part of the error output:
ucli% run
[cv32e40p_core]: PULP_XPULP = 0, PULP_CLUSTER = 0, FPU 0, PULP_ZFINX 0, NUM_MHPMCOUNTERS 1
UVM_INFO /home/gk/Desktop/Package/gk/core-v-verif/cv32e40p/tb/core/mm_ram.sv(265) @ 0ns: reporter [RNDSTALL] INSTR OBI stall enable: 1
UVM_INFO /home/gk/Desktop/Package/gk/core-v-verif/cv32e40p/tb/core/mm_ram.sv(266) @ 0ns: reporter [RNDSTALL] INSTR OBI stall mode: 1
UVM_INFO /home/gk/Desktop/Package/gk/core-v-verif/cv32e40p/tb/core/mm_ram.sv(267) @ 0ns: reporter [RNDSTALL] INSTR OBI stall gnt: 1
UVM_INFO /home/gk/Desktop/Package/gk/core-v-verif/cv32e40p/tb/core/mm_ram.sv(268) @ 0ns: reporter [RNDSTALL] INSTR OBI stall valid: 2
UVM_INFO /home/gk/Desktop/Package/gk/core-v-verif/cv32e40p/tb/core/mm_ram.sv(269) @ 0ns: reporter [RNDSTALL] INSTR OBI stall max: 3
UVM_INFO /home/gk/Desktop/Package/gk/core-v-verif/cv32e40p/tb/core/mm_ram.sv(270) @ 0ns: reporter [RNDSTALL] DATA OBI stall enable: 0
UVM_INFO /home/gk/Desktop/Package/gk/core-v-verif/cv32e40p/tb/core/mm_ram.sv(271) @ 0ns: reporter [RNDSTALL] DATA OBI stall mode: 0
UVM_INFO /home/gk/Desktop/Package/gk/core-v-verif/cv32e40p/tb/core/mm_ram.sv(272) @ 0ns: reporter [RNDSTALL] DATA OBI stall gnt: 0
UVM_INFO /home/gk/Desktop/Package/gk/core-v-verif/cv32e40p/tb/core/mm_ram.sv(273) @ 0ns: reporter [RNDSTALL] DATA OBI stall valid: 0
UVM_INFO /home/gk/Desktop/Package/gk/core-v-verif/cv32e40p/tb/core/mm_ram.sv(274) @ 0ns: reporter [RNDSTALL] DATA OBI stall max: 0
UVM_ERROR /home/gk/Desktop/Package/gk/core-v-verif/cv32e40p/tb/core/mm_ram.sv(487) @ 6140ns: reporter [MM_RAM] out of bounds read from ccda43ac (RAM_ADDR_WIDTH=22; dm_halt_addri=1a110800, DBG_ADDR_WIDTH=14)
UVM_ERROR /home/gk/Desktop/Package/gk/core-v-verif/cv32e40p/tb/core/mm_ram.sv(487) @ 15980ns: reporter [MM_RAM] out of bounds read from 0550107b (RAM_ADDR_WIDTH=22; dm_halt_addri=1a110800, DBG_ADDR_WIDTH=14)
UVM_ERROR /home/gk/Desktop/Package/gk/core-v-verif/cv32e40p/tb/core/mm_ram.sv(487) @ 15980ns: reporter [MM_RAM] out of bounds read from 0550107c (RAM_ADDR_WIDTH=22; dm_halt_addri=1a110800, DBG_ADDR_WIDTH=14)
UVM_ERROR /home/gk/Desktop/Package/gk/core-v-verif/cv32e40p/tb/core/mm_ram.sv(487) @ 15990ns: reporter [MM_RAM] out of bounds read from 0550107c (RAM_ADDR_WIDTH=22; dm_halt_addri=1a110800, DBG_ADDR_WIDTH=14)
UVM_ERROR /home/gk/Desktop/Package/gk/core-v-verif/cv32e40p/tb/core/mm_ram.sv(487) @ 15990ns: reporter [MM_RAM] out of bounds read from 0550107f (RAM_ADDR_WIDTH=22; dm_halt_addri=1a110800, DBG_ADDR_WIDTH=14)
UVM_ERROR /home/gk/Desktop/Package/gk/core-v-verif/cv32e40p/tb/core/mm_ram.sv(487) @ 16080ns: reporter [MM_RAM] out of bounds read from 055010d3 (RAM_ADDR_WIDTH=22; dm_halt_addri=1a110800, DBG_ADDR_WIDTH=14)
UVM_ERROR /home/gk/Desktop/Package/gk/core-v-verif/cv32e40p/tb/core/mm_ram.sv(487) @ 16080ns: reporter [MM_RAM] out of bounds read from 055010d4 (RAM_ADDR_WIDTH=22; dm_halt_addri=1a110800, DBG_ADDR_WIDTH=14)
UVM_ERROR /home/gk/Desktop/Package/gk/core-v-verif/cv32e40p/tb/core/mm_ram.sv(487) @ 16090ns: reporter [MM_RAM] out of bounds read from 055010d4 (RAM_ADDR_WIDTH=22; dm_halt_addri=1a110800, DBG_ADDR_WIDTH=14)
UVM_ERROR /home/gk/Desktop/Package/gk/core-v-verif/cv32e40p/tb/core/mm_ram.sv(487) @ 16090ns: reporter [MM_RAM] out of bounds read from 055010d7 (RAM_ADDR_WIDTH=22; dm_halt_addri=1a110800, DBG_ADDR_WIDTH=14)
"/home/gk/Desktop/Package/gk/core-v-verif/cv32e40p/tb/core/mm_ram.sv", 445: tb_top.cv32e40p_tb_wrapper_i.ram_i.out_of_bounds_write: started at 16120000ps failed at 16120000ps
Offending '(((((((((((((data_addr_i < (2 ** RAM_ADDR_WIDTH)) || ((data_addr_i >= dm_halt_addr_i) && (data_addr_i < (dm_halt_addr_i + (2 ** DBG_ADDR_WIDTH))))) || (data_addr_i == MMADDR_PRINT)) || (data_addr_i == MMADDR_TIMERREG)) || (data_addr_i == MMADDR_TIMERVAL)) || (data_addr_i == MMADDR_DBG)) || (data_addr_i == MMADDR_TESTSTATUS)) || (data_addr_i == MMADDR_EXIT)) || (data_addr_i == MMADDR_SIGBEGIN)) || (data_addr_i == MMADDR_SIGEND)) || (data_addr_i == MMADDR_SIGDUMP)) || (data_addr_i == MMADDR_TICKS)) || (data_addr_i[31:16] == MMADDR_RNDSTALL))'
UVM_FATAL /home/gk/Desktop/Package/gk/core-v-verif/cv32e40p/tb/core/mm_ram.sv(462) @ 16120ns: reporter [MM_RAM] out of bounds write to 0550107c with 00000020
--- UVM Report Summary ---
** Report counts by severity
UVM_INFO : 10
UVM_WARNING : 0
UVM_ERROR : 9
UVM_FATAL : 1
** Report counts by id
[MM_RAM] 10
[RNDSTALL] 10
$finish called from file "/home/gk/Desktop/Package/vcs2018/vcs/O-2018.09-SP2/etc/uvm/base/uvm_report_object.svh", line 292.
Changes I Made
To enable PULP functionality and try to resolve the issue, I made the following changes:
- Modified the
PULP_XPULP
parameter incv32e40p_core.sv
:parameter PULP_XPULP = 1;
- Uncommented the following lines (327–329) in
Common.mk
:ifeq ($(firstword $(subst _, ,$(TEST))),pulp) CFLAGS = -Os -g -D__riscv__=1 -D__LITTLE_ENDIAN__=1 -march=rv32imcxpulpv2 -Wa,-march=rv32imcxpulpv2 -fdata-sections -ffunction-sections -fdiagnostics-color=always endif
- Configured toolchain environment variables for PULP GCC:
export CV_SW_TOOLCHAIN=/home/gk/Desktop/Package/v1.0.16-pulp-riscv-gcc-ubuntu-16 export CV_SW_PREFIX=riscv32-unknown-elf- export CV_SW_MARCH=rv32gc
Request for Help
I am seeking guidance on how to properly configure the project to enable support for PULP-based tests (TEST=pulp_general_alu
). A similar setup with corev-openhw-gcc-ubuntu2004-20241020 as the toolchain was able to successfully run TEST=hello-world
, but it also failed when running TEST=pulp_general_alu
.
Additional Information
Host system: Ubuntu 20.04
VCS version: O-2018.09-SP2_Full64
Hardware compiler: PULP GCC v1.0.16 riscv
Attachment Details
I have attached a file named full_terminal_output.log to this issue. The file contains the complete terminal logs that resulted from running the failing command. Please review this file for further insights into the error.