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
Summary
The cva6 tracer header files are listed in
Bender.yml'sfiles:list in this fork:These two
.svhare include headers (pulled in via+incdir+common/local/utiland`includefrominstr_tracer.sv), not standalone compilation units. Listing them infiles:breaks with bender >= 0.32.0.What changed
.svhas 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.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):
-> no top module -> elaboration fails.
Why this looks unintentional
Upstream openhwgroup/cva6 removed these two headers from
Bender.ymlin openhwgroup#1493 (172659959, 2023-10-02). This fork then re-added them afterwards indc1da0b07("treewide: FixBender.ymland stub FPGA-specific memories", 2023-12-22), which is fork-only. The currentpulp-v2.0.0tag therefore still lists them, whereas upstream does not.Question
Was re-adding
instr_trace_item.svh/ex_trace_item.svhtofiles:indc1da0b07intentional? 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
benderchanges openhwgroup/cva6#1493 (172659959)dc1da0b07