Verilog

Поделись знанием:
Перейти к: навигация, поиск
Verilog
Класс языка:

Язык описания аппаратуры

Появился в:

1983-1984

Автор:

Phil Moorby, Prabhu Goel

Расширение файлов:

.v

Verilog, Verilog HDL (англ. Verilog Hardware Description Language) — это язык описания аппаратуры, используемый для описания и моделирования электронных систем. Verilog HDL, не следует путать с VHDL (конкурирующий язык), наиболее часто используется в проектировании, верификации и реализации (например, в виде СБИС) аналоговых, цифровых и смешанных электронных систем на различных уровнях абстракции.

Разработчики Verilog сделали его синтаксис очень похожим на синтаксис языка C, что упрощает его освоение. Verilog имеет препроцессор, очень похожий на препроцессор языка C, и основные управляющие конструкции «if», «while» также подобны одноимённым конструкциям языка C. Соглашения по форматированию вывода также очень похожи (см. printf).

Следует отметить, что описание аппаратуры, написанное на языке Verilog (как и на других HDL-языках) принято называть программами, но в отличие от общепринятого понятия программы как последовательности инструкций, здесь программа задает структуру системы. Так же для языка Verilog не применим термин «выполнение программы».





Обзор

Существует подмножество инструкций языка Verilog, называемое синтезируемым. Модули, которые написаны на этом подмножестве, называют RTL (англ. register transfer level — Уровень регистровых передач). Они могут быть физически реализованы с использованием САПР синтеза. Данные САПР по определенным алгоритмам преобразуют абстрактный исходный код на Verilog в netlist — логически эквивалентное описание, состоящее из элементарных логических примитивов (например, AND, OR, NOT, триггеры), которые доступны в выбранной технологии производства СБИС или программирования БМК и ПЛИС. Дальнейшая обработка netlist в конечном итоге порождает фотошаблоны для литографии или прошивку для FPGA.

История

Создание

Verilog был создан Phil Moorby и Prabhu Goel зимой 1983—1984 годов в фирме Automated Integrated Design Systems (с 1985 года Gateway Design Automation) как язык моделирования аппаратуры. В 1990 году Gateway Design Automation была куплена Cadence Design Systems. Компания Cadence имеет права на логические симуляторы Gateway’s Verilog и Verilog-XL simulator.

Verilog-95

Во время увеличивающейся популярности языка VHDL, Cadence приняла решение добиться стандартизации языка. Cadence передала Verilog в общественное достояние. Verilog был послан в IEEE и принят как стандарт IEEE 1364—1995 (часто называемый Verilog-95).

Verilog 2001

Дополнения к языку Verilog-95 были приняты как IEEE 1364—2001 (или Verilog-2001).

Verilog-2001 является значительно обновленным по сравнению с Verilog-95. Во-первых, он добавил поддержку знаковых переменных (в формате дополнительного кода). Прежде авторам кода приходилось реализовывать знаковые операции с использованием большого количества битовых логических операций. Та же функциональность на Verilog-2001 описывается встроенными операторами языка: +, -, /, *, >>> Был улучшен файловый ввод-вывод. Для улучшения читаемости кодов был немного изменен синтаксис, например always @*, переопределение именованных параметров, объявление заголовков функций, задач и модулей в стиле Си.

Verilog-2001 является самым часто используемым диалектом языка и поддерживается в большинстве коммерческих САПР для электроники (см. EDA).

Verilog 2005

Verilog 2005 (стандарт IEEE 1364—2005) добавил небольшие исправления, уточнения спецификаций и несколько новых синтаксических конструкций, например, ключевое слово uwire.

Отдельная от стандарта часть, Verilog-AMS, позволяет моделировать аналоговые и аналого-цифровые устройства.

SystemVerilog

SystemVerilog является надмножеством Verilog-2005, с многими новыми возможностями для верификации и моделирования разработок.

Пример

Программа Hello, world! (не является синтезируемой)

module main;
  initial 
    begin
      $display("Hello world!");
      $finish;
    end
endmodule

Verilog 2001 описание: два простых последовательно соединённых триггера:

