Перейти к содержанию

    

Верификация больших проектов

Здравствуйте. Впервые делаю большой проект, где целевая ПЛИС - Virtex-7.

 

Еще даже не дописал проект до конца, но уже есть проблема - оперативной памяти компьютера уже не хватает.

 

Сейчас я вывожу нужные сигналы на Waveform в Modelsim. Уже и так оставил только один основной блок, но дальше резать нельзя - у этого блока есть элементы, работа которых зависит от обратной связи между друг другом.

 

Как вообще верифицируются большие проекты? Может есть более экономные (с точки зрения использования RAM компьютера) методы моделирования, чем отрисовка Waveform?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Сейчас я вывожу нужные сигналы на Waveform в Modelsim. Уже и так оставил только один основной блок, но дальше резать нельзя - у этого блока есть элементы, работа которых зависит от обратной связи между друг другом.

 

Как вообще верифицируются большие проекты? Может есть более экономные (с точки зрения использования RAM компьютера) методы моделирования, чем отрисовка Waveform?

Это RTL симуляция?

Если так, то можно перейти от отладки "сигналов" к отладке прохождения "данных" в проекте. Зачем Вам смотреть сигналы на Waveform? Скидывайте данные в файл и потом обрабатывайте их любыми софтовыми инструментами. Ну и входные данные тоже читайте из файла. При этом не нужна перекомпиляция проекта. просто меняете файл и делаете "Сброс" и "Пуск"...

И еще двойной комлект параметров. Один для дебага, другой для релиза. Скажем если SPI для релиза на 1 Мгц, а тактовая 100 Мгц, то для дебага можно отлаживать SPI на 25 или 50 Мгц. И так везде где можно поскрести...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Как вообще верифицируются большие проекты? Может есть более экономные (с точки зрения использования RAM компьютера) методы моделирования, чем отрисовка Waveform?

Что в Вашем понимании есть процесс "верификации"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Что в Вашем понимании есть процесс "верификации"?

В общем и целом, мне надо как-то убедиться, что при заданых входных воздействиях я получу на выходе получится то, что ожидается (ожидаемый результат извесетн из расчетов или моделирования, например, в Матлабе).

 

При этом было бы неплохо знать состояния не только выхода, но промежуточных регистров, чтобы понимать где ошибки.

 

Это RTL симуляция?

Если так, то можно перейти от отладки "сигналов" к отладке прохождения "данных" в проекте. Зачем Вам смотреть сигналы на Waveform? Скидывайте данные в файл и потом обрабатывайте их любыми софтовыми инструментами. Ну и входные данные тоже читайте из файла. При этом не нужна перекомпиляция проекта. просто меняете файл и делаете "Сброс" и "Пуск"...

И еще двойной комлект параметров. Один для дебага, другой для релиза. Скажем если SPI для релиза на 1 Мгц, а тактовая 100 Мгц, то для дебага можно отлаживать SPI на 25 или 50 Мгц. И так везде где можно поскрести...

Да, RTL.

 

Тоже думал по поводу записи в файл.

 

А где можно почитать о том, как заставить Modelsim ничего не рисовать, а сразу писать в файлики содержимое регистров? У меня что-то так не получалось.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
А где можно почитать о том, как заставить Modelsim ничего не рисовать, а сразу писать в файлики содержимое регистров? У меня что-то так не получалось.

Есть консольный режим, но для потребления памяти это мало помогает, увы.

И что оно будет в файлики писать? Всё подряд??? Нет, так не пойдет, можно без проблем самому создавать файлы и писать в них важные данные.

 

Можно на лету проверять/сверять/сопоставлять результаты непосредственно в тестбенче. Я таковые пишу на Python, иногда на SystemVerilog, и не надо ничего сохранять - проверка на лету.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Можно на лету проверять/сверять/сопоставлять результаты непосредственно в тестбенче. Я таковые пишу на Python, иногда на SystemVerilog, и не надо ничего сохранять - проверка на лету.

А по каким источникам вы изучали это кунг-фу, если не секрет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
А по каким источникам вы изучали это кунг-фу, если не секрет?

Присоединяюсь к вопросу. Откуда вы это узнаете ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
А по каким источникам вы изучали это кунг-фу, если не секрет?

http://www.testbench.in

 

Хотя я использую http://cocotb.readthedocs.io/en/latest/introduction.html но это не всегда возможно, некоторые проекты не допускают подобные окружения для верификации

 

И да, то что делаете Вы, это отладка. Повторюсь, Вы уверены что слово "верификация" понимается верно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветству.

 

Тоже думал по поводу записи в файл.

 

А где можно почитать о том, как заставить Modelsim ничего не рисовать, а сразу писать в файлики содержимое регистров? У меня что-то так не получалось.

 

Modelsim и так пишет в файл все что вы хотите потом увидеть. И это без добавления сигналов в wave. Cмотрите команду 'log'.

Например "log -r /*" сделает вам во время ночной симуляции дамп всего что было. Потом уж утречком сможете загрузить этот .wlf файл и посмотреть что и как происходило. Но это как раз для дебага.

 

Верифицировать результат работы все же лучше по golden-referens модели. Ну а как состыковать sim с моделью сейчас есть куча вариантов. Начиная от логирования нужных переменных в RTL через запись в файл (fopen, fwrite, ...), или релизация golden-referens на несинтезируемом подмножестве непосредственно в RTL, заканчивая стыковкой через VPI, DPI, PLI,.. c кодом модели на C/C++, или через cosimulation с тем же Matlab например.

 

Удачи! Rob.

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Verilog позволяет как читать, так и писать в файлы (hex). Если нет времени на разборки высшего уровня, то все можно привести только к чтени и записи. Смена тестовых последовательностей через скрипт при запуске самого verilog-a.

Я использую ncsim, так что unzip через tcl и на выходе только лог и дополнительная информация если тест провалился (с местом падения, чтобы делать дамп с этой точки).

Но даже симуляция не заменит прототипирования на fpga, на входе/выходе тот же самый тестовый набор (дизай запускается, читает и выдает результат в ddr). День тестов заменяет год симуляций.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Тоже думал по поводу записи в файл.

А где можно почитать о том, как заставить Modelsim ничего не рисовать, а сразу писать в файлики содержимое регистров? У меня что-то так не получалось.

Хотите поговорим об этом по скайпу?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Verilog позволяет как читать, так и писать в файлы (hex)

Что имеется ввиду под hex? Встречал у некоторых ПЛИСовиков заблуждение что Verilog работает только с файлами hex-формата и удивлялись когда я выводил в десятичной форме, а то и вовсе произвольного формата текст, и не только выводил но и загружал. Надеюсь речь не об этом, потому что мне неведомо откуда они взяли эту чушь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
http://www.testbench.in

 

Хотя я использую http://cocotb.readthedocs.io/en/latest/introduction.html но это не всегда возможно, некоторые проекты не допускают подобные окружения для верификации

 

И да, то что делаете Вы, это отладка. Повторюсь, Вы уверены что слово "верификация" понимается верно?

Спасибо, посмотрю.

 

Возможно, и не верно. Ну тут как бы вопрос не в определениях. То, что я хочу сделать - вроде описал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Что имеется ввиду под hex? Встречал у некоторых ПЛИСовиков заблуждение что Verilog работает только с файлами hex-формата и удивлялись когда я выводил в десятичной форме, а то и вовсе произвольного формата текст, и не только выводил но и загружал. Надеюсь речь не об этом, потому что мне неведомо откуда они взяли эту чушь.

 

Я сильно далек от ПЛИС, только для прототипирования ASIC, но вообще да, без разницы в чем писать и читать (привычка с hex работать).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация