Исследование эффективности верификации с использованием PyUVM и SystemVerilog-UVM

Автор: Свинцов А.А.

Журнал: Форум молодых ученых @forum-nauka

Статья в выпуске: 10 (98), 2024 года.

Бесплатный доступ

Резюме: Python, как мультипарадигмальный язык, известный своей простотой интеграции с другими языками, в последнее время завоевал значительное внимание среди инженеров по верификации. Среда верификации на базе Python использует такие открытые библиотеки, как PyUVM, обеспечивающая реализацию UVM 1.2 на базе Python, и PyVSC, способствующая рандомизации с ограничениями и функциональному покрытию. Целью данной работы является оценка эффективности верификации цифровых дизайнов с помощью PyUVM и сравнение возможностей и показателей производительности с устоявшейся методологией SystemVerilog-UVM.

Верификация, uvm, pyuvm, python, systemverilog

Короткий адрес: https://sciup.org/140307965

IDR: 140307965

Текст научной статьи Исследование эффективности верификации с использованием PyUVM и SystemVerilog-UVM

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

Различия Python и SystemVerilog

SystemVerilog имеет высокий порог вхождения по сравнению с другими языками программирования. В связи с этим UVM, основанный на SystemVerilog, становится более сложным в использовании. С другой стороны, Python обладает низким порогом вхождения, является одним из самых популярных языков и легко интегрируется с такими библиотеками, как Numpy, Pandas и др.

Таблица 1 – Сравнение SystemVerilog и Python в верификации

Характеристика

SystemVerilog

Python

Декларация типов данных

Статическая

Динамическая

Поддерживаемые типы логики

0, 1, X, Z

X, Z, U, W

Параметризация и размер переменной

Требуется

Не требуется

Стиль контроля потока

begin, end

Правильный отступ

Функции

Не объекты

Вызываемые

объекты

Исключения

Не поддерживаются

Поддерживаются

Библиотеки

-

Поддерживаются

Интерпретируемый

Нет

Да

Иерархия дизайна

включает верхний testbench

Не включает верхний testbench

Замечание по таблице для Python:

  •    Позволяет не объявлять переменные и выполнять операции над ними;

  •    Поддерживает сложные структуры данных (кортежи и словари);

  •    Исключения обрабатываются с использованием блоков try, except;

  •    Легче создать эталонные модели для дизайна, благодаря поддержке множества библиотек;

Время выполнения тестовых сценариев PyUVM медленнее, чем у тестовых сценариев SystemVerilog-UVM. Такое различие во времени выполнения тестовых сценариев связано с их разными подходами. В SystemVerilog для установления связи с симулятором используются директивы и команды моделирования, что приводит к тесной интеграции, которая улучшает выполнение и сокращает время выполнения. В отличие от них, Python взаимодействуют с симулятором с помощью VPI/VHPI, которые менее тесно интегрированы. Эти издержки становятся более значительными по мере увеличения количества транзакций (см. рисунок 1).

Рисунок 1 – Время тестирования от количества транзакций

С точки зрения использования оперативной памяти, Python потребляет на 30-35% больше памяти. В симуляторе Questa Sim при длительных симуляциях наблюдаются утечки памяти в Python, где потребление памяти могло быть в несколько раз выше, чем в SystemVerilog (см. рисунок 2).

Questa Sim - PyVSC - Python ^^^^^■^^^^^^^■^^^^^^^■^^^M 844 VCS - PyVSC - Python Е^^ИЕ^^Г~474

Questa Sim - SVConduit - Python _________________   __^_ 846

Questa Sim-SystemVerilog ^^^H267

VCS - SystemVerilog ^^^^BI^M^^^^H^^^^^H 366

0      100    200    300    400    500    600    700    800900

Объем виртуальной памяти (мегабайты)

Рисунок 2 – Потребление памяти в разных симуляторах

Покрытие в Python оказалось меньше на 1,6%, разница начала проявляется после 400 операций. Это показывает, что по мере увеличения количества операций, PyVSC чаще выдавал случайные значения, которые уже были обработаны (см. рисунок 3).

Рисунок 3 – Покрытие от операций записи для Python и SystemVerilog

Можно выделить то, что один и тот же тест в SystemVerilog имеет больше строк кода. Важно отметить, что увеличение количества строк кода может влиять на читаемость, поддержку и тестирование программных решений.

Заключение

Исследование верификации DUT с использованием окружений написанных на PyUVM и SystemVerilog-UVM проводилось по различным параметрам (объем кода, время симуляции, потребления памяти, покрытие). Несмотря на то, что моделирование на Python занимает больше времени и потребляет больше памяти, оно может быть более эффективным при условии, что генерация тактовых импульсов перенесена на сторону DUT. Моделирование с помощью PyUVM позволяет собирать входные данные и покрытии в удобном формате. Их можно проанализировать для создания новых методологий на основе методов машинного обучения, которые ещё больше ускорят процесс верификации.

Список литературы Исследование эффективности верификации с использованием PyUVM и SystemVerilog-UVM

  • H. Foster, "2022 Wilson Research Group Functional Verification Study", Siemens Digital Industries Software, Tech. Rep., Oct. 2022.
  • D. Gadde, S. Kumari, A. Kumar, "Towards Efficient Design Verification - Constrained Random Verification using PyUVM", Cornell University, May 2024.
  • M. Sinerva, "UVM testbench in Python: feature and performance comparison with SystemVerilog implementation", University of Oulu, June 2023.
  • Quinn, "Constrained Random Stimulus Generation using Python", DVClub Europe, 2021.
  • M. DSU, PY-UVM Framework for RISC-V Single Cycle Core, May 8, 2023 (Accessed: August 4, 2023).
Статья научная