Універсальна методологія перевірки (UVM) є популярним способом допомогти перевірити проекти SystemVerilog, і вона включає система конфігурації який, на жаль, має деякі проблеми зі швидкістю та використанням. Річ Едельман з Siemens EDA написав детальну 20-сторінкову статтю про те, як уникнути цих проблем, і я пройшов її, щоб узагальнити основні моменти для вас. Інженери з верифікації використовують базу даних конфігурації UVM, щоб установити значення, а потім отримати значення пізніше під час тестування UVM. Одним із прикладів встановлення та отримання значення "T" є:
uvm_config#(T)::set(scope, instance_path_name, field_name, value); uvm_config#(T)::get(scope, instance_path_name, field_name, value);
Підключення тестового стенду UVM до пристрою, що тестується, використовує базу даних конфігурації для передачі віртуальних інтерфейсів. Є три проблеми з використанням конфігурації UVM:
- Великий код, приблизно 2,600 рядків коду
- Потрібна точна відповідність типу, тому "int" і "bit" не однакові
- Повільний код
Розглянемо випадок повільного коду, тому що тисячі викликів set() з використанням імен із символами узагальнення можуть зайняти до 30 хвилин, щоб завершити фази «встановити» та «отримати».
Rich пропонує нове рішення для конфігурацій UVM, яке має набагато вищу швидкість, порівняно з цим займаючи лише кілька секунд.
Якщо ваш код UVM уникає використання символів узагальнення та має мало команд «set», тоді ваш код працюватиме швидше.
Можливі рішення проблем конфігурації UVM:
- Натомість використовуйте глобальну змінну
- Використовуйте конфігурацію UVM з одним набором()
- Використовуйте конфігурацію UVM з кількома set()
- Використовуйте дерево конфігурації
- Спробуйте щось інше
Останній підхід спробувати щось інше є новим рішенням, і воно продовжує використовувати API set() і get(), а потім спрощує, видаляючи параметризацію конфігурацій, видаляючи пріоритет і видаляючи зміну алгоритму пошуку. Результатом цього нового підходу є висока швидкість.
Ваш новий елемент конфігурації визначено в похідному класі від 'config_item', і наведений нижче приклад показує 'int value' як властивість, що встановлюється. Для цілей налагодження ви додаєте функцію красивого друку.
клас my_special_config_item розширює config_item; функція new(string name = "my_special_config_item"); super.new(ім'я); endfunction int значення; рядок віртуальної функції convert2string(); return $sformatf("%s - value=%0d <%s>", get_name(), value, super.convert2string()); кінцева функція кінцевий клас
'config_item' має атрибут імені, і це ім'я шукається, а також ім'я екземпляра. Об’єкт конфігурації також має функцію get_name() для повернення імені. Щоб знайти будь-який «instance_name.field_name», база даних конфігурації використовує асоціативний масив для швидкого пошуку та створення.
Для відстеження ви можете дізнатися, хто встановив або хто викликав get, оскільки ім’я файлу та номер рядка є полями у викликах функцій set() і get().
set(null, "top.ab*", "SPEED", my_speed_config, `__FILE__, `__LINE__) get(null, "top.abcdmonitor1", "SPEED", speedconfig, `__FILE__, `__LINE__)
Чергу доступу можна роздрукувати під час налагодження, щоб побачити, хто викликав set() і get().
Для підтримки символів підстановки потрібно додати механізм пошуку за допомогою контейнерів. Розглянемо назву екземпляра 'top.abcd*_0'.
Частина імені екземпляра зі знаком підстановки обробляється за допомогою дерева контейнера замість асоціативного масиву.
Підсумки
Обмін даними між модулем/екземпляром і світом на основі класів у тестовому стенді UVM можна здійснити за допомогою бази даних конфігурації UVM, просто пам’ятайте про уповільнення швидкості. Якщо ваша методологія використовує багато конфігурацій, тоді подумайте про використання нового представленого підходу, який містить пакет із приблизно 300 рядками коду замість 2,600 рядків коду у файлі бази даних конфігурації UVM.
Прочитайте повну статтю на 20 сторінок, Уникнення божевілля конфігурації простим способом в Siemens EDA.
Блоги, пов'язані
Поділитися цим дописом через:
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- PlatoData.Network Vertical Generative Ai. Додайте собі сили. Доступ тут.
- PlatoAiStream. Web3 Intelligence. Розширення знань. Доступ тут.
- ПлатонЕСГ. вуглець, CleanTech, Енергія, Навколишнє середовище, Сонячна, Поводження з відходами. Доступ тут.
- PlatoHealth. Розвідка про біотехнології та клінічні випробування. Доступ тут.
- джерело: 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
- випадок
- зміна
- клас
- код
- порівняння
- повний
- конфігурація
- Вважати
- Контейнер
- Контейнери
- триває
- створення
- дані
- Database
- певний
- Отриманий
- конструкцій
- докладно
- пристрій
- різний
- зроблений
- під час
- легко
- Інженери
- Ефір (ETH)
- приклад
- продовжується
- ШВИДКО
- швидше
- кілька
- Поля
- філе
- знайти
- для
- від
- Повний
- функція
- отримати
- отримання
- Глобальний
- пішов
- допомога
- основний момент
- Як
- How To
- HTTPS
- if
- in
- includes
- екземпляр
- замість
- Інтерфейси
- введені
- питання
- IT
- JPG
- просто
- останній
- пізніше
- Лінія
- ліній
- подивився
- пошук
- багато
- Робить
- узгодження
- макс-ширина
- механізм
- Методологія
- хвилин
- протокол
- багато
- ім'я
- Імена
- Нові
- нове рішення
- номер
- об'єкт
- of
- on
- ONE
- тільки
- or
- з
- пакет
- Папір
- частина
- проходити
- фаза
- plato
- Інформація про дані Платона
- PlatoData
- плюс
- популярний
- пошта
- пріоритет
- проблеми
- власність
- пропонує
- цілей
- видаляє
- видалення
- вимагається
- результати
- повертати
- Багаті
- прогін
- сфера
- seconds
- побачити
- комплект
- установка
- Шоу
- Сіменс
- спрощує
- сповільнювати
- уповільнення
- So
- рішення
- Рішення
- деякі
- що в сім'ї щось
- швидкість
- швидкість
- рядок
- підсумовувати
- Super
- підтримка
- система
- T
- Приймати
- взяття
- тест
- Що
- Команда
- їх
- потім
- Там.
- Ці
- це
- тисячі
- три
- через
- час
- до
- топ
- тема
- Простежуваність
- дерево
- намагається
- тип
- при
- на жаль
- Universal
- Використання
- використання
- використовує
- використання
- значення
- Цінності
- змінна
- перевірка
- перевірити
- через
- Віртуальний
- шлях..
- який
- ВООЗ
- волі
- з
- світ
- пише
- ви
- вашу
- зефірнет