A wave viewer
GTKWave is a digital waveform viewer useful for examining the output of various digital simulators and an analysis tool used to perform debugging on Verilog or VHDL simulation models. With the exception of interactive VCD viewing, it is not intended to be run interactively with simulation, but instead relies on a post-mortem approach through the use of dumpfiles.
GTKWave has been developed to perform debug tasks on large systems on a chip and has been used in this capacity as an offline replacement for third-party debug tools. It is 64-bit clean and is ready for the largest of designs given that it is run on a workstation with a sufficient amount of physical memory.
The file formats LXT2 and VZT have been specifically designed to cope with large, real-world designs, and AET2 and FST have been designed to handle extremely large designs efficiently.
GTKWave as a collection of binaries is comprised of two interlocking tools: the gtkwave viewer application and rtlbrowse. In addition, a collection of helper applications are used to facilitate such tasks as file conversions and simulation data mining. They are intended to function together in a cohesive system although their modular design allows each to function independently of the others if need be:
- binary gtkwave is the waveform analyzer and is the primary tool used for visualization. It provides a method for viewing simulation results for both analog and digital data, allows for various search operations and temporal manipulations, can save partial results (i.e., “signals of interest”) extracted from a full simulation dump, and finally can generate PostScript and FrameMaker output for hard copy;
- rtlbrowse is used to view and navigate through RTL source code that has been parsed and processed into a stems file by the helper application vermin. It allows for viewing of RTL at both the file and module level and when invoked by gtkwave, allows for source code annotation.
Various dumpfile formats are supported, e.g.:
VCD (Value Change Dump): an industry standard file format generated by most Verilog simulators and is specified in IEEE-1364. This is the slowest of the formats for the viewer to process and requires the most memory, however the format is ubiquitous and almost all tools support it, which is why native support remains;
LXT and LXT2 (InterLaced eXtensible Trace and InterLaced eXtensible Trace Version 2): an optimized format utilizing interleaved back pointers and value changes. Processing LXT files is faster than VCD. Version 2 is a block-based variant of LXT that allows for greater compression and access speeds than can be achieved with LXT. Version 2 allows random-access at the block level and also optionally allows partial loading of blocks for even faster operation.
VZT (Verilog Zipped Trace): on outgrowth of LXT2 as it is also block based, however it employs a different heuristic for compression that allows for file sizes much smaller than most other dumpfile formats including commercial ones. VZT file write performance is the slowest of all the formats, however reading them can be extremely fast on multiprocessor machines as the file format has been designed such that the reader was able to be parallelized;
GHW (GHDL Wave file): this is a nine state (“01XZHUWL-”) file format written by the VHDL simulator GHDL.
Others dumpfile formats supported are: AET2 (All Events Trace Version 2), IDX (VCD Recoder Index File), FST (Fast Signal Trace), VPD (VCD Plus Dump, generated by Synopsys VCS), WLF (Wave Log File, generated by ModelSim) and FSDB (Fast Signal Database).
For Verilog, GTKWave allows users to debug simulation results at both the net level by providing a bird's eye view of multiple signal values over varying periods of time and also at the RTL level through annotation of signal values back into the RTL for a given timestep.
Terms of license are GNU GPL. GTKWave is separately developed/maintained tools but associated with gEDA suite.
[iceslideshow theme="simple" active="1" directory="images/Category/Analyze-and-Visualize/"] [iceslide caption="This is a caption" link="#1"] GTKWave1.png [/iceslide] [iceslide caption="This is a caption" link="#2"] GTKWave2.png [/iceslide] [iceslide caption="This is a caption" link="#3"] GTKWave3.png [/iceslide] [/iceslideshow]