Я пытаюсь сбрасывать внутренние сигналы из симуляции, выполняемой либо с помощью modelsim, либо ghdl. Все отлично работает с помощью:Modelsim и GHDL не могут сбросить vhdl пользовательские типы сигналов в vcd?
Для 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 просто пропускает эти сигналы тихо
Есть обходной путь? Альтернатива?
Спасибо, я уже использую gtkwave. Проблема, которую я вижу, не со зрителем, а с симулятором, который игнорирует эти сигналы. Я попробую собственные форматы волны; ghw и wlf. Но AFAIK, формат vcd поддерживает такие сигналы. –
Можете ли вы автоматически сбросить все перечисления из Verilog, а затем повторно использовать их в gtkwave? –