Воспроизвести чип Am2904 на Верилоге нетрудно. Насколько он соотвествует реальности, это другой вопрос. Надо каким-то образом сравнить его с реальныи чипом. Для этого я собрал вот такой стенд на базе Ардуино Мега.
Если вкратце: на ардуине пишется программа на Си, которая "считывает" поведение реальной микросхемы. Подаёт определённые значения на входы, щелкает тактовым сигналом CLK, считывает состояние выходов. Эти данные (тестовые вектора) печатаются в текстовом виде на консольном порту. Собственно, на этом функция стенда заканчивается.
Затем, уже на компьютере, тестовые вектора преобразуются в текст на Верилоге, и используются как тест для проверки Верилог-реализации этого же чипа. Расхождений не должно быть.
А примерчик потом покажете как-нибудь? Общая-то мысль понятна, но вот детали... Как эту "определённую последовательность" получить, что бы протестировать всю схему? Ведь не счётчик же тактовый туда подаётся. Вот есть у меня, например, модуль. А в нём State Machine (а лучше несколько). И есть управляющие сигналы. А ещё есть данные (несколько потоков). И, например, состояние State Machine_A зависит не только от внешних сигналов управления, но и от приходящих данных по порту А, а так же от состояния State_Machine_B. А состояние State_Machine_B зависит от данных порта B и состояния State_Machine_A. (лучше бы, конечно, привести пример с кодом, но сейчас на скору руку я это не сделаю). И вот как в таком случае правильно TestBench сделать. Потому что у меня обычно получается, что в симуляторе я отлавливаю многое, но далеко не всё. И потом "глюки" приходится отлавливать уже на работающем железе, что очень долго и мучительно. Ну и если что-нибудь из дельной литературы сможете посоветовать, где такие вопросы затрагиваются и где описан сам процесс верификации буду весьма признателен, как обычно.
еще можно прогу с разными командами нагенерить (кроме стоповых), запустить на исполнение на какое то время и посчитать хэш памяти и состояния проца и сравнить со своим
Чтобы два раза не вставать - большое спасибо за рекомендацию и прошивку LinkIT'а. Страшно полезная штука оказалась - единственный 32-х битный компьютер в хозяйстве! (пригодился для компиляции MoscowML'я).
Книжек не припомню, честно говоря. Но подход вполне прямолинейный: пишем тестики на Си, которые в соответствии с даташитом меняют внутреннее состояние чипа. Задействуем максимально возможное количество комбинаций сигналов и состояния. Накапливаем полученные тестовые вектора (входные и выходные сигналы). Потом эти тестовые вектора применяем к модулю, написанному на Верилоге.
LinkIt отличный модуль, да. Сейчас появляются новые аналогичные платки: Omega2, Vocore2.
> LinkIt отличный модуль, да. Сейчас появляются новые аналогичные платки: Omega2, Vocore2.
Ну теперь-то у меня аппетит возрос - желательно либо что-то ультра лёгкое, работающее от типичного батарейного блока неделю (без нагрузки), либо ОЗУ >=512 метров + желательно 2 ядра примерно той же цены и размеров. 32 разряда, скорее даже плюс.
no subject
no subject
Затем, уже на компьютере, тестовые вектора преобразуются в текст на Верилоге, и используются как тест для проверки Верилог-реализации этого же чипа. Расхождений не должно быть.
no subject
no subject
no subject
no subject
no subject
Чтобы два раза не вставать - большое спасибо за рекомендацию и прошивку LinkIT'а. Страшно полезная штука оказалась - единственный 32-х битный компьютер в хозяйстве! (пригодился для компиляции MoscowML'я).
no subject
LinkIt отличный модуль, да. Сейчас появляются новые аналогичные платки: Omega2, Vocore2.
no subject
Ну теперь-то у меня аппетит возрос - желательно либо что-то ультра лёгкое, работающее от типичного батарейного блока неделю (без нагрузки), либо ОЗУ >=512 метров + желательно 2 ядра примерно той же цены и размеров. 32 разряда, скорее даже плюс.
no subject
no subject
no subject
no subject
Иначе трудно убедиться, что текст на Верилоге правильный.