Изучение VHDLОператоры assert и report.
Эти операторы были введены в язык VHDL для выявления ошибок моделирования и сообщения о них на консоль. В методике "Hallo, World" этот оператор активно применяется. У оператора ловушки assert следующий синтаксис:
\оператор assert \::= assert \булевское выражение\
[report \строка сообщения\][severity \выражение\];
Здесь \булевское выражение\ – проверка какого–либо условия правильности моделирования, которое равно false, если найдена ошибка и true, если моделирование верно;
\строка сообщения\ - выражение типа string, представляющее строку сообщения о причине ошибки. Например, оператор
assert a(i)='0'
report "бит " & integer'image(i) &" не равен 0";
вызовет выдачу на экран дисплея сообщения:
# : ERROR : бит 1 не равен 0
# : Time: 2000 ns, Iteration: 0, TOP instance.
если a(1) ? 0 на 2-й микросекунде моделирования. Здесь атрибут integer'image возвращает строку, в которой представлено значение целого i в читаемом виде. Выражение \выражение\ имеет предопределенный тип severity_level, состоящий из элементов note, warning, error и failure. Значение выражения соответствует уровню критичности найденной ошибки и при самом высоком уровне failure моделирование останавливается. Например, если требуется остановить моделирование, можно записать оператор:
assert 1/=1
report "конец моделирования " severity failure;
Если не нужно ловить ошибку, а только вывести сообщение о ходе моделирования, то применяют оператор сообщения с синтаксисом:
report \строка сообщения\ [severity \выражение\];
Предыдущий пример можно переписать как:
report "конец моделирования " severity failure;