Modelsim 和 GHDL 无法将 vhdl 用户定义的信号类型转储到 vcd 中?

Tar*_*eeb 5 signals vhdl modelsim ghdl

我正在尝试从由 modelsim 或 ghdl 执行的模拟中转储内部信号。一切正常使用:

对于modelsim,添加vhdl源,然后编译:

vsim -novopt work.uut_testbench
vcd file ../uut.vcd;
vcd limit 50000000;
vcd add -r /uut_testbench/uut_core/*;
run 6000
quit -sim
Run Code Online (Sandbox Code Playgroud)

对于 GHDL

ghdl -i --ieee=synopsys --warn-no-vital-generic --workdir=work --work=work ./uut*.vhd 
ghdl -m --ieee=synopsys --warn-no-vital-generic --workdir=work --work=work uut_testbench
./uut_testbench --stop-time=6000ns --vcd=../uut.vcd
Run Code Online (Sandbox Code Playgroud)

我可以看到模拟信号,但不是全部。信号定义为

Type InternalState is (Idle,Valid,Stalled);
Signal sState,sPrevState :InternalState;
Run Code Online (Sandbox Code Playgroud)

从 vcd 中省略。这种行为对于modelsim 和ghdl 很常见。

我可以在 ghdl 生成的 vcd 中看到以下行

$comment sstate is not handled $end
Run Code Online (Sandbox Code Playgroud)

Modelsim 只是悄悄地忽略了这些信号

有解决方法吗?选择?

小智 2

尝试 Tony Bybell 的 gtkwave,您可以在其中指定值的枚举替换(gtkwave 手册中的“快速入门”、“别名文件”和“附加外部反汇编程序”)。Gtkwave 还与 ghdl 的本机波形格式 (ghw) 兼容。请参阅SourceForge 上的 Gtkwave,其中有一个手册链接,以及下载 W32 和 Mac 应用程序二进制文件的链接。它也应该可以通过任何 Linux 发行版获得。