module toplevel
(input clock,
 input reset,
 input d,
 output reg flop2
);
 
 reg flop1;
 always @ (posedge reset, posedge clock)
 if (reset)
   {flop1,flop2} <= 2'b00;
 else
   begin
     flop1 <= d;
     flop2 <= flop1;
   end
endmodule //toplevel

Стандарты

  • IEEE Std 1364-1995 - первый стандарт
  • [inst.eecs.berkeley.edu/~cs150/fa06/Labs/verilog-ieee.pdf IEEE Std 1364—2001] — стандарт на Verilog 2001
  • IEEE 1364-2005 - обновленный стандарт
  • [www.cse.hcmut.edu.vn/~cuongpham/Verilog/SystemVerilog%20IEEE%20Std%201800-2005.pdf IEEE 1800-2005], IEEE 1800-2012] - IEEE Standard for SystemVerilog
  • [www.verilog.com/IEEEVerilog.html IEEE P1364] — рабочая группа 1364 — бывший разработчик Verilog.
  • [www.eda.org/sv-ieee1800/ IEEE P1800] — рабочая группа 1800 — разработчик SystemVerilog и преемник рабочей группы 1364.

Конструкции языка

Типы данных

Verilog содержит два базовых типа данных: wire и reg. Оба эти типа могут принимать 4 возможныe значения при симуляции Verilog программы:

  • 0
  • 1
  • Х — «неизвестное значение». Это значение используется только для симуляции, в реальной аппаратуре будет 0 или 1.
  • Z — «состояние высокого сопротивления», то есть отсутствие сигнала.

Тип wire используется для описания цепей, reg для регистров и переменных. Оба эти типа могут также быть использованы при описании много-битовых данных:

wire w1;
wire[31:0] bus; // 32-битовая шина
reg r1;
reg[7:0] bitvector; // 8-битовый регистр

Переменные типа reg имеют начальное значение 'X'. Цепи передают значения между регистрами. Если цепь не присоединена ни к какому регистру, она будет иметь значение 'Z'.

Verilog также содержит массивы, которые позволяют моделировать память:

reg[31:0] memory[0:1023]; // 1024 словa памяти, каждое слово содержит 32 бита.

Кроме этого Verilog содержит еще следующие типы данных:

  • integer — то же самое что «reg[31:0]»
  • real
  • time
  • realtime

Initial и Always

Verilog содержит два вида блоков, которые могут производить вычисления: «initial»-блок и «always»-блок.

«initial»-блок определяет какие действия должны быть сделаны при старте программы. Этот блок не является синтетизируемым и обычно используется для тестирования. Например:

module testbench;
  reg clock;
  reg[31:0] in1, in2;
  reg[63:0] out;

  // Тестируемый модуль
  multiplier mult(clock, in1, in2, out);

initial begin
  // Тестовые данные.
  in1 = 4;
  in2 = 20;

  // Подождать пока результат будет готов.
  #10;

  // Вывести результат вычислений.
  $display("result=%d", out);

  $finish();
end 
endmodule

Программа может содержать несколько «initial»-блоков, все из них исполняются параллельно.

Операторы

Тип Символы Выполняемая операция
Побитовые ~ Инверсия
& Побитовое AND
| Побитовое OR
^ Побитовое XOR
~^ или ^~ Побитовое XNOR (EQU)
Логические  ! NOT
&& AND
|| OR
Редукция & Редуцированное AND
~& Редуцированное NAND
| Редуцированное OR
~| Редуцированное NOR
^ Редуцированное XOR
~^ или ^~ Редуцированное XNOR
Арифметические + Сложение
- Вычитание
- 2’s complement
* Умножение
/ Деление
** Экспонента (*Verilog-2001)
Отношение > Больше
< Меньше
>= Больше либо равно
<= Меньше либо равно
== Логическое равенство
 != Логическое неравно
=== 4-state логическое равенство
 !== 4-state логическое неравно
Сдвиг >> Логический сдвиг вправо
<< Логический сдвиг влево
>>> Арифметический сдвиг вправо (*Verilog-2001)
<<< Арифметический сдвиг влево (*Verilog-2001)
Сцепление { , } Сцепление
Копирование {n{m}} Копирует m значение n раз
Условие  ? : Условие

Открытое аппаратное обеспечение, использующее Verilog

