Введение

Язык описания оборудования Verilog, стандартизированный как IEEE 1364, является языком описания аппаратуры (HDL), используемым для моделирования электронных систем. Он наиболее часто применяется при проектировании и верификации цифровых схем на уровне передачи регистров. Он также используется для верификации аналоговых и смешанных сигнальных схем, а также для проектирования генетических схем. В 2009 году стандарт Verilog (IEEE 1364 2005) был включен в стандарт SystemVerilog, сформировав стандарт IEEE 1800 2009. С тех пор Verilog официально является частью языка SystemVerilog. Текущая версия – стандарт IEEE 1800 2023. Чи Лай Хуан ранее работал над языком описания аппаратуры LALSD, разработанным профессором С. Ю. Х. Су для его диссертационной работы. Правообладателем этого, в то время проприетарного, процесса была компания "Automated Integrated Design Systems" (позже переименованная в Gateway Design Automation в 1985 году). Gateway Design Automation была приобретена компанией Cadence Design Systems в 1990 году. Теперь Cadence обладает полными правами на Verilog от Gateway и Verilog XL, HDL-симулятор, который стал де-факто стандартом (для симуляторов логики Verilog) на следующее десятилетие. Изначально Verilog предназначался только для описания и моделирования; автоматизированный синтез подмножеств языка в физически реализуемые структуры (элементы и т.п.) был разработан после того, как язык получил широкое распространение. Verilog – это портманто из слов "verification" (верификация) и "logic" (логика).

Верилог-95

С ростом популярности VHDL в то время, компания Cadence приняла решение сделать язык доступным для открытой стандартизации. Cadence передала Verilog в общественное достояние под эгидой организации Open Verilog International (OVI), ныне известной как Accellera. Позднее Verilog был представлен в IEEE и стал стандартом IEEE 1364 1995, широко известным как Verilog 95. Параллельно Cadence инициировала разработку Verilog A для обеспечения стандартной поддержки своего аналогового симулятора Spectre. Verilog A изначально не задумывался как самостоятельный язык и является подмножеством Verilog AMS, который охватывал Verilog 95.

Верйлог 2001

Расширения Verilog 95 были представлены обратно в IEEE для устранения недостатков, выявленных пользователями в оригинальном стандарте Verilog. Эти расширения стали стандартом IEEE 1364 2001 года, известным как Verilog 2001. Verilog 2001 является значительным обновлением по сравнению с Verilog 95. Во-первых, он добавляет явную поддержку знаковых (в дополнительном коде) сетей и переменных. Ранее авторам кода приходилось выполнять знаковые операции, используя сложные побитовые манипуляции (например, для определения правильного значения бита переноса при простом 8-битном сложении требовалось явное описание булевой алгебры). В Verilog 2001 ту же функцию можно более лаконично описать одним из встроенных операторов: +, -, /, *, >>>. Конструкция generate–endgenerate (аналогичная generate–endgenerate в VHDL) позволяет Verilog 2001 управлять созданием экземпляров и операторов с помощью обычных операторов принятия решений (case–if–else). Используя generate–endgenerate, Verilog 2001 может создавать массив экземпляров с контролем над связностью отдельных экземпляров. Операции ввода-вывода файлов были улучшены за счет нескольких новых системных задач. И, наконец, были добавлены некоторые синтаксические элементы для повышения читаемости кода (например, always, @*, переопределение именованных параметров, объявление заголовков функций/задач/модулей в стиле C). Verilog 2001 – это версия Verilog, поддерживаемая большинством коммерческих пакетов EDA.

Верйлог 2005

Не следует путать с SystemVerilog, Verilog 2005 (IEEE Standard 1364 2005) включает в себя незначительные исправления, уточнения спецификаций и несколько новых возможностей языка (например, ключевое слово uwire). Отдельная часть стандарта Verilog, Verilog AMS, направлена на интеграцию аналогового и моделирования смешанных сигналов с традиционным Verilog.

Система верлогов

Появление языков верификации аппаратного обеспечения, таких как OpenVera и язык e от Verisity, стимулировало разработку Superlog компанией Co Design Automation Inc (позже приобретенной Synopsys). Основы Superlog и Vera были переданы в Accellera, которая впоследствии стала стандартом IEEE P1800 2005: SystemVerilog. SystemVerilog является расширением Verilog 2005, включающим множество новых функций и возможностей для облегчения верификации и моделирования проектов. Начиная с 2009 года, стандарты языков SystemVerilog и Verilog были объединены в SystemVerilog 2009 (Стандарт IEEE 1800 2009).

Обновления с 2009 года

Стандарт SystemVerilog впоследствии был обновлён в 2012, 2017 и, наиболее недавно, в декабре 2023 года.

Логика с четырьмя значениями

Стандарт IEEE 1364 определяет четырехзначную логику с четырьмя состояниями: 0, 1, Z (высокое сопротивление) и X (неопределенное логическое значение). Для конкурирующего языка VHDL существует отдельный стандарт для многозначной логики – IEEE 1164, определяющий девять уровней.

Языковой интерфейс программы (PLI)

PLI предоставляет программисту механизм для передачи управления из Verilog в программную функцию, написанную на языке C. Он официально признан устаревшим стандартом IEEE Std 1364 2005 в пользу более нового процедурного интерфейса Verilog, который полностью заменяет PLI. PLI (теперь VPI) позволяет Verilog взаимодействовать с другими программами, написанными на языке C, такими как тестовые стенды, симуляторы наборов команд микроконтроллеров, отладчики и т.д. Например, он предоставляет функции C tf_putlongp и tf_getlongp, которые используются для записи и чтения 64-битного целочисленного аргумента текущей задачи или функции Verilog соответственно. Для 32-битных целых чисел используются tf_putp и tf_getp.

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

Для получения информации о симуляторах Verilog, обратитесь к списку симуляторов Verilog.

Разработка стандартов

Официальный стандарт для Verilog 2005 (не бесплатный). IEEE P1364 – Рабочая группа по Verilog (неактивна). IEEE P1800 – Рабочая группа по SystemVerilog (заменяет предыдущие). Синтаксис Verilog – Описание синтаксиса в форме Бэкуса-Наура, датированное 1995 годом. Это описание предшествует стандарту IEEE 1364.

Языковые расширения

Verilog AUTOs — Метакомментарий с открытым исходным кодом, используемый производителями IP для упрощения поддержки кода Verilog.