Vhdl GHDL的VCD输出中缺少信号

Vhdl GHDL的VCD输出中缺少信号,vhdl,ghdl,vcd,Vhdl,Ghdl,Vcd,我正在一本VHDL书中尝试一个简单的案例问题。正如您可以从源代码中理解的,它根据输入范围设置输出值。然而,当我使用GHDL运行测试台时,我无法观察我的输入,x 这是因为x是字符类型吗?我应该在GHDL问题页面()上询问吗 源代码(q4_case.vhd): 版本信息: ghdl -v GHDL 0.35 (tarball) [Dunoon edition] Compiled with GNAT Version: GPL 2017 (20170515-63) mcode code genera

我正在一本VHDL书中尝试一个简单的案例问题。正如您可以从源代码中理解的,它根据输入范围设置输出值。然而,当我使用GHDL运行测试台时,我无法观察我的输入,
x

这是因为
x
字符类型吗?我应该在GHDL问题页面()上询问吗

源代码(q4_case.vhd):

版本信息:

ghdl -v
GHDL 0.35 (tarball) [Dunoon edition]
 Compiled with GNAT Version: GPL 2017 (20170515-63)
 mcode code generator
Written by Tristan Gingold.

Copyright (C) 2003 - 2015 Tristan Gingold.
GHDL is free software, covered by the GNU General Public License.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
VCD输出文件的开头如下所示。如您所见,
x
未被处理,我无法通过使用GTKWave查看来观察
x

VCD的一部分:

$date
  Thu Feb 08 09:19:40 2018
$end
$version
  GHDL v0
$end
$timescale
  1 fs
$end
$comment x is not handled $end
$var integer 32 ! character_class $end
$var reg 1 " clk $end
$scope module dut $end
$comment x is not handled $end
$var integer 32 # character_class $end
$upscope $end
$enddefinitions $end
#0
b1 !
1"
b1 #
#10000000
...
...

我认为您的问题不在于GHDL本身,而在于它使用的是记录波形。维基百科页面上说

1996年,IEEE标准1364-1995定义了标准的四值VCD格式以及Verilog硬件描述语言


这四个值分别是0、1、X和Z。

我认为您的问题不在于GHDL本身,而在于它使用记录波形的。维基百科页面上说

1996年,IEEE标准1364-1995定义了标准的四值VCD格式以及Verilog硬件描述语言


这四个值是0、1、X和Z。

我没有正确检查GHDL文档是我的错。正如在中所写的(Matthew指出),VCD格式只支持
std.standard
中的
bit
bit_向量。用VCD文件无法观察
字符
类型信号


正如Brain所建议的,将VCD转换为GHW格式解决了这个问题。在这种情况下,GKTW显示GHW文件没有任何问题。

我没有正确检查GHDL文档是我的错。正如在中所写的(Matthew指出),VCD格式只支持
std.standard
中的
bit
bit_向量。用VCD文件无法观察
字符
类型信号



正如Brain所建议的,将VCD转换为GHW格式解决了这个问题。在这种情况下,GKTWave显示GHW文件没有任何问题。

您使用的DC3和DEL都会显示gtkwave错误,这些值中的任何一个都会导致gtkwave崩溃转储文件类型fst和GHW。gtkwave似乎正在使用带内信令来存储x的值字符串。作为解决方法,您可以添加
信号字符:整数范围0到255和赋值
char\u pos VCD支持字符吗?如果不支持,(a)使用GHW,或者从VCD支持的字符转换为某种(整数?)。@user1155120我认为,问题与gtkwave无关,因为VCD文件中缺少信号信息。而且,在我的情况下,gtkwave没有崩溃。“我理解变通的方法,谢谢你。”“布莱恩德鲁蒙德:是的,你说得对。我错过了VCD文件支持的类型列表。它列在那里:并且VCD不支持字符。我切换到GHW,能够在gtkwave中观察到信号。我现在正在编辑我的问题。谢谢。看起来您正在使用的DC3和DEL都是gtkwave bug,这两个值中的任何一个都会导致gtkwave崩溃转储文件类型fst和ghw。gtkwave似乎正在使用带内信令来存储x的值字符串。作为解决方法,您可以添加
信号字符:整数范围0到255和赋值
char\u pos VCD支持字符吗?如果不支持,(a)使用GHW,或者从VCD支持的字符转换为某种(整数?)。@user1155120我认为,问题与gtkwave无关,因为VCD文件中缺少信号信息。而且,在我的情况下,gtkwave没有崩溃。“我理解变通的方法,谢谢你。”“布莱恩德鲁蒙德:是的,你说得对。我错过了VCD文件支持的类型列表。它列在那里:并且VCD不支持字符。我切换到GHW,能够在gtkwave中观察到信号。我现在正在编辑我的问题。谢谢。是的,你说得对。此外,它还能够记录标准逻辑。我可以用VCD录制一个标准逻辑信号。我想,它在维基百科页面上被称为扩展VCD。我发现VCD格式允许的可能类型写在那里:。字符不受支持,我使用GHW格式录制了字符类型的信号。现在编辑我的问题…哦,等等!字符在标准中,对吗?根据Hmm,它应该由GHDL和VCD支持。我对GHDL.readthedocs.io/en/latest/using/Simulation.html的理解是,只有这些类型(碰巧在std.standard中)才受支持:bit和bit_vectorI将修复文档文件中错误的缩进。@paebells我看到了您的修复,现在看起来更好了,谢谢。是的,你说得对。此外,它还能够记录标准逻辑。我可以用VCD录制一个标准逻辑信号。我想,它在维基百科页面上被称为扩展VCD。我发现VCD格式允许的可能类型写在那里:。字符不受支持,我使用GHW格式录制了字符类型的信号。现在编辑我的问题…哦,等等!字符在标准中,对吗?根据Hmm,GHDL和VCD应该支持它。我对GHDL.readthedocs.io/en/latest/using/Simulation.html的理解是,只有这些类型(恰好在std.standard中)才受支持:bit和bit_vectorI将修复文档文件中错误的缩进。@paebells我看到了您的修复,现在看起来更好了,谢谢。VCD(值更改转储)格式是Verilog标准的一部分。因此,仅支持Verilog类型。VCD(值更改转储)格式是Verilog标准的一部分。因此,仅支持Verilog类型。
ghdl -a q4_case.vhd

ghdl -a q4_case_tb.vhd

ghdl -r q4_case_tb --vcd=q4_case.vcd
ghdl -v
GHDL 0.35 (tarball) [Dunoon edition]
 Compiled with GNAT Version: GPL 2017 (20170515-63)
 mcode code generator
Written by Tristan Gingold.

Copyright (C) 2003 - 2015 Tristan Gingold.
GHDL is free software, covered by the GNU General Public License.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$date
  Thu Feb 08 09:19:40 2018
$end
$version
  GHDL v0
$end
$timescale
  1 fs
$end
$comment x is not handled $end
$var integer 32 ! character_class $end
$var reg 1 " clk $end
$scope module dut $end
$comment x is not handled $end
$var integer 32 # character_class $end
$upscope $end
$enddefinitions $end
#0
b1 !
1"
b1 #
#10000000
...
...