2012-03-11 2 views
4

Я пытаюсь сбрасывать внутренние сигналы из симуляции, выполняемой либо с помощью 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 просто пропускает эти сигналы тихо

Есть обходной путь? Альтернатива?

ответ

2

Попробуйте использовать gtkwave Tony Bybell, в котором вы можете назначить подмену перечисления для значений (руководство gtkwave в разделе «Быстрый старт», «Файлы псевдонимов» и «Присоединение внешних дизассемблеров»). Gtkwave также совместим с собственным форматом сигнала ghdl (ghw). См. Gtkwave on SourceForge, есть ссылка для руководства и ссылки для загрузки двоичных файлов для W32 и Mac. Он также должен быть доступен через любой дистрибутив Linux.

+0

Спасибо, я уже использую gtkwave. Проблема, которую я вижу, не со зрителем, а с симулятором, который игнорирует эти сигналы. Я попробую собственные форматы волны; ghw и wlf. Но AFAIK, формат vcd поддерживает такие сигналы. –

+0

Можете ли вы автоматически сбросить все перечисления из Verilog, а затем повторно использовать их в gtkwave? –

0

Ваш симулятор не знает, как представить свой тип InternalState с помощью скалярных или векторных переменных, возможных в файле дампа изменения значения. Если вы хотите использовать, например, вектор std_ulogic для представления ваших состояний, они будут отображаться в файле VCD. Хороший инструмент просмотра осциллограмм позволяет вам заменить кодировку состояния именами состояний. Gtkwave поддерживает это, как уже указывал пользователь1155120. IEEE Std 1800-2012 описывает в разделе 21.7 файлы VCD и их ограничения.

Смежные вопросы