Value Change Dump

Value change dump ( VCD) is an ASCII-based format for so-called dump files that are generated, for example, of an EDA tool. The standard VCD format with tetravalent logic was adopted in 1995 in connection with the Verilog hardware description language as IEEE Standard 1364-1995. An extension of the VCD format, six years later in the form of IEEE Standard 1364-2001 also supports the recording of signal strength and direction. The simple and compact structure of the VCD format made ​​it the universal and inevitable file format for non- Verilog tools, such as VHDL, the free simulator GHDL and various kernel tracer.


The VCD file has a header (header ) that contains a timestamp, the simulator version number and a time scale definition. Next there is a variable definition area and a change in value range. The regions are not explicitly separated from each other, but can be distinguished by the keywords.

The variable domain contains display information and the list of instantiated signals. Each variable is assigned for use in the range of change an arbitrary compact ASCII identifier. The display type setting follows the Verilog - concept and includes the types module, task, function, and fork.

The change range includes a series of time-sequential changes of value of the signals of the simulation model.


VCD keywords are marked with a $. Basically derive keywords in a section which end is terminated by the keyword $.


An example of a VCD file:

$ timescale 1ps $ end $ scope module logic $ end $ var wire 8 # data $ end $ var wire 1 USD data_valid $ end $ var wire 1 % s $ end $ var wire 1 & rx_en $ end $ var wire 1 ' TX_EN $ end $ var wire 1 ( empty $ end $ var wire 1 ) underrun $ end $ $ upscope end $ $ enddefinitions end # 0 b10000001 # $ 0 1% 0 & 1 ' 0 ( 0) # 2211 0 ' # 2296 b0 # $ 1 # 2302 $ 0 # 2303 The code above defines seven signals using $ var:

$ var type Bit ID Name

The ID is then used in the change part for identification, the $ $ enddefinitions begins after the end keyword. The range is based on timestamps (S ) that begin with # and the simulation time (t ) using the scale definition ( D) and define, for example, D = 1 ns, S = 500 → t = 500 ns.

After each time stamp only the values ​​and the associated signal are listed, which change at the time of the punch.

The change is described by the following line:

New_value ID

The blank space or the space, however, must be omitted (see code example above).

All VCD tokens are, however, defined by a white space.