Универсальная методология проверки (UVM) — это популярный способ проверки проектов SystemVerilog, который включает в себя система конфигурации к сожалению, у него есть некоторые проблемы со скоростью и использованием. Рич Эдельман из Siemens EDA написал подробный 20-страничный документ на тему того, как избежать этих проблем, и я просмотрел его, чтобы суммировать для вас основные моменты. Инженеры по верификации используют базу данных конфигурации UVM для установки значений, а затем для получения значений позже в ходе теста UVM. Один из примеров установки и получения значения «T»:
uvm_config#(T)::set(scope, имя_экземпляра_path_name, имя_поля, значение); uvm_config#(T)::get(scope, имя_экземпляра_path_name, имя_поля, значение);
При подключении испытательного стенда UVM к тестируемому устройству для передачи виртуальных интерфейсов используется база данных конфигурации. При использовании конфигурации UVM возникают три проблемы:
- Большой код, около 2,600 строк кода.
- Требуется точное соответствие типов, поэтому «int» и «bit» — это не одно и то же.
- Медленный код
Рассмотрим случай медленного кода, поскольку при тысячах вызовов set() с использованием имен с подстановочными знаками завершение этапов «установки» и «получения» может занять до 30 минут.
Рич предлагает новое решение для конфигураций UVM, которое имеет гораздо более высокую скорость, занимающую для сравнения всего несколько секунд.
Если ваш код UVM не использует подстановочные знаки и содержит мало команд «set», ваш код будет работать быстрее.
Возможные решения проблем конфигурации UVM:
- Вместо этого используйте глобальную переменную
- Используйте конфигурацию UVM с одним set()
- Используйте конфигурацию UVM с несколькими set()
- Используйте дерево конфигурации
- Попробуйте что-то другое
Этот последний подход, заключающийся в попытке чего-то другого, является новым решением, и он продолжает использовать API-интерфейсы set() и get(), затем упрощается за счет удаления параметризации конфигураций, удаления приоритета и удаления изменения алгоритма поиска. Результатом этого нового подхода являются высокие скорости.
Ваш новый элемент конфигурации определен в производном классе от «config_item», а в примере ниже показано «int value» как устанавливаемое свойство. В целях отладки вы добавляете функцию cute-print.
класс my_special_config_item расширяет config_item; функция new(string name = "my_special_config_item"); супер.новый (имя); конечная функция целое значение; строка виртуальной функции Convert2string(); return $sformatf("%s - value=%0d ", get_name(), value, super.convert2string()); конечная функция конечный класс
У config_item есть атрибут name, и ищется это имя, а также имя экземпляра. Объект конфигурации также имеет функцию get_name() для возврата имени. Чтобы найти любое «имя_экземпляра.имя_поля», база данных конфигурации использует ассоциативный массив для быстрого поиска и создания.
Для отслеживания вы можете узнать, кто установил или кто вызвал get, поскольку имя файла и номер строки являются полями в вызовах функций set() и get().
set(null, "top.a.b.*", "SPEED", my_speed_config, `__FILE__, `__LINE__) get(null, "top.a.b.c.d.monitor1", "SPEED", Speedconfig, `__FILE__, `__LINE__)
Очередь доступа можно распечатать во время отладки, чтобы увидеть, кто вызвал set() и get().
Для поддержки подстановочных знаков потребовалось добавить механизм поиска с использованием контейнеров. Рассмотрим имя экземпляра «top.a.b.c.d.*_0».
Часть имени экземпляра с подстановочными знаками обрабатывается с использованием дерева контейнеров вместо ассоциативного массива.
Обзор
Совместное использование данных между модулем/экземпляром и миром на основе классов в тестовом стенде UVM может осуществляться с использованием базы данных конфигурации UVM, но помните о замедлении скорости. Если ваша методология использует множество конфигураций, рассмотрите возможность использования нового подхода, в котором пакет использует около 300 строк кода вместо 2,600 строк кода в файле базы данных конфигурации UVM.
Прочитайте полную 20-страничную статью, Как избежать конфигурационного безумия: простой способ в Siemens EDA.
Похожие статьи
Поделитесь этим постом через:
- SEO-контент и PR-распределение. Получите усиление сегодня.
- PlatoData.Network Вертикальный генеративный ИИ. Расширьте возможности себя. Доступ здесь.
- ПлатонАйСтрим. Интеллект Web3. Расширение знаний. Доступ здесь.
- ПлатонЭСГ. Углерод, чистые технологии, Энергия, Окружающая среда, Солнечная, Управление отходами. Доступ здесь.
- ПлатонЗдоровье. Биотехнологии и клинические исследования. Доступ здесь.
- Источник: https://semiwiki.com/eda/339885-making-uvm-faster-through-a-new-configuration-system/
- :имеет
- :является
- :нет
- $UP
- 30
- 300
- 600
- a
- О нас
- Добавить
- добавить
- алгоритм
- причислены
- an
- и
- любой
- API
- подхода
- МЫ
- массив
- AS
- At
- избежать
- знать
- b
- BE
- , так как:
- не являетесь
- ниже
- между
- by
- под названием
- Объявления
- CAN
- случаев
- изменение
- класс
- код
- сравнение
- полный
- Конфигурация
- Рассматривать
- Container
- Контейнеры
- продолжается
- создание
- данным
- База данных
- определенный
- Производный
- конструкций
- подробный
- устройство
- различный
- сделанный
- в течение
- легко
- Инженеры
- Эфир (ETH)
- пример
- продолжается
- БЫСТРО
- быстрее
- несколько
- Поля
- Файл
- Найдите
- Что касается
- от
- полный
- функция
- получить
- получающий
- Глобальный
- ушел
- помощь
- основной момент
- Как
- How To
- HTTPS
- if
- in
- включает в себя
- пример
- вместо
- интерфейсы
- выпустили
- вопросы
- IT
- JPG
- всего
- Фамилия
- новее
- линия
- линий
- смотрел
- поиск
- много
- Создание
- согласование
- макс-ширина
- механизм
- Методология
- мин
- минут
- много
- имя
- имена
- Новые
- новое решение
- номер
- объект
- of
- on
- ONE
- только
- or
- внешний
- пакет
- бумага & картон
- часть
- pass
- фаза
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- плюс
- Популярное
- После
- старшинство
- проблемам
- собственность
- предлагает
- целей
- удаляет
- удаление
- обязательный
- Итоги
- возвращают
- Богатые
- Run
- сфера
- секунды
- посмотреть
- набор
- установка
- Шоу
- Сименс
- упрощает
- медленной
- замедления
- So
- Решение
- Решения
- некоторые
- удалось
- скорость
- скорость
- строка
- суммировать
- супер
- поддержка
- система
- T
- взять
- с
- тестXNUMX
- который
- Ассоциация
- их
- тогда
- Там.
- Эти
- этой
- тысячи
- три
- Через
- время
- в
- топ
- тема
- Прослеживаемость
- дерево
- пытается
- напишите
- под
- К сожалению
- Universal
- Применение
- использование
- использования
- через
- ценностное
- Наши ценности
- переменная
- проверка
- проверить
- с помощью
- Виртуальный
- Путь..
- который
- КТО
- будете
- Мир
- писал
- являетесь
- ВАШЕ
- зефирнет