Введение
Язык описания оборудования 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" (логика).
Verilog, standardized as IEEE 1364, is a hardware description language (HDL) used to model electronic systems. It is most commonly used in the design and verification of digital circuits at the register transfer level of abstraction. It is also used in the verification of analog circuits and mixed signal circuits, as well as in the design of genetic circuits. In 2009, the Verilog standard (IEEE 1364 2005) was merged into the SystemVerilog standard, creating IEEE Standard 1800 2009. Since then, Verilog has been officially part of the SystemVerilog language. The current version is IEEE standard 1800 2023. Chi Lai Huang had earlier worked on a hardware description LALSD, a language developed by Professor S. Y. H. Su, for his PhD work. The rights holder for this process, at the time proprietary, was "Automated Integrated Design Systems" (later renamed to Gateway Design Automation in 1985). Gateway Design Automation was purchased by Cadence Design Systems in 1990. Cadence now has full proprietary rights to Gateway's Verilog and the Verilog XL, the HDL simulator that would become the de facto standard (of Verilog logic simulators) for the next decade. Originally, Verilog was only intended to describe and allow simulation; the automated synthesis of subsets of the language to physically realizable structures (gates etc.) was developed after the language had achieved widespread usage. Verilog is a portmanteau of the words "verification" and "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.