I am also aware of the following limitations of VCD:
Unpacked arrays and automatic variables are not dumped.
I could not find any documentation in the LRM on what bit_select_index and [ msb_index : lsb_index ] are for. There is only an example using the range:
From 21.7.2.4 4-state VCD file format example:
$var reg 32 (k accumulator[31:0] $end
It seems like a bit vector, but it is not crystal clear from whether it is an packed or unpacked array.
Extended VCD file seems to take a different approach to indexes:
The standard for VCD and extended VCD was established by attempting to emulate the behavior of underspecified tools.
Signals in VCD are always packed vectors. Tools have the option of dumping signals as individual bits using bit_select_index or as an entire range [ msb_index : lsb_index ]. The choice between dumping individually or keeping them together depends on how optimizations affect the signal’s representation.
The size in an eVCD port must be either 1 or [ msb_index : lsb_index ]. You cannot dump port bits individually.
So I understand that the standard became whatever most tools did without clarifying the different interpretations .
Tools have the option of dumping signals as individual bits using bit_select_index or as an entire range [ msb_index : lsb_index ]
Now I see this also in the LRM, thanks:
691:
c) The individual bits of vector nets can be dumped individually.
You cannot dump port bits individually.
Suddenly I noticed that too :
698:
The extended VCD format does not support a mechanism to dump part of a vector. For example, bits 8 to 15 ([8:15]) of a 16-bit vector cannot be dumped in VCD file; …
I still have the following doubts:
Some waveform viewers use [4:-2] to specify the components of a fixed-point number that has the size of 7 bits. Even though this dumps all the bits, it does not violate the VCD spec, right?
Does the eVCD syntax only apply to ports? (even the LRM states only the following differences in the introduction:)
… The following two types of VCD files exist:
a) 4-state: to represent variable changes in 0, 1, x, and z with no strength information.
b) Extended: to represent variable changes in all states and strength information.
In the section about creating an extended VCD file, the LRM says
The$dumpportstask shall be used to specify the name of the VCD file and the ports to be dumped. So yes, it only applies to ports.
The conventions tools use to display fixed point notation is independent of VCD and a tool specific feature. This Siemens sponsored public forum is not for discussing tool specific issues. Please read your tool’s User Manual or contact your tool vendor for support.