Верилятор - Verilator

Верилятор[1]
Verilator logo.png
Разработчики)Уилсон Снайдер
Стабильный выпуск
4.104[2] / 14 ноября 2020; 9 дней назад (14 ноября 2020 г.)
Репозиторий Отредактируйте это в Викиданных
Написано вC ++
Операционная системаLinux, FreeBSD, Майкрософт Виндоус (через Cygwin[3])
ТипСимулятор
ЛицензияЛицензия Perl Artistic и Стандартная общественная лицензия ограниченного применения GNU
Интернет сайтwww.veripool.org

Верилятор это бесплатное программное обеспечение с открытым исходным кодом инструмент, который конвертирует Verilogязык описания оборудования ) к модель поведения с точностью до цикла в C ++ или же SystemC. Он ограничен моделированием синтезируемого подмножества Verilog, а сгенерированные модели являются точными по циклу, с двумя состояниями и семантикой синтеза (нулевой задержки). Как следствие, эти модели обычно предлагают более высокую производительность, чем более широко используемые. симуляторы, управляемые событиями, который может обрабатывать весь язык Verilog и моделировать поведение в такт часов. Verilator теперь используется в академических исследованиях, проектах с открытым исходным кодом и для коммерческих разработок полупроводников. Это часть растущего тела бесплатное программное обеспечение EDA.

использование

Verilator получил самое широкое распространение в академических кругах и сообществах с открытым исходным кодом. Полупроводниковая промышленность более осторожно подходила к использованию инструментов с открытым исходным кодом и располагает финансовыми средствами для использования коммерческих альтернатив.[нужна цитата ]

Академический

Исследователи использовали Verilator для разработки новых сред совместного моделирования,[4] как часть общего ASIC и FPGA расчетные потоки[5][6] а также в анализе производительности и мощности.[7] Verilator также является популярным инструментом, например, для студенческих диссертаций.[8]

Открытый исходный код

Verilator - это инструмент с открытым исходным кодом, который, в свою очередь, был принят в ряде других проектов. В Электронная лаборатория Fedora [4] приняла Verilator как часть процесса разработки с открытым исходным кодом для Fedora 11. OpenRISC архитектура из OpenCores включает в себя эталонную модель с точностью до цикла, созданную из Verilog с использованием Verilator. Недавняя статья[9] описал, как набор регрессионных тестов для GCC может быть запущен с моделью Verilator OpenRISC 1200 как способ обнаружения ошибок в реализации Verilog RTL. Мастер профилирования TestDrive [5] инструмент предоставляет виртуальную среду FPGA с помощью Verilator.

Коммерческий

С коммерческой точки зрения компания Philips Semiconductors (теперь NXP) лидировала.[10] Их использование Verilator становится все более распространенным, например, в заметках по приложениям.[11] Совсем недавно Art of Silicon описала использование Verilator на ферме процессоров Linux как путь к более быстрому регрессионному тестированию своих коммерческих проектов.[12][13] Текущий сопровождающий Verilator определил[14] 27 компаний и университетов, которые сообщили об использовании Verilator или внесли свой вклад в его разработку, включая Intel, Arm, CSR, Broadcom, Raytheon, Infineon, Стэнфордский университет, Imperial College London и Embecosm.

История

В руководстве пользователя Verilator есть краткая история.[15] Инструмент был создан в 1994 году командой под руководством Пола Уоссона из Core Logic Group в Корпорация цифрового оборудования (DEC). Он использовался для преобразования кода Verilog в C для совместного моделирования с моделью ЦП процессора Alpha на основе C. В середине 1990-х Дуэйн Галби взял на себя ответственность за разработку, и технология была принята другими группами в DEC. В 1998 году DEC выпустила исходный код.

С 2001 года технология разрабатывалась Уилсоном Снайдером и другими в рамках проекта с открытым исходным кодом Veripool. А SystemC был добавлен режим, и инструмент был переписан с нуля на C ++, что привело к увеличению производительности.

Технологии и ключевые особенности

Verilator преобразует синтезируемый Verilog в C ++ или SystemC. Он может обрабатывать все версии Verilog, а также некоторые утверждения SystemVerilog и Sugar / PSL. Подход ближе к синтезу, чем моделирование, управляемое событиями. Вся конструкция сглаживается (то есть все модули расширяются для создания одного модуля). Статический анализ используется для исключения проводов и планирования всех процессов во время создания модели. Поскольку это модель с точностью до цикла, все задержки внутри цикла игнорируются. Класс C ++ создается с функцией, которая принимает значения с двумя состояниями на входных портах и ​​продвигает их к значениям на выходных портах на следующем фронте тактовой частоты.

SystemC поддерживается путем предоставления класса-оболочки, использующего порты SystemC, и с чувствительностью к часам, которые будут управлять портами базовой модели C ++.

