我试图通过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
对于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
我可以看到模拟信号,但不是全部.信号定义为
Type InternalState is (Idle,Valid,Stalled);
Signal sState,sPrevState :InternalState;
从vcd中省略.这种行为对modelsim和ghdl很常见.
我可以在ghdl生成的vcd上看到以下行
$comment sstate is not handled $end
Modelsim只是静静地省略了这些信号
有解决方法吗?另类?
最佳答案 试试Tony Bybell的gtkwave,你可以在其中指定值的枚举替换(快速启动,别名文件和附加外部反汇编程序下的gtkwave手册). Gtkwave还兼容ghdl的原生波形格式(ghw).请参阅
Gtkwave on SourceForge,该手册有一个链接,您可以链接到W32和Mac应用程序的下载二进制文件.它也应该可以通过任何Linux发行版获得.