Re: [Gtkwave-users] GHW file format
Brought to you by:
gtkwave,
joel1234567
From: <by...@nc...> - 2010-04-01 16:03:28
|
---- Lorenzo Di Gregorio <lor...@gm...> wrote: > Well, the idea was to generate traces from some abstract simulation models > and view them with a Waveform viewer for debugging. > The data types are rather complex. The best I can come up with at the > moment is to use scopes in VCD and the ASCII option of GTKwave to render > some data types. > It would be more handy to have something more expressive than VCD, which > supports an enumeration type or a string type ... > By the way, the FST format seems pretty undocumented as well, on Google. Bluespec did various scope tricks in VCD+signal naming to support their workstation product in gtkwave. You might want to post a note on their forum asking Don Baltus what he did. http://www.bluespec.com/forum/viewtopic.php?p=681 His email address is easily guessed (no first name used). He added support in the viewer for nested collapsible groups so that would work for being able to expand into arbitrary structures of data. The extent of documentation for FST is in src/helpers/fstapi.h as well as vcd2fst.c and fst2vcd.c. I realize it's painful using header files and C code only for documentation, but the API is relatively straightforward. I suggest using it because its speed/compression ratio is in line with FSDB format. It can store strings directly though I haven't tested that capability yet as VCD doesn't natively have a string type. As I mentioned, I can add more scope/var types if needed. BTW, you didn't mention exactly what you are working on, but the next version of the viewer will support dynamic parsing and generation of transactions via external processes using stdin/stdout, so that might help you out in viewing some complex data such as bus activity as determined by some number of relevant signals, if that is what you are trying to visualize. See http://gtkwave.sourceforge.net/ti994a_cassette_audio.jpg for a contrived example of what it can do. The process/file filters can be attached to arbitrary signals which is one reason I haven't done any handstands for adding enums. See the gtkwave user manual for how to use this. In short, the file filter is used for a small number of enums and the process filter is used to decode larger state spaces such as disassembling RISC opcodes. One day I suppose I need to write a tutorial series of articles as there are a lot of features buried in gtkwave. -Tony |