-
Notifications
You must be signed in to change notification settings - Fork 34
Description
Bug Description
Running Vcve2_riscv_compliance with any ELF or vmem file immediately fails:
ERROR: No memory found at
TOP.cve2_riscv_compliance.u_ram.u_ram.gen_generic.u_impl_generic' (the scope associated with regionram', used by a segment that starts at LMA 0x0).
The scope path hardcoded in dv/riscv_compliance/cve2_riscv_compliance.cc (line 17) is:
MemArea ram(
"TOP.cve2_riscv_compliance.u_ram.u_ram.gen_generic.u_impl_generic",
64 * 1024 / 4, 4);
The path segment gen_generic.u_impl_generic does not exist in the current prim_ram_1p.sv.
The stale path originates from commit 8b42024 ("Use vendored-in primitives from OpenTitan"), which updated the scope to use the then-current primgen wrapper hierarchy (prim_ram_1p → gen_generic.u_impl_generic). A subsequent update to fusesoc_libraries changed prim_ram_1p.sv to a flat implementation, but the .cc file was not updated accordingly.
Fix
In dv/riscv_compliance/cve2_riscv_compliance.cc, change:
MemArea ram(
"TOP.cve2_riscv_compliance.u_ram.u_ram.gen_generic.u_impl_generic",
64 * 1024 / 4, 4);
to:
MemArea ram(
"TOP.cve2_riscv_compliance.u_ram.u_ram",
64 * 1024 / 4, 4);
Steps to reproduce
- Build Vcve2_riscv_compliance per dv/riscv_compliance/README.md
- Run with any ELF: ./Vcve2_riscv_compliance -E .elf
- Observe the error above