Products > Programming

Signal visualisation: GTKWave and disassemblers

<< < (3/3)

Aha! That explains it: the program that generated it was translating timing data into individual wires and state into parallel data.

I'll have a tinker with the UI as you've suggested or an alternative data file.


OK, That works. The interesting thing from my POV is looking at what GTKWave actually sends: if I do a "combine down" for
the four signals together and then set up a filter it sends individual hex digits each terminated by (on Linux) \n with no channel identifiers etc., while if I repeat that for each individual signal (four total) it sends groups of 4x lines.

I can confirm that the trivial Perl filter I posted earlier works without locking anything up.

So I think it's not too difficult to e.g. have a group of lines representing a data bus and another representing an address bus strobed (on the capturing hardware) by appropriate control line state, but the risk of things getting out of sync is substantial.


GtkWave doesn’t document, if the translate filter program can be stateful, the corresponding static version of the filter is stateless, and the name itself also suggests statelessness. Currently the observed behavior is that GtkWave simply sends all data ordered by signal and then by time, so it certainly may be used for ad-hoc scripts to provide limited stateful decoding. But I wouldn’t depend on that as a long-term solution.

You may consider looking at the third filtering option: the transaction filter process. It receives a simplified VCD, which is certainly stateful. Or, alternatively, preprocessing your VCD file. Western Digital offers pyvcd — a VCD read/write library for Python — so there is no need to write that part on your own.


[0] Message Index

[*] Previous page

There was an error while thanking
Go to full version