VHDL или Verilog? [закрыто]

VHDL и Verilog являются ЛПВП дня. В чем преимущества либо для тех, кто вообще не имеет опыта работы с ЛПВП?

78 голосов | спросил stevenvh 1 Jam1000000amThu, 01 Jan 1970 03:00:00 +030070 1970, 03:00:00

11 ответов


60

Я не могу сказать вам, что узнать, но вот несколько контрастных точек (от самого VHDL-ориентированного пользователя, но я старался быть как можно более справедливым!), что может помочь вам сделать выбор на основе ваши собственные предпочтения с точки зрения стиля разработки:

И помните знаменитую цитату, которая идет по строкам: «Я предпочитаю, какой из двух я не использую в настоящее время» (извините, я не могу вспомнить, кто на самом деле написал это, возможно, Дженик Бержерон?)

VHDL

  • сильно типизированных
  • более подробный
  • очень детерминированный
  • не-C-подобный синтаксис (и мышление)

Множество ошибок компиляции для начала, но в основном работает, как вы ожидаете. Это может привести к очень крутой кривой обучения (наряду с незнакомым синтаксисом)

Verilog

  • слабо типизированных
  • более краткий
  • только детерминированный, если вы внимательно следите за некоторыми правилами
  • больше C-подобный синтаксис (и мышление)

Ошибки встречаются позже в симуляции - кривая обучения «ощущение чего-то сделанного» является более мелкой, но продолжается дольше (если это правильная метафора?)

Также в пользу Verilog заключается в том, что высококачественная проверка все больше зависит от SystemVerilog, которая является огромным расширением Verilog. Но высокопроизводительные инструменты также могут комбинировать код синтеза VHDL с кодом подтверждения SystemVerilog.


Для другого подхода полностью: MyHDL - вы получаете всю мощь Python в качестве языка проверки с набором расширений синтеза, из которых вы можете создать либо VHDL, либо Verilog.

Или Cocotb - все возможности Python в качестве языка проверки, причем ваш синтезируемый код все еще написан в зависимости от того, что HDL вы решили учиться (т.е. VHDL или Verilog).

ответил Jason Han 6 AM00000020000005131 2017, 02:48:51
38

Я узнал и ту же неделю. VHDL похож на ADA /Pascal, а Verilog похож на C. VHDL более подробный и более болезненный, чтобы получить компиляцию, но как только вы получите компиляцию, ваши шансы на успех лучше. По крайней мере, это то, что я нашел. Verilog, как и C, вполне удовлетворен тем, что вы стреляете в ногу. Некоторые отрасли промышленности, такие как аэрокосмическая отрасль, склоняются к VHDL, другие склоняются к Verilog. Проблема, которую я нахожу с обоими, - это возможности тестового стенда, и когда вы пытаетесь научиться и пытаетесь перейти от симуляции к силиконовой /FPGA-записи, синтезируемый только код, это еще один уровень образования.

Мне очень нравится язык CDL . Он строго синтезируется, вы пишете свои скамьи другими способами, он генерирует синтезируемый Verilog, который вы можете использовать в других инструментах. К сожалению, отсутствуют документы CDL , я надеюсь получить образцы в мире, чтобы показать, насколько их проще использовать, чем Verilog или VHDL, но просто не делайте этого. Он поставляется со своей собственной симовой /тестовой средой. С CDL и GTKWave вы можете сделать значительный объем работы.

Еще один инструмент под названием Verilator - достаточно жесткий, чтобы ваш Verilog был чистым. Это бесплатный симулятор Verilog с очень простым способом подключиться к симу или создать тестовые скамейки в C /C ++. Вы также можете использовать Verilog, не ограничивая вас там. Существует Icarus Verilog , который больше и более известен, но я бы рекомендовал Verilator , если вы хотите изучить Verilog. Для VHDL существует GHDL , мой опыт работы с ним был не таким хорошим, как Verilator , но, по крайней мере, есть бесплатный инструмент для того, чтобы ваши ноги были мокрыми. Если у вас есть опыт программирования, вы, скорее всего, заберете Verilog быстрее, чем VHDL.

Я определенно согласен с Леоном, попробуйте оба. fpga4fun и другие веб-страницы имеют некоторую хорошую информацию, и некоторые из этих страниц предоставят вам эквиваленты Verilog и VHDL для темы, которую они обсуждают , Я нахожу такие страницы, которые наиболее полезны для сравнения двух языков. Если использование HDL - это то, что вы хотите сделать в своей карьере, я рекомендую иметь хотя бы некоторые возможности с обоими, возможно, очень хорошо с одним, но не полностью не могу использовать другой.

ответил Jason Han 6 AM00000020000005131 2017, 02:48:51
22

Многие священные войны боролись за это. Одним из особых недостатков Verilog является его недетерминированное поведение. http://www.sigasi.com/content/verilogs-major-flaw