На языке Verilog созданы описания открытых микропроцессоров OpenSPARC T1, T2, S1 Core и OpenRISC. Их исходный код доступен под лицензиями LGPL и GPL.

Список приложений, поддерживающих Verilog

  • [www.altera.com Quartus II] среда моделирования и отладки; работает как минимум под Windows.
  • Icarus Verilog — open source приложения для моделирования и синтеза. Работает под Linux, Windows, Mac OS X, FreeBSD и др. [iverilog.icarus.com/ страница проекта]
  • [www.synopsys.com/products/simulation/simulation.html VCS] среда моделирования и отладки; работает как под Unix, так и под Windows.
  • [www.logicsim.com LogicSim] среда моделирования и отладки, работает под Windows.
  • [www.cadence.com Incisive HDL] среда моделирования и отладки; работает как под Unix, так и под Windows.
  • [www.model.com ModelSim] среда моделирования и отладки; работает как под Unix, так и под Windows.
  • [www.sugawara-systems.com Veritak] редактор, интегрированный компилятор/симулятор, транслятор с VHDL в Verilog, работает под управлением Windows.
  • [www.veripool.com/verilator.html Verilator] open-source высокопроизводительный компилятор Verilog.
  • [www.veripool.com/verilog-perl.html Verilog-Perl] набор Perl-модулей для предобработки и построения других инструментов.
  • [github.com/amromanov/vmodel vmodel] open-source средство для моделирования Verilog в MATLAB, основанное на Verilator.
  • [www.semanticdesigns.com/Products/FrontEnds/VerilogFrontEnd.html Verilog for DMS] is a general toolset for implementing arbitrary analyses and transformations on Verilog.
  • [www.carbondesignsystems.com VSPCompiler] инструмент для компилирования синтезируемого RTL-описания в C/C++/SystemC библиотеку.
  • [www.tenison.com VTOC] инструмент для компилирования синтезируемого RTL-описания в C++/SystemC библиотеку.
  • [www.iss-us.com/wavevcd/ Wave VCD Viewer] программа для просмотра VCD-файлов. Verilog-симулятор может порождать VCD-файл, содержащий результаты моделирования. Wave VCD Viewer позволяет разработчику видеть результаты моделирования в виде временных диаграмм. Программа работает под управлением Windows.
  • [gtkwave.sourceforge.net/ GTKWave] open-source программа для просмотра временных диаграмм, которая среди прочего позволяет просматривать VCD-файлы.
  • [dvteclipse.com/ Design and Verification Tools (DVT)] IDE для SystemVerilog, Verilog, и VHDL на основе Eclipse.
  • TkGate — средство моделирования и симуляции, основанное на Verilog.

См. также

Схожие языки

Напишите отзыв о статье "Verilog"

Литература

  • Соловьев В. В. Основы языка проектирования цифровой аппаратуры Verilog. — М.: Горячая линия — Телеком, 2014. — 208 с. — ISBN 978-5-9912-0353-1.

Ссылки

  • [www.allhdl.ru/verilog.php VerilogHDL — язык проектирования аппаратуры], allhdl.ru
  • [fpga.in.ua/student-works/sozdanie-reusable-code-na-verilog.html Reusable-code на Verilog] — применение принципа повторного использования кода применительно к языку программирования Verilog. fpga.in.ua
  • [www.opennet.ru/opennews/art.shtml?num=40365 Симулятор Verilog от Tachyon DA] — Компания Tachyon DA открыла код полноценного симулятора Verilog

Отрывок, характеризующий Verilog

