verilator / verilator

Verilator open-source SystemVerilog simulator and lint system
https://verilator.org
GNU Lesser General Public License v3.0
2.45k stars 582 forks source link

Allow non-standard 'struct' in VCD traces #5364

Closed VarunKoyyalagunta closed 6 days ago

VarunKoyyalagunta commented 1 month ago

I'm requesting that the behavior prior to #4227 be restored under an optional switch.

There are some other proprietary waveform browsers that don't support FSTs and benefit from having scope struct in the VCD.

I can create a patch if that is acceptable.

wsnyder commented 1 month ago

This is non-standard. What tool accepts this, and can you point us to the description of the VCD extensions that tool accepts?

VarunKoyyalagunta commented 1 month ago

Synopsys's Verdi tool accepts this though I can't find an exact specification. And I believe GtkWave also accepts this, relevant code. Our current workaround is to have verilator dump an fst and do fst -> vcd -> fsdb.

wsnyder commented 3 weeks ago

I'm still awaiting a response from Synopsys on what Verdi exactly supports, once we have that we'll decide how to proceed.

wsnyder commented 2 weeks ago

Synopsys claims Verdi supports only what is in IEEE, begin, fork, function, module, task, and anything else is treated same as module - but they do not recommend using any other keywords. Is this inconsistent with what you see?

VarunKoyyalagunta commented 4 days ago

Sorry for my late reply, this slipped by me. Yes so that's inconsistent with what we are seeing. vcd2fsdb appears to be treating struct differently. With struct, in Verdi's nWave window we are able to conveniently expand the struct and see its fields. With module that does not work.

wsnyder commented 4 days ago

Can you please contact your Synopsys FAE then and ask for what is supported? I don't need to be in the middle & maybe you'll get a better answer ;)

VarunKoyyalagunta commented 4 days ago

Yeah, let me contact them again, though last time I asked they were also confused. However, if you're okay with reverse engineering it and me trying "struct", "interface", and "union" in verdi, I can do that with likely faster turnaround.

wsnyder commented 4 days ago

Generally we shouldn't be doing reverse-engineering, better to reach out to them for what is supported.