From: <by...@nc...> - 2013-12-12 18:13:06
|
"To dump an array word Icarus needs to escape the name so it is compatible with the VCD dump format. That's what \data[0][31:0] is. It is the zeroth? 32-bit word of the data array. Because an escaped name and an array name could now conflict Icarus produces the warning. It would be best if it could check for an escaped identifier conflict and only print a message when there is a problem, but as I remember this was not possible." ...I don't think that there's a need to escape the names. Both VCS (followed by fsdb2vcd) and CVC emit the name directly with no problems. Cut and paste example shown below: $var wire 5 `' IC_DrAd0 [3][4:0] $end $var wire 5 a' IC_DrAd0 [2][4:0] $end $var wire 5 b' IC_DrAd0 [1][4:0] $end $var wire 5 c' IC_DrAd0 [0][4:0] $end I realize the VCD spec doesn't define this, but I've had to fold in a lot of these kinds of extensions into gtkwave over the years as other tools generate these constructs. The escapes can cause save file incompatibilities (missing signals) when trying to simulate on iverilog versus VCS. Over time, SV constructs likely will cause further things added to the VCD files. AFAIK, the VCD part of the 1364 spec hasn't updated at all since Verilog-XL. CVC gets around possible incompatibilities by adding a +dump_arrays plusarg (and no, you don't have to loop on each array element either). -Tony |