ответил Jason Han 6 AM00000020000005131 2017, 02:48:51
18

Оба имеют свои преимущества и недостатки. VHDL является более академичным, многословным и сложным. Вы должны написать больше кода, но строгость означает, что он с большей вероятностью будет работать. Verilog проще для типичного цифрового дизайна, но упрощает создание сложных ошибок. VHDL чаще встречается в университетах. Verilog чаще встречается в крупных полупроводниковых компаниях.

Обычно выбор одного или другого зависит от используемых вами инструментов. Некоторые из популярных инструментов FPGA лучше работают с VHDL. Некоторые популярные инструменты ASIC улучшают работу с Verilog. Итак, что лучше зависит от того, что вы хотите с ним сделать.

Предположим, вы хотите создавать небольшие проекты с использованием ПЛИС Altera, которые популярны в школах EE. Свободные инструменты поддерживают оба HDL. Но вы можете обнаружить, что сообщество пользователей в основном использует VHDL. Там будет больше примеров кода, многоразовых модулей и т. Д., Если вы выберете этот язык.

И наоборот, если вы намерены работать в большой компании, занимающейся серьезной разработкой чипов, почти все из них используют Verilog в эти дни. Для Verilog оптимизированы мощные инструменты синтеза, моделирования и проверки. И в последнее время SystemVerilog - расширения Verilog для поддержки высокоуровневого проектирования и проверки системы.

Больше обсуждений здесь и полезные ссылки здесь:

http: //www.eetimes.com/electronics-blogs/programmable-logic-designline-blog/4032239/Verilog-versus-VHDL-which-is-best-

Для начинающего /любителя лучший совет - решить, с какими фишками вы хотите играть, и посмотреть, какие примеры предоставляет поставщик. Используйте это. Когда вы будете опытным цифровым дизайнером, изучение другого языка займет всего несколько дней.

ответил Jason Han 6 AM00000020000005131 2017, 02:48:51
17

Короткий ответ : используйте SystemVerilog, но также изучите VHDL . Избегайте Verilog-2001, если можете.

Очень длинный ответ : на данный момент я полагаю, что Verilog означает Verilog-2001, что, вероятно, и то, что и большинство других ответов. Лучшим предложением было бы, вероятно, изучить оба, но не использовать их (подробнее об этом в конце ответа). Основные отличия могут быть возобновлены в следующем:

  • Verilog-2001 лаконичный , в то время как VHDL (очень, очень, очень) подробный
  • Verilog-2001 поддерживает конструкции с очень низким уровнем, которые не поддерживаются VHDL (но вам не придется использовать их для типичного дизайна уровня ретрансляции (RTL)
  • VHDL более строго типизирован , что обычно значительно облегчает обнаружение ошибок раньше
  • VHDL гораздо более выразительный , чем Verilog
  • Verilog-2001 имеет синтаксис C-like , тогда как VHDL более Ada-like
  • Verilog-2001 может иметь некоторые запутанные понятия для новичков (например, wire vs reg)

Тем не менее, наиболее важные понятия разделяются двумя языками, хотя и разными именами (например, always vs process)), и в любом случае трудности с изучением HDL больше связан с концепциями (такими как параллелизм всех процессов, соглашений HW и т. Д.), Чем с самим языком. Учитывая различия, если выбор между Verilog 2001 и VHDL, я лично обратился к любому новичку с VHDL.

Однако, как я уже сказал, мое предложение состоит в том, чтобы использовать ни VHDL, ни Verilog-2001, если у вас есть выбор. Вопреки тому, что многие считают, SystemVerilog не является языком более высокого уровня, полезным только для проектирования или проверки на системном уровне, и он мало чем может поделиться с языками, которые могут быть переданы в инструмент синтеза высокого уровня, например SystemC.

Вместо этого SystemVerilog является полным обновлением языка Verilog (на основе Verilog-2005, см. http: //en.wikipedia. org /wiki /SystemVerilog ), который имеет полностью синтезируемое подмножество, которое соответствует conciseness Verilog с более высокой выразительностью , чем Verilog-2001 и VHDL, предоставляя в моем мнение лучшее из обоих миров.

Примеры очень значимых конструкций /выражений, доступных в SystemVerilog, которые недоступны в Verilog-2001, VHDL или обоих, включают:

  • always_ff, always_latch, always_comb, которые помогают разработчику сразу различать блоки, реализующие разные типы логики, и - для always_comb и always_latch - автоматически выводит сигналы, которые должны поступать в список чувствительности (источник бесконечных ошибок в VHDL и Verilog, особенно для новичков!)
  • logic, которые заменяют путаные типы wire и reg Verilog-2001
  • упакованные типы, которые позволяют легко строить многомерные шины (например, логика [N-1: 0] [M-1: 0] [P-1: 0]), тогда как Verilog-2001 поддерживает только двумерные шины, а VHDL заставляет конструктора определять новые типы для построения похожих структур.
  • высокоуровневые конструкции, такие как struct (похожие на VHDL record) и даже более высокий уровень interface, которые могут быть использованы очень эффективно для модельные регулярные структуры (такие как порты шины)

Я тестировал все эти различия «на моей коже», работая над довольно сложной многоядерной системой для исследовательских целей. В настоящее время он поддерживается многими инструментами, и я точно знаю (от их использования почти каждый день), что он поддерживается инструментами Synopsys (как для потоков синтеза ASIC, так и для FPGA), Xilinx Vivado (для синтеза FPGA) и инструментов моделирования как MentorGraphics Modelsim, Cadence NCsim и Synopsys VCS.

Чтобы быть полностью полным, в наборе инструментов конструктора оборудования есть еще два значимых типа языков (хотя качество этих инструментов может сильно различаться):

  • поколения HDL , такие как MyHDL (на основе Python) и Rocket (на основе Scala). Концепция здесь заключается в следующем: вы описываете свой дизайн на языке более высокого уровня, но все же используете очень HDL-ичные концепции (например, параллельные блоки, явное время), а затем генерируете обычный HDL (обычно Verilog-2001). Честно говоря, я не считаю эти супер полезными, поскольку шаг абстракции от HDL невелик, и SystemVerilog предоставляет уже многие концепции более высокого уровня, с тем преимуществом, что он напрямую подается в поток синтеза без промежуточных шагов.
  • Инструменты синтеза высокого уровня , такие как Vivado HLS, LegUp, Calypto Catapult и многие другие. Они содержат очень высокоуровневое описание, часто в C, C ++ или SystemC и обычно не задействованы, и генерируют наилучшую реализацию (обычно нечитаемую)Verilog. Они довольно хороши в создании некоторых объектов (например, ускорители HW для таких функций, как свертка, БПФ и т. Д.), Но, как правило, не являются универсальными. Например, невозможно создать процессорное ядро ​​в большинстве инструментов HLS - единственное, что я знаю о BlueSpec, которое действительно является гибридом между генерацией HLS и HDL.
ответил Jason Han 6 AM00000020000005131 2017, 02:48:51
11

Моя карьера за последние 13 лет составляла 80% ASIC и 20% FPGA.

VHDL использовался в течение первых 3,5 лет, а остальные были Verilog. Я не нашел переключение на Verilog сложным, и для местоположения (Silicon Valley) & Скорее всего, я только код в Verilog сегодня.

Кроме того, я занимаюсь большим количеством асинхронных интерфейсов, защелок и полуавтоматического дизайна уровня ворот для производительности, поэтому VHDL сейчас очень мало используется в моей жизни. Вместо этого я нашел SystemVerilog и SystemC гораздо полезнее подобрать и использовать для крупных инженерных проектов.

На одном этапе инструменты, такие как Verilator (free! & fast), сэкономили мне много необходимого фонда для критического моделирования. У вас нет этой опции (пока) для VHDL. И вам может и не понадобиться, если вы всегда плаваете в богатом пуле, или вы не делаете проекты с 1 миллисекундой.

Neverless, VHDL лучше для новичков, прежде чем они разработают четкие принципы проектирования HW. Мои сообщения с представителями EDA здесь показывают, что они проделали небольшие разработки VHDL за последние 10 лет, и сегодня у HLS есть большой драйв. Так что разработчиков инструментов VHDL не будет вокруг ...

ответил Jason Han 6 AM00000020000005131 2017, 02:48:51
6

Я пошел на VHDL, в основном потому, что я хорошо знаю C и обнаружил, что попытка написать verilog имеет тенденцию писать мне, как будто я нацелился на процессор, не описывающий аппаратное обеспечение.

Очень раздражает писать страницу кода и понимать, что вы написали, была фактически последовательной программой, а не аппаратным дизайном, да, она будет синтезировать, но результат был уродливым и медленным.

VHDL был достаточно разным, и мне было гораздо легче думать о логическом дизайне, а не об управлении потоком.

В конце дня язык редко является жестким битом, умение в дизайне системы не печатается.

С уважением, Дэн.

ответил Jason Han 6 AM00000020000005131 2017, 02:48:51
5

В прошлом году в университете, который я изучал, были организованы два открытых курса для начинающих. Оба охватывали один и тот же контент, но один использовал VHDL и другой Verilog.

Конечно, я спросил обоих профессоров о различиях VHDL и Verilog. Оба не могли выбрать лучшего.

Так что мне пришлось делать оба курса, чтобы посмотреть, какой из них лучше для меня. Мое первое впечатление было VHDL более похоже на Pascal и Verilog более C-like .

После этого я решил сделать только VHDL, потому что в то время я работал с Delphi.

Но я никогда не работал с FPGA после курса. Так что это лучшее, что я могу вам помочь.

ответил Jason Han 6 AM00000020000005131 2017, 02:48:51
5

Я использую VHDL почти полностью. Мой опыт в том, что VHDL чаще встречается в Европе, Verilog в США, но VHDL также добивается устойчивого прогресса в США. Сильная типизация VHDL меня не беспокоит, потому что я использую ее как старомодный язык аппаратного дизайна, используемый в малой программируемой логике, такой как PALASM или AHDL от Altera.

Большая проблема для большинства людей, использующих VHDL, - это сильные типы. Они хотят назначать между std_logic_vector (который я думаю как набор проводов в целевом объекте) и «int» (который я считаю как число, хранящееся на компьютере, который компилирует проект). Наиболее раздражающее преобразование типа, в которое я обычно сталкиваюсь, находится между bit_vector (который я считаю как описание набора проводов в компиляции проекта) и std_logic_vector. На самом деле то, что перетащило меня на stackexchange прямо сейчас, искало преобразование из char (символьная переменная, хранящаяся на компилирующем компьютере) в int.

В тот же день самым известным конфликтом между VHDL и Verilog стал конкурс дизайна, организованный ASIC & Журнал EDA. Google «Неожиданные результаты конкурса аппаратного дизайна: Verilog Won & VHDL Lost? - вы сами являетесь судьей!», Например: http://www.ee.ed.ac.uk/~gerard/Teach/Verilog/manual/Example/lrgeEx2/cooley.html

Конкурс заключался в том, чтобы реализовать довольно сложный 9-битный регистр. Он имел вверх-вниз подсчет, а также несколько других вещей. Результаты состояли в том, что у 8 из 9 дизайнеров Verilog был запущен код через 90 минут. У нуля 5 парней VHDL было что-то работающее.

Я не использую VHDL, как и все остальные. То, как я его использую, типы не очень сильно мешают мне. Я бы реализовал вышеупомянутый проект так же, как и все остальное, полностью в std_logic и std_logic_vector, используя (обратно в день) IEEE неподписанную библиотеку. Вместо этого я предполагаю, что дизайнеры VHDL выполнили свою работу с int и потерялись при преобразовании типов.

Есть два места, которые вы можете потерять при преобразовании типов: (a) ваш дизайн и (b) ваш стенд. Для меня просто легче написать тестовый стенд (почти) полностью в std_logic, поэтому сам тестовый стенд (почти) синтезируется. Под «почти» я подразумеваю, что я определяю часы с задержкой присваивания, которые невозможно синтезировать. Но кроме этого (и комментариев) вы не можете отличить мои тестовые скамейки от синтезированной логики.

В любом случае, прежде чем вы решите выбрать первый язык (почти у каждого есть предпочтение, но почти каждый использует оба), я бы посоветовал посмотреть этот конкурс и прочитать комментарий на нем.

Одна из проблем, которые я наблюдал с VHDL, заключается в том, что, поскольку это очень многословный язык, кажется, есть тенденция (в сознании дизайнеров) полагать, что она не требует комментариев. Не верно, конечно, вы должны написать комментарии перед кодом.

ответил Jason Han 6 AM00000020000005131 2017, 02:48:51
5

Я буду взвешивать свои два цента: Я сам являюсь тяжелым пользователем VHDL, но Verilog, безусловно, может справиться с этой задачей. Вы всегда можете обернуть один в другой (хотя и с указанием времени и набора текста).

Что я нашел, так это то, что у необработанного VHDL нет много удобных функций. (OR или AND: возникает целый std_logic_vector). Таким образом, создание собственного инструментария отлаживаемых, синтезируемых функций значительно увеличивает производительность при использовании VHDL.

Возможно, кто-то может ссылаться на хорошую библиотеку с открытым исходным кодом, которая предлагает все эти «хорошие функции»?

ответил Jason Han 6 AM00000020000005131 2017, 02:48:51
4

Предыдущие ответы в значительной степени охватывают контрасты между двумя языками, и эта статья также очень хорошо описывает пункты: http://www.bitweenie.com/listings/verilog-vs-vhdl/

Я также хотел бы сделать еще пару замечаний, которые не были упомянуты.

Я бы рекомендовал сначала изучить VHDL по нескольким причинам. Сильная типизация помогает некоторым легким ошибкам начинающего быть пойманным компилятором. Я также слышал, что VHDL сложнее подобрать после первого использования Verilog.

Честно говоря, вы не ошибетесь ни с одним из языков; и если вы работаете в этой отрасли очень долго, вы все равно будете изучать оба языка.

ответил Jason Han 6 AM00000020000005131 2017, 02:48:51

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132