В разоренной и сожженной Москве Пьер испытал почти крайние пределы лишений, которые может переносить человек; но, благодаря своему сильному сложению и здоровью, которого он не сознавал до сих пор, и в особенности благодаря тому, что эти лишения подходили так незаметно, что нельзя было сказать, когда они начались, он переносил не только легко, но и радостно свое положение. И именно в это то самое время он получил то спокойствие и довольство собой, к которым он тщетно стремился прежде. Он долго в своей жизни искал с разных сторон этого успокоения, согласия с самим собою, того, что так поразило его в солдатах в Бородинском сражении, – он искал этого в филантропии, в масонстве, в рассеянии светской жизни, в вине, в геройском подвиге самопожертвования, в романтической любви к Наташе; он искал этого путем мысли, и все эти искания и попытки все обманули его. И он, сам не думая о том, получил это успокоение и это согласие с самим собою только через ужас смерти, через лишения и через то, что он понял в Каратаеве. Те страшные минуты, которые он пережил во время казни, как будто смыли навсегда из его воображения и воспоминания тревожные мысли и чувства, прежде казавшиеся ему важными. Ему не приходило и мысли ни о России, ни о войне, ни о политике, ни о Наполеоне. Ему очевидно было, что все это не касалось его, что он не призван был и потому не мог судить обо всем этом. «России да лету – союзу нету», – повторял он слова Каратаева, и эти слова странно успокоивали его. Ему казалось теперь непонятным и даже смешным его намерение убить Наполеона и его вычисления о кабалистическом числе и звере Апокалипсиса. Озлобление его против жены и тревога о том, чтобы не было посрамлено его имя, теперь казались ему не только ничтожны, но забавны. Что ему было за дело до того, что эта женщина вела там где то ту жизнь, которая ей нравилась? Кому, в особенности ему, какое дело было до того, что узнают или не узнают, что имя их пленного было граф Безухов?
Теперь он часто вспоминал свой разговор с князем Андреем и вполне соглашался с ним, только несколько иначе понимая мысль князя Андрея. Князь Андрей думал и говорил, что счастье бывает только отрицательное, но он говорил это с оттенком горечи и иронии. Как будто, говоря это, он высказывал другую мысль – о том, что все вложенные в нас стремленья к счастью положительному вложены только для того, чтобы, не удовлетворяя, мучить нас. Но Пьер без всякой задней мысли признавал справедливость этого. Отсутствие страданий, удовлетворение потребностей и вследствие того свобода выбора занятий, то есть образа жизни, представлялись теперь Пьеру несомненным и высшим счастьем человека. Здесь, теперь только, в первый раз Пьер вполне оценил наслажденье еды, когда хотелось есть, питья, когда хотелось пить, сна, когда хотелось спать, тепла, когда было холодно, разговора с человеком, когда хотелось говорить и послушать человеческий голос. Удовлетворение потребностей – хорошая пища, чистота, свобода – теперь, когда он был лишен всего этого, казались Пьеру совершенным счастием, а выбор занятия, то есть жизнь, теперь, когда выбор этот был так ограничен, казались ему таким легким делом, что он забывал то, что избыток удобств жизни уничтожает все счастие удовлетворения потребностей, а большая свобода выбора занятий, та свобода, которую ему в его жизни давали образование, богатство, положение в свете, что эта то свобода и делает выбор занятий неразрешимо трудным и уничтожает самую потребность и возможность занятия.
Все мечтания Пьера теперь стремились к тому времени, когда он будет свободен. А между тем впоследствии и во всю свою жизнь Пьер с восторгом думал и говорил об этом месяце плена, о тех невозвратимых, сильных и радостных ощущениях и, главное, о том полном душевном спокойствии, о совершенной внутренней свободе, которые он испытывал только в это время.
Когда он в первый день, встав рано утром, вышел на заре из балагана и увидал сначала темные купола, кресты Ново Девичьего монастыря, увидал морозную росу на пыльной траве, увидал холмы Воробьевых гор и извивающийся над рекою и скрывающийся в лиловой дали лесистый берег, когда ощутил прикосновение свежего воздуха и услыхал звуки летевших из Москвы через поле галок и когда потом вдруг брызнуло светом с востока и торжественно выплыл край солнца из за тучи, и купола, и кресты, и роса, и даль, и река, все заиграло в радостном свете, – Пьер почувствовал новое, не испытанное им чувство радости и крепости жизни.
И чувство это не только не покидало его во все время плена, но, напротив, возрастало в нем по мере того, как увеличивались трудности его положения.
Чувство это готовности на все, нравственной подобранности еще более поддерживалось в Пьере тем высоким мнением, которое, вскоре по его вступлении в балаган, установилось о нем между его товарищами. Пьер с своим знанием языков, с тем уважением, которое ему оказывали французы, с своей простотой, отдававший все, что у него просили (он получал офицерские три рубля в неделю), с своей силой, которую он показал солдатам, вдавливая гвозди в стену балагана, с кротостью, которую он выказывал в обращении с товарищами, с своей непонятной для них способностью сидеть неподвижно и, ничего не делая, думать, представлялся солдатам несколько таинственным и высшим существом. Те самые свойства его, которые в том свете, в котором он жил прежде, были для него если не вредны, то стеснительны – его сила, пренебрежение к удобствам жизни, рассеянность, простота, – здесь, между этими людьми, давали ему положение почти героя. И Пьер чувствовал, что этот взгляд обязывал его.