Verilator поддерживает автоматическое разбиение проектов на несколько потоков, что также потенциально повышает производительность.

Использование с MATLAB

Verilator преобразует синтезируемый Verilog в C ++, а библиотека C ++ может быть скомпилирована в MEX файл используя интерфейс MATLAB для C ++. Вот как Verilog конструкции могут быть смоделированы непосредственно из MATLAB. Использование скомпилированных моделей C ++ с MATLAB быстрее, чем использование интерфейсов совместного моделирования с отдельным симулятором HDL. Есть проект с открытым исходным кодом под названием vmodel который компилирует Verilog в MEX файл с помощью Verilator и предоставляет набор функций для моделирования модели из MATLAB.

Смотрите также

Рекомендации

  1. ^ В. Снайдер, "Верилятор и SystemPerl". Североамериканская группа пользователей SystemC, Конференция по автоматизации проектирования, июнь 2004 г.
  2. ^ «Выпуск 4.104». 14 ноября 2020 г.. Получено 18 ноября 2020.
  3. ^ http://www.veripool.org/projects/verilator/wiki/Faq#Does-it-run-under-Windows
  4. ^ Ояма Масасиро, Танака Дайсуке и Симидзу Наохики. "Среда совместного моделирования аппаратного и программного обеспечения на основе языка C с использованием sfl2vl и Verilator", Джохо Шори Гаккай Шинподзиуму Ронбуншу (Сборник тезисов симпозиума Японского общества обработки информации), 2004 г. (10), 34–40.
  5. ^ П. Гарсия и К. Комптон. «Реконфигурируемый аппаратный интерфейс для современной вычислительной системы». FCCM 2007 (15-й ежегодный симпозиум IEEE по программируемым пользовательским вычислительным машинам), 23–25 апреля 2007 г., 73–84 (DOI, указанный в этой статье, Дои:10.1109 / FCCM.2007.49 это неверно)
  6. ^ Эрик С. Чанг, Джеймс С. Хоу, Бабак Фальсафи. "PROTO FLEX: Совместное моделирование для разработки компонентного эмулятора FPGA", WARFP 2006 (2-й семинар по исследованию архитектуры с использованием платформ FPGA), Остин, Техас, 12 февраля 2006 г.
  7. ^ Цзинь-Цзе Хуан, Джав-Вей Чи, Цзы-Цзин Линь, Линь-Вей Цао, И-Юнг Чен и Цзя-Линь Ян. «Система оценки производительности / мощности на уровне системы для SOC на базе платформы», Департамент компьютерных наук и информационной инженерии, Национальный университет Тайваня, 2008 г.
  8. ^ Сиддхартха Девалапалли. «Разработка модулей SystemC из HDL для приложений« система на кристалле »», Магистерская диссертация, Университет Теннесси, Ноксвилл, август 2004 г.
  9. ^ Джереми Беннетт, Embecosm, «Проверка процессора с использованием инструментов с открытым исходным кодом и набора регрессионных тестов GCC: тематическое исследование», собрание Design Verification Club, Бристоль, Кембридж и Эйндховен, 20 сентября 2010 г., [1]
  10. ^ Жан-Поль ван Итегем, Philips Semiconductors (ныне NXP), цитируется в Deep Chip 25 октября 2005 г. [2]
  11. ^ Чак Пеплински, «Аппаратные средства предварительной выборки и оптимизации кэша данных для медиапроцессоров Nexperia», NXP Semiconductors, 11 января 2007 г. «Архивная копия» (PDF). Архивировано из оригинал (PDF) 20 августа 2008 г.. Получено 13 марта 2009.CS1 maint: заархивированная копия как заголовок (связь)
  12. ^ Рич Портер, «Продуктивность дизайнеров - альтернативный подход», Национальный институт микроэлектроники, Совещание сети проектирования системного уровня, Engineers House, Бристоль, Великобритания, 24 сентября 2009 г., доступно по адресу www.slideshare.net/richporter/20090924aosnmiesl
  13. ^ Рич Портер, «Архитектура для параллельного моделирования HDL», заседание Клуба проверки дизайна, Бристоль, Кембридж и Эйндховен, 20 сентября 2010 г., «Архивная копия» (PDF). Архивировано из оригинал (PDF) 13 марта 2012 г.. Получено 24 сентября 2010.CS1 maint: заархивированная копия как заголовок (связь)
  14. ^ Уилсон Снайдер, Cavium Networks, «Verilator: быстро, бесплатно, но для меня?», Заседание Клуба проверки дизайна, Бристоль, Кембридж и Эйндховен, 20 сентября 2010 г., [3]
  15. ^ Уилсон Снайдер, "Верилятор-3.700", 7 января 2009 г.

внешняя ссылка