Skip to content

Tracer .svh headers in Bender.yml files: list break with bender >= 0.32.0 (re-added after upstream removed them) #71

Description

@fischeti

Summary

The cva6 tracer header files are listed in Bender.yml's files: list in this fork:

- target: not(synthesis)
  files:
    - core/include/instr_tracer_pkg.sv
    - common/local/util/instr_tracer.sv
    - common/local/util/instr_trace_item.svh   # header
    - common/local/util/ex_trace_item.svh      # header

These two .svh are include headers (pulled in via +incdir+common/local/util and `include from instr_tracer.sv), not standalone compilation units. Listing them in files: breaks with bender >= 0.32.0.

What changed

  • bender 0.31.0 treated .svh as an unknown file type (W28) and silently dropped it from the emitted source list — so the headers reached the compiler only via +incdir+. The deviation was invisible.
  • bender 0.32.0 now emits files listed in files: as standalone compile sources, including .svh. The header then gets compiled both standalone and via `include -> duplicate definition.

With VCS this is fatal (Questa/vsim tolerates it via separate compilation units):

Error-[CRE] Class redefinition encountered
  The class 'ex_trace_item' is defined more than once.
Error-[SVBENM] End name does not match the begin name
  endclass name is 'ex_trace_item', while the class name is 'ex_trace_item_0'.

-> no top module -> elaboration fails.

Why this looks unintentional

Upstream openhwgroup/cva6 removed these two headers from Bender.yml in openhwgroup#1493 (172659959, 2023-10-02). This fork then re-added them afterwards in dc1da0b07 ("treewide: Fix Bender.yml and stub FPGA-specific memories", 2023-12-22), which is fork-only. The current pulp-v2.0.0 tag therefore still lists them, whereas upstream does not.

Question

Was re-adding instr_trace_item.svh / ex_trace_item.svh to files: in dc1da0b07 intentional? If not, can we drop them again (re-aligning with upstream openhwgroup#1493), and/or add proper include guards to the headers? As-is, anything consuming this fork will fail to compile with bender >= 0.32.0.

References

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions