|
modelsim, testbench scripts., Нужны автоматические тесты для процессора |
|
|
|
Sep 24 2011, 11:44
|
Частый гость
 
Группа: Участник
Сообщений: 101
Регистрация: 3-09-10
Пользователь №: 59 274

|
Добрый день, уважаемые гуру. Постараюсь описать свою проблему в кратце: 1) Есть процессор, который находится в разработке и куча программ для него. Программы и начальные значения регистров я забиваю прямо в VHDL коде. Затем запускаю на моделсиме фактически вручную смотрю что происходит. 2) Проблемам в том, что если в дизайн процессора были внесены изменения, мне приходится вручную же прогонять все тесты. Сначала запускаю самописный компилятор, который генерит программу в hex виде (вернее он создает прямо VHDL код), затем вставляю полученный VHDL я вставляю в основной исходник процессора (опять же вручную), запускаю моделсим и кликаю по тактам до тех пор пока программа не завершится. Затем проверяю регистр R0, в нем у меня обычно хранится результат.
Подскажите пожалуйста, как лучше организовать систему тестов. Может, поделитесь скриптами (все-равно на чем, но лучше конечно на питоне). Я не очень большой опыт имею работы с моделсимом. Если можно, опишите пожалуйста в деталях, как лучше организовать такую систему (или где посмотреть). То есть я конечно в принципе догадываюсь как такое сделать, но мне не хочется писать все с нуля, если уже что-то подобное существует. Спасибо!
Сообщение отредактировал FROL_256 - Sep 24 2011, 11:45
|
|
|
|
|
 |
Ответов
(1 - 11)
|
Sep 24 2011, 11:59
|
Частый гость
 
Группа: Участник
Сообщений: 101
Регистрация: 3-09-10
Пользователь №: 59 274

|
Цитата(vugluskr @ Sep 24 2011, 15:53)  я бы рекомендовал очень серьезно пересмотреть вообще концепцию функциональной верификации и взять, к примеру, концепцию и библиотеки OVM. Их нужно изучить, потратить на это время, но поверьте, не пожалеете потом. Что же касается ручного вбивания инициализирующих значений регистров, по моему мнению, логичнее было бы использовать в начале тестбенча (если он systemverilog) $readmemh() и ему подобные встроенные функции и вычитывать значения из внешнего файла. Ну да, хотелось бы что-то более-менее серьезное использовать. Спасибо, посмотрим OVM. >>тестбенча (если он systemverilog) $readmemh() У меня только VHDL, но суть понял, да.
|
|
|
|
|
Sep 24 2011, 12:03
|

High speed digital design
  
Группа: Свой
Сообщений: 413
Регистрация: 6-10-09
Пользователь №: 52 786

|
Цитата(FROL_256 @ Sep 24 2011, 15:59)  Ну да, хотелось бы что-то более-менее серьезное использовать. Спасибо, посмотрим OVM. >>тестбенча (если он systemverilog) $readmemh() У меня только VHDL, но суть понял, да. ссылки по OVM: 1, 2, 3, 4рекомендуемая литература: step-by-step functional verification with systemverilog and ovm Open Verification Methodology Cookbook p.s. рано или поздно вы всеравно перейдете на systemverilog
--------------------
|
|
|
|
|
Sep 26 2011, 11:43
|
Гуру
     
Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640

|
по поводу языков и платформ: спору нет верилог (а особенно систем верилог с его OVM или VMM) более удобный язык, чем VHDL но и на VHDL можно много всякого разного написать - советую посмотреть на LEON от Гейслера www.gaisler.com (там искать GRLIB или LEON), из мелочей - он там даже S-recordы напрямую VHDL-ем читает, а по крупному это пример с тестбенчами как проц написать по поводу OVM - я так и не сумел асершин-бэйсед-рандом-констрейнед методологию к верификации процев применить. все-таки на случайном коде тяжело осмысленный, верифицируемый результат получить, а констрейнить код, чтобы что-то осмысленное получалось из рандомизатора - запаришься какие-то фрагменты процессорной системы (ну типа там шины, контроллеры памяти и т.п.), где очевидно применение транзакции можно, а собственно IU как-то не получилось, но может не умею готовить.... то есть я бы не хватался за OVM (тем более еще и язык другой), а посмотрел бы как оно делается старым добрым способом  кроме Гейслера ходила книжка VHDL Cookbook, где на примерчеке попроще рассматривалось "процессор своими руками" ну и симуляторы позволяют дизайн на VHDL, а тестбенч на SV написать, но это, имхо, тоже извращение, особенно когда один человек и кодер и верификатор ------------------------ в сообщении бросается в глаза слово "вручную" - освойте питон (он и под виндовзом неплохо работает) и будете преобразовывать текстовые файлы автомацицески это не какая-то экзотика, а стандартная практика - тока на нормальных платформах (например линукс) есть куча других утилит/интерпретаторов awk,sed,tcl и т.п. - тьма их
|
|
|
|
|
Sep 28 2011, 19:02
|
Частый гость
 
Группа: Участник
Сообщений: 101
Регистрация: 3-09-10
Пользователь №: 59 274

|
Цитата(Джеймс @ Sep 26 2011, 01:51)  Плохо... Вот полезная страница из архива http://web.archive.org/web/20000902193847/...ac/ver_eda.htmlСоветую почитать раздел Productivity tools UPD. если ссылка не сработает, попробуйте отсюда: http://wayback.archive.org/web/*/http://ww...ac/ver_eda.htmlСпасибо! Ссылки работают! Хотя мне бы конечно лучше какие-нибудь тулзы для и верификации именно VHDL. Мне просто нравится VHDL. А так как я делаю в основном для себя то не вижу смысла переходить на SV или что-то еще. Еще вот всегда было интересно, существует какая-нибудь тулза для визуализации процесса прохождения данных по конвейеру? Скажем, она на вход берет VHDL, а затем по тактам рисует анимацию, что вот тут сигналы, вот комб. логика, и по тактам вот так данные перемещаются. ИМХО было бы реально полезно. Цитата(yes @ Sep 26 2011, 15:43)  ... Ясно, спасибо! Ну я так и думаю пока, начать того что написать на VHDL просто много тестбенчей и запускать их в автоматическом режиме.
|
|
|
|
|
Sep 30 2011, 13:30
|
Гуру
     
Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640

|
Цитата(vugluskr @ Sep 26 2011, 15:48)  почему извращение? код IP на VHDL, а тестбенч на SV тем более объем кода не большой (один человек), и плюсы SV в покрытии и методологии не будут иметь большого веса а когда приходится одновременно и на VHDL и на SV писать, возникает некое неудобство и производительность падает, по крайней мере у меня --------- мой месадж про то, что не обязательно тестбенч на SV писать, а то у меня по ответам сложилось мнение, что тестбенчи только на SV можно писать а сам я предпочитаю SV, на нем и код пишу и тесты, а VHDL, по-моему, не удобный язык, но если уже есть какой-то VHDL код, то пусть будет - не переписывать же Цитата(FROL_256 @ Sep 28 2011, 23:02)  Еще вот всегда было интересно, существует какая-нибудь тулза для визуализации процесса прохождения данных по конвейеру? Скажем, она на вход берет VHDL, а затем по тактам рисует анимацию, что вот тут сигналы, вот комб. логика, и по тактам вот так данные перемещаются. ИМХО было бы реально полезно. в том же dataflow в квестасиме можно смотреть, но это конечно не специально для конвеера, а для RTL "станций". но они в какой-то мере совпадают с конвеером а для специально процессора - самому нужно визуализалку писать - симуляторы поддерживают возможность такой "плагин" сделать
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|