Ibex to CVE2: necessary design and other coding modifications
I made a list of changes related to the remaining items of the transition from Ibex to CVE2 conversion #54 (closed).
- Substituted references of the Ibex core to the CVE2, when it was due to.
- Substituted references of "OpenHW Group" to "OpenHW Foundation" when due to, mainly on comments and documentation files.
- Substituted references of "cv32e2" to "CV32E20" on documentation files.
- Added the proper Eclipse Foundation copyright disclaimer for files modified this year (of 2025) and code files without a copyright disclaimer.
- Removed unsupported or stripped-out configuration parameters from
cve2_configs.yaml. - Substituted wrong FuseSoC- related references of
lowrisc: cve2toopenhwgroup:cve2, as it is the practice for OpenHW's FuseSoC core files. - Disabled, by commenting out, the
build-simple-system build-arty-100,build-csr-test,build-simple-systemmake targets of the mainMakefilefile, as they were previously stripped out from the code. - Added a make
sectarget for the Sequential Equivalence Checking (SEC) script, and a generalcleantarget. - There were 3 files on the repository that implemented a clock gate:
bhv/cve2_sim_clock_gate.sv,rtl/cve2_clock_gating.vandsyn/rtl/prim_clock_gating.v. I substituted them forrtl/cve2_clock_gate.svonly, keeping the disclaimer that it should not be used for actual physical synthesis (ASIC or FPGA). - Changed the RTL named assertions prefix from Ibex to CVE2.
- Declared the RVFI instruction interface bus (
rvfi_instr_if) ofrtl/cve2_core.sv, so that it can be properly linted by Verilator. Not needed by thecv32e20-dvfunctional verification environment as this interface is bound to the testbench, which get its type by CORE-V-VERIF's uvma_rvfi_instr_if.sv. - For the same reasons, defined
clknrst_ifandrvfi_csr_ifonrtl/cve2_cs_registers.sv. - Added void definitions of the DPI functions
simutil_get_scramble_keyandsimutil_get_scramble_nonce, that are needed for the creation of a simulation model of the CVE2 model for the RISCV Compliance test on thertl/cve2_if_stage.sv- a solution borrowed from Ibex's project. - Commented out the unused type
regfile_eonrtl/cve2_pkg.sv, as we don't support multiple implementations of the Registers File. - Added a waiver on the tracer (simulation-only) file
rtl/cve2_tracer.svfordecoded_str,data_accessedandinsn_is_compressedas it not was passing linting because Verilator treated them as multidriven signals, instead of just programming variables. - Adapted the SEC main script
scripts/sec/sec.shto always use as work and output directory the pathbuild/, as FuseSoC build do. - Removed unnecessary
vendor/patch files and commented out the lines used to reference them onvendor/lowrisc_ip.vendor.hjson.
I know this is a big list of changes, which are linked to each other in varying degrees. So, for that, I ask your patience and to test them locally as necessary. Naturally, I am happy to discuss each item.