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

    

Что такое UVM?

Хочу разобраться с тем, что такое UVM. На официальном сайте скачивал примеры и документацию. Но не смог разобраться по ней. Я понял, что это некая методология тестирования, но не понял, в чем ее смысл.

Прошу тех, кто пользуется UVM поделиться примерами, ссылками. Рассказать о UVM.

Спасибо!

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


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

сильно упрощая - это как переход от С к С++

то есть в мире появилось много ООП программистов, наверно, их сейчас специально учат в институтах, и чтобы применять их навыки для верификации HDL и придумали UVM (до этого были OVM, RVM ну и немного сбоку VMM)

 

то есть если переход в программировании от С к С++ кажется бессмысленным, то совершено не имеет смысла тратить время на OVM

 

OVM, по-моему, полезна для отладки каких-то протоколов передачи данных (по крайней мере я других примеров не видел, что в учебниках, что в коде субподрядчиков), а пытаться применять для отладки каких-либо DSP алгоритмов, вычислительных ядер, или простых FSM смысла мало

 

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


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

то есть в мире появилось много ООП программистов, наверно, их сейчас специально учат в институтах, и чтобы применять их навыки для верификации HDL и придумали UVM (до этого были OVM, RVM ну и немного сбоку VMM)

 

то есть если переход в программировании от С к С++ кажется бессмысленным, то совершено не имеет смысла тратить время на OVM

 

OVM, по-моему, полезна для отладки каких-то протоколов передачи данных (по крайней мере я других примеров не видел, что в учебниках, что в коде субподрядчиков), а пытаться применять для отладки каких-либо DSP алгоритмов, вычислительных ядер, или простых FSM смысла мало

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

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


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

Приветствую!

 

Странно. Мне всегда казалось что UVM как и OSVVM ( то-же что и UVM но на VHDL) - это определенный набор методик для генерации набора псевдослучайных тестов, позволяющих максимально полно проверить реакцию тестируемого модуля на эти тесты.
Генерация псевдослучайных тестов это constraint random-base verification и это не главное в UVM.

 

UVM это в первую очередь методология позволяющая упростит и стандартизировать построение сложных верификационных платформ и соответствующая OOP библиотека которая поддерживает эту методологию.

Если грубо - выделяются стандартные этапы верификации, набор ролей версификационных модулей. Стандартизируются потоки управления и интерфейсы между ними. Добавляется механизм сквозной динамической конфигурации без необходимости пере-компиляции. ( короче : правила - формальности - бюрократия :( ни ка какого свободного творчества и полета фантазии).

Цель соответственно благая - повысить reusable-ность верификации и соответственно снизить стоимость.

 

Но увы это не золотая пуля - полноценное применение методологии UVM (как и подобной ей) имеет смысл в больших командах с разделением обязанностей и длительным первоначальным периодом вхождения в эту технологию и наработки своей версификационной базы.

 

Саму же UVM библиотеку можно использовать и как есть почти без оглядки на методологию.

 

Удачи! Rob.

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


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

Немного добавлю к словам Роба, если вы и чтец и жнец и плисовод, вполне возможно, что "простое" окружение на SV будет вам дешевле, чем осваивать UVM.

С другой стороны, сам сталкивался с такой ситуацией при блочном моделировании, когда верифицируемый модуль имеет несколько асинхронных друг относительно друга интерфейсов

и тут с fork join уже как то не уютно и невольно смотришь в сторону UVM. Еще UVM хорошо тем, что есть удобный механизм добавления monitors с различными covergroups, coverpoints, etc.

Что дает численную метрику прогресса и качества верификации модуля.

Но в целом, UVM хорошо, когда есть разделение труда и от одного корневого спека начинают работать и верификаторы и дизайнеры, тогда тестовые окружения выполняются в одном контексте,

что дает и reuse и переносимость кода от одного разработчика к другому.

 

 

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


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

то есть в мире появилось много ООП программистов, наверно, их сейчас специально учат в институтах, и чтобы применять их навыки для верификации HDL и придумали UVM (до этого были OVM, RVM ну и немного сбоку VMM)

 

то есть если переход в программировании от С к С++ кажется бессмысленным, то совершено не имеет смысла тратить время на OVM

 

OVM, по-моему, полезна для отладки каких-то протоколов передачи данных (по крайней мере я других примеров не видел, что в учебниках, что в коде субподрядчиков), а пытаться применять для отладки каких-либо DSP алгоритмов, вычислительных ядер, или простых FSM смысла мало

Где можно найти примеры применения UVM, OVM, VMM?

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


Ссылка на сообщение
Поделиться на другие сайты
Где можно найти примеры применения UVM, OVM, VMM?

В nVidia, например.

 

А если что-то вроде "helloworld" в UVM, то на verilab.com можно найти такое.

Изменено пользователем one_eight_seven

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


Ссылка на сообщение
Поделиться на другие сайты
В nVidia, например.

 

А если что-то вроде "helloworld" в UVM, то на verilab.com можно найти такое.

В nVidia? Как найти примеры nVidia?

В официальной документации есть "Hello World"-примеры. Но из них непонятно, зачем нужно UVM. Хотелось бы найти как-раз работающий пример из реальной жизни, чтобы понять преимущества UVM-методологии.

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


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

посмотрите книгу UVM Primer - не знаю есть ли в пдф, но на амазоне всего 40 баксов, сам купил

Или же есть еще репозиторий их https://github.com/rdsalemi/uvmprimer - там тоже можно поизучать

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


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

Приветствую!

...

В официальной документации есть "Hello World"-примеры. Но из них непонятно, зачем нужно UVM. Хотелось бы найти как-раз работающий пример из реальной жизни, чтобы понять преимущества UVM-методологии.

Вот - не пример а конфетка :)

 

Успехов! Rob.

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


Ссылка на сообщение
Поделиться на другие сайты
Странно. Мне всегда казалось что UVM как и OSVVM ( то-же что и UVM но на VHDL) - это определенный набор методик для генерации набора псевдослучайных тестов, позволяющих максимально полно проверить реакцию тестируемого модуля на эти тесты.

псевдослучайные тесты не имеют большого смысла для перебора datapath логики или процессора (там "особые" ситуации известны), а для простых устройств требуют излишних усилий - это я хотел сказать

 

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

там еще стандартизованы агенты, мониторы и т.п. (то есть структура тестов), что облегчает работу большого коллектива верификаторов над проектом

то есть UVM штука однозначно полезная, но достаточно специфическая, в силу большей сложности "минимального тесткейса"

поэтому считаю свое сравнение с С++ весьма уместным :)

 

мне, например, применить так и не удалось - какие-то учебные примерчики я писал, но вот для боевого проекта применить ни разу не удалось - поэтому затаил злобу на UVM :)

 

upd: сорри, чукча не читатель... все уже выше написано, но оставлю

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


Ссылка на сообщение
Поделиться на другие сайты
посмотрите книгу UVM Primer - не знаю есть ли в пдф, но на амазоне всего 40 баксов, сам купил

Или же есть еще репозиторий их https://github.com/rdsalemi/uvmprimer - там тоже можно поизучать

пдф есть в закромах.

Еще UVM хорошо тем, что есть удобный механизм добавления monitors с различными covergroups, coverpoints, etc.

Что дает численную метрику прогресса и качества верификации модуля.

А вот про covergroups, coverpoints в UVM Primer отсыл к другой книжке того же автора "I provide an introduction to covergroups in the books FPGA Simulation". Вот эту FPGA Simulation удалось найти только в виде фоток разворотов. Отправил в закрома.

 

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


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

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

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

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

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

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

Войти

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

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