Могу ли я захватить вывод симулятора на консоль в моем тестовом стенде? - PullRequest
0 голосов
/ 31 октября 2018

У меня есть тестовый стенд для тестирования моего устройства VHDL (DUT), но часть вывода отладки DUT представляет собой сообщение ASSERT / REPORT на консоль, которое я хотел бы проверить на корректность, но не могу изменить DUT. Единственный способ, которым я могу придумать, - это постобработка выходного файла журнала.

Есть ли способ захвата вывода консоли в тестовом стенде, чтобы я мог непосредственно проверить вывод DUT?

1 Ответ

0 голосов
/ 01 ноября 2018

Я делаю это как часть тестового стенда. Однако вместо Assert я использую оповещения OSVVM, ведение журнала и печать. OSVVM есть как на osvvm.org, так и на github.

Вместо Assert я использую AffirmIf для самопроверки / проверки результатов. Я использую AlertIf для проверки параметров.

Шаг 1 - получить OSVVM. Когда у вас есть код, скомпилируйте его, используя скрипт. В Mentor или Aldec запустите скрипт, выполнив:

vlib osvvm
vmap osvvm osvvm
do $PATH_TO_OSVVM/osvvm.do $PATH_TO_OSVVM

Используйте VHDL-2008 и включите все OSVVM в свою программу, выполнив:

library osvvm;
  context osvvm.OsvvmContext;

Тогда, а не:

assert Data /= expected report "..." severity error;

Do:

AffirmIf(Data = Expected, "...") ; 

Печать assert и AffirmIf / AlertIf. Однако преимущество AffirmIf / AlertIf заключается в том, что внутренне он хранит счетчик ошибок и вы можете получить ошибку при прохождении в конце теста, выполнив:

ReportAlerts;

Следующее преимущество OSVVM AffirmIf / AlertIf / Log / Print заключается в том, что если вы хотите получить результаты в файле, вы просто делаете:

TranscriptOpen("./results/Test1.txt");

Если вы хотите печатать на экране и в файле, также выполните:

SetTranscriptMirror(TRUE);

Это должно начать тебя. Остальное я оставлю за руководствами пользователя. Начните с изучения как руководства пользователя пакета AlertLog, так и руководства пользователя пакета стенограммы.

...