В ночь с 6 го на 7 е октября началось движение выступавших французов: ломались кухни, балаганы, укладывались повозки и двигались войска и обозы.
В семь часов утра конвой французов, в походной форме, в киверах, с ружьями, ранцами и огромными мешками, стоял перед балаганами, и французский оживленный говор, пересыпаемый ругательствами, перекатывался по всей линии.
В балагане все были готовы, одеты, подпоясаны, обуты и ждали только приказания выходить. Больной солдат Соколов, бледный, худой, с синими кругами вокруг глаз, один, не обутый и не одетый, сидел на своем месте и выкатившимися от худобы глазами вопросительно смотрел на не обращавших на него внимания товарищей и негромко и равномерно стонал. Видимо, не столько страдания – он был болен кровавым поносом, – сколько страх и горе оставаться одному заставляли его стонать.
Пьер, обутый в башмаки, сшитые для него Каратаевым из цибика, который принес француз для подшивки себе подошв, подпоясанный веревкою, подошел к больному и присел перед ним на корточки.
– Что ж, Соколов, они ведь не совсем уходят! У них тут гошпиталь. Может, тебе еще лучше нашего будет, – сказал Пьер.
– О господи! О смерть моя! О господи! – громче застонал солдат.
– Да я сейчас еще спрошу их, – сказал Пьер и, поднявшись, пошел к двери балагана. В то время как Пьер подходил к двери, снаружи подходил с двумя солдатами тот капрал, который вчера угощал Пьера трубкой. И капрал и солдаты были в походной форме, в ранцах и киверах с застегнутыми чешуями, изменявшими их знакомые лица.
Капрал шел к двери с тем, чтобы, по приказанию начальства, затворить ее. Перед выпуском надо было пересчитать пленных.
– Caporal, que fera t on du malade?.. [Капрал, что с больным делать?..] – начал Пьер; но в ту минуту, как он говорил это, он усумнился, тот ли это знакомый его капрал или другой, неизвестный человек: так непохож был на себя капрал в эту минуту. Кроме того, в ту минуту, как Пьер говорил это, с двух сторон вдруг послышался треск барабанов. Капрал нахмурился на слова Пьера и, проговорив бессмысленное ругательство, захлопнул дверь. В балагане стало полутемно; с двух сторон резко трещали барабаны, заглушая стоны больного.
«Вот оно!.. Опять оно!» – сказал себе Пьер, и невольный холод пробежал по его спине. В измененном лице капрала, в звуке его голоса, в возбуждающем и заглушающем треске барабанов Пьер узнал ту таинственную, безучастную силу, которая заставляла людей против своей воли умерщвлять себе подобных, ту силу, действие которой он видел во время казни. Бояться, стараться избегать этой силы, обращаться с просьбами или увещаниями к людям, которые служили орудиями ее, было бесполезно. Это знал теперь Пьер. Надо было ждать и терпеть. Пьер не подошел больше к больному и не оглянулся на него. Он, молча, нахмурившись, стоял у двери балагана.
Когда двери балагана отворились и пленные, как стадо баранов, давя друг друга, затеснились в выходе, Пьер пробился вперед их и подошел к тому самому капитану, который, по уверению капрала, готов был все сделать для Пьера. Капитан тоже был в походной форме, и из холодного лица его смотрело тоже «оно», которое Пьер узнал в словах капрала и в треске барабанов.
– Filez, filez, [Проходите, проходите.] – приговаривал капитан, строго хмурясь и глядя на толпившихся мимо него пленных. Пьер знал, что его попытка будет напрасна, но подошел к нему.
– Eh bien, qu'est ce qu'il y a? [Ну, что еще?] – холодно оглянувшись, как бы не узнав, сказал офицер. Пьер сказал про больного.
– Il pourra marcher, que diable! – сказал капитан. – Filez, filez, [Он пойдет, черт возьми! Проходите, проходите] – продолжал он приговаривать, не глядя на Пьера.
– Mais non, il est a l'agonie… [Да нет же, он умирает…] – начал было Пьер.
– Voulez vous bien?! [Пойди ты к…] – злобно нахмурившись, крикнул капитан.
Драм да да дам, дам, дам, трещали барабаны. И Пьер понял, что таинственная сила уже вполне овладела этими людьми и что теперь говорить еще что нибудь было бесполезно.
Пленных офицеров отделили от солдат и велели им идти впереди. Офицеров, в числе которых был Пьер, было человек тридцать, солдатов человек триста.
Пленные офицеры, выпущенные из других балаганов, были все чужие, были гораздо лучше одеты, чем Пьер, и смотрели на него, в его обуви, с недоверчивостью и отчужденностью. Недалеко от Пьера шел, видимо, пользующийся общим уважением своих товарищей пленных, толстый майор в казанском халате, подпоясанный полотенцем, с пухлым, желтым, сердитым лицом. Он одну руку с кисетом держал за пазухой, другою опирался на чубук. Майор, пыхтя и отдуваясь, ворчал и сердился на всех за то, что ему казалось, что его толкают и что все торопятся, когда торопиться некуда, все чему то удивляются, когда ни в чем ничего нет удивительного. Другой, маленький худой офицер, со всеми заговаривал, делая предположения о том, куда их ведут теперь и как далеко они успеют пройти нынешний день. Чиновник, в валеных сапогах и комиссариатской форме, забегал с разных сторон и высматривал сгоревшую Москву, громко сообщая свои наблюдения о том, что сгорело и какая была та или эта видневшаяся часть Москвы. Третий офицер, польского происхождения по акценту, спорил с комиссариатским чиновником, доказывая ему, что он ошибался в определении кварталов Москвы.
– О чем спорите? – сердито говорил майор. – Николы ли, Власа ли, все одно; видите, все сгорело, ну и конец… Что толкаетесь то, разве дороги мало, – обратился он сердито к шедшему сзади и вовсе не толкавшему его.
– Ай, ай, ай, что наделали! – слышались, однако, то с той, то с другой стороны голоса пленных, оглядывающих пожарища. – И Замоскворечье то, и Зубово, и в Кремле то, смотрите, половины нет… Да я вам говорил, что все Замоскворечье, вон так и есть.
– Ну, знаете, что сгорело, ну о чем же толковать! – говорил майор.
Проходя через Хамовники (один из немногих несгоревших кварталов Москвы) мимо церкви, вся толпа пленных вдруг пожалась к одной стороне, и послышались восклицания ужаса и омерзения.
– Ишь мерзавцы! То то нехристи! Да мертвый, мертвый и есть… Вымазали чем то.
Пьер тоже подвинулся к церкви, у которой было то, что вызывало восклицания, и смутно увидал что то, прислоненное к ограде церкви. Из слов товарищей, видевших лучше его, он узнал, что это что то был труп человека, поставленный стоймя у ограды и вымазанный в лице сажей…
– Marchez, sacre nom… Filez… trente mille diables… [Иди! иди! Черти! Дьяволы!] – послышались ругательства конвойных, и французские солдаты с новым озлоблением разогнали тесаками толпу пленных, смотревшую на мертвого человека.


По переулкам Хамовников пленные шли одни с своим конвоем и повозками и фурами, принадлежавшими конвойным и ехавшими сзади; но, выйдя к провиантским магазинам, они попали в середину огромного, тесно двигавшегося артиллерийского обоза, перемешанного с частными повозками.
У самого моста все остановились, дожидаясь того, чтобы продвинулись ехавшие впереди. С моста пленным открылись сзади и впереди бесконечные ряды других двигавшихся обозов. Направо, там, где загибалась Калужская дорога мимо Нескучного, пропадая вдали, тянулись бесконечные ряды войск и обозов. Это были вышедшие прежде всех войска корпуса Богарне; назади, по набережной и через Каменный мост, тянулись войска и обозы Нея.