Введение

Язык описания и проверки оборудования SystemVerilog, стандартизированный как IEEE 1800, является языком описания и проверки оборудования, используемым для моделирования, проектирования, моделирования, тестирования и внедрения электронных систем. SystemVerilog основан на Verilog и некоторых расширениях, а с 2008 года Verilog теперь является частью того же стандарта IEEE. Он обычно используется в полупроводниковой и электронной промышленности как эволюция Verilog.

История

SystemVerilog начался с пожертвования языка Superlog Accellera в 2002 году стартап-компанией Co Design Automation. Основная часть функциональности проверки основана на языке OpenVera, подаренном Synopsys. В 2005 году SystemVerilog был принят в качестве стандарта IEEE 1800 2005. В 2009 году стандарт был объединен с базовым стандартом Verilog (IEEE 1364 2005), создав IEEE Standard 1800 2009. Стандарт SystemVerilog был обновлен в 2012, 2017 и в декабре 2023 года.

Срок службы данных

В SystemVerilog указаны два типа срока службы данных: статический и автоматический. Автоматические переменные создаются в тот момент, когда выполнение программы достигает объема переменной. Статические переменные создаются в начале выполнения программы и сохраняют одно и то же значение в течение всего срока службы программы, если только во время выполнения не присваивается новое значение. Любая переменная, которая декларируется внутри задачи или функции без указания типа, будет считаться автоматической. Чтобы указать, что переменная является статической, в декларации перед типом поместите ключевое слово "static", например "static int x;". Ключевое слово "автоматический" используется таким же образом.

Особенности проверки

Следующие функции проверки, как правило, не синтезируются, то есть они не могут быть реализованы в аппаратном обеспечении на основе кода HDL. Вместо этого они помогают создавать расширяемые, гибкие испытательные стенды.

Синхронизация

Сложная среда испытаний состоит из многоразовых компонентов проверки, которые должны взаимодействовать друг с другом. Примитив "события" Verilog позволял различным блокам процедурных инструкций запускать друг друга, но принуждение к синхронизации потоков зависело от (умного) использования программиста. SystemVerilog предлагает два примитива специально для синхронизации между потоками: почтовый ящик и семафор. Почтовый ящик моделируется как очередь сообщений FIFO. По желанию, FIFO может быть параметризирован типами, так что через него могут проходить только объекты указанного типа. Обычно объекты представляют собой экземпляры классов, представляющие транзакции: элементарные операции (например, отправка фрейма), которые выполняются компонентами проверки. Семафор моделируется как счетный семафор.

Общие улучшения классического Verilog

В дополнение к новым функциям, SystemVerilog улучшает удобство использования существующих языковых функций Verilog. Ниже приведены некоторые из этих усовершенствований: Операторы процедурного назначения (<=, =) теперь могут работать непосредственно на массивах. Определения портов (ввода, вход, выход) теперь расширены, чтобы поддерживать более широкий спектр типов данных: поддерживаются структурные, переченьные, реальные и многомерные типы. Конструкция цикла for теперь позволяет автоматически декларировать переменную внутри инструкции for. Контроль потока цикла улучшается с помощью инструкций "continue" и "break". SystemVerilog добавляет цикл do/while в конструкцию цикла while. Постоянные переменные, т.е. те, которые обозначены как неизменные во время выполнения, могут быть обозначены с помощью const. Инициализация переменных теперь может работать на массивах. Операторы увеличения и уменьшения (x++, ++x, x , x) поддерживаются в SystemVerilog, как и другие операторы сложного назначения (x += a, x = a, x *= a, x /= a, x %= a, x <<= a, x >>= a, x &= a, x ^= a, x= a) как в C и потомках. Предпроцессор улучшил возможности замены макросов, в частности замены в буквальных строках (""), а также сцепление нескольких макро-токенов в одно слово. Конструкция "форк/джойнт" была расширена с "join none" и "join any". Дополнения к директиве о временных масштабах позволяют более предсказуемо контролировать временные масштабы моделирования в больших средах моделирования, причем каждый исходный файл использует локальные временные масштабы. Теперь можно объявить порты задач ref. Ссылка дает телу задачи прямой доступ к источникам аргументов в зоне вызова, известной как "проход ссылкой" в компьютерном программировании. Поскольку она работает на самой исходной переменной, а не на копии значения аргумента, задача/функция может изменять переменные (но не сети) в зоне вызова в режиме реального времени. Декларации порта вход/выход передают переменные по значению и откладывают обновление переменной зоны вызова до момента выхода задачи. Функции теперь могут быть объявлены недействительными, что означает, что они не возвращают никакого значения. Параметры могут быть объявлены любого типа, включая пользовательские typedefs. Кроме того, SystemVerilog позволяет удобно взаимодействовать с иностранными языками (например, C / C ++), используя SystemVerilog DPI (Прямый интерфейс программирования).

Программное обеспечение для проверки и синтеза

В роли проверки дизайна SystemVerilog широко используется в индустрии проектирования чипов. Три крупнейших поставщика EDA (Cadence Design Systems, Mentor Graphics, Synopsys) включили SystemVerilog в свои симуляторы HDL на смешанном языке. Хотя ни один симулятор пока не может претендовать на поддержку всего справочника SystemVerilog Language Reference Manual, что делает оперативную совместимость тестовой площадки проблемой, предпринимаются усилия по продвижению совместимости между поставщиками. В 2008 году Cadence и Mentor выпустили Open Verification Methodology, библиотеку классов с открытым исходным кодом и структуру использования для облегчения разработки повторно используемых тестовых стендов и консервированной проверки IP. Synopsys, которая первой опубликовала библиотеку классов SystemVerilog (VMM), впоследствии отреагировала, открыв свой собственный VMM для широкой общественности. Многие сторонние провайдеры объявили или уже выпустили IP-проверку SystemVerilog. В роли синтеза дизайна (преобразование описания дизайна аппаратного обеспечения в сетевой список шлюзов) внедрение SystemVerilog было медленным. Многие команды дизайнеров используют потоки проектирования, которые включают в себя несколько инструментов от разных поставщиков. Большинство проектных команд не могут перейти на дизайн SystemVerilog RTL, пока весь их набор инструментов фронта (линтеры, формальная проверка и автоматизированные генераторы тестовой структуры) не поддержат подмножество общего языка.