Skip to content

VCS Compiling problem for cv32e40p and PULP #2598

@yingjiezero

Description

@yingjiezero

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:

  1. Modified the PULP_XPULP parameter in cv32e40p_core.sv:
    parameter PULP_XPULP = 1;
  2. 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
  3. 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.

full_terminal_output.log

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions