VHDL або Verilog? [зачинено]


93

VHDL і Verilog - це ЛПВЩ сьогодні. Які переваги є для того, хто взагалі не має досвіду ЛПВЩ?


2
Вони здаються однаково ефективними, вибирайте той, який вам більше подобається. Я вважаю, що VHDL мені найбільше підходить.
Леон Геллер

1
Як я можу дати цим модераторам "проголосувати"? Риторика людей з досвідом раніше цінніша, ніж інформація, що міститься в книгах. Книги не несуть поняття часу.
dsgdfg

Відповіді:


70

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

І майте на увазі знамениту цитату, яка йде у відповідь на те, що "я віддаю перевагу тому, що з тих, кого я зараз не використовую" (вибачте, я не можу пригадати, хто насправді це написав - можливо, Дженік Бергерон?)

VHDL

  • сильно набраний
  • більш багатослівний
  • дуже детермінований
  • не-подібний синтаксис (і настрій)

Багато помилок у компіляції для початку, але в основному працює так, як ви очікуєте. Це може призвести до дуже крутої кривої почуття (поряд із незнайомим синтаксисом)

Верилог

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

Помилки виявляються пізніше в моделюванні - крива навчання "відчуття, як щось зробити" стає дрібніше, але триває довше (якщо це правильна метафора?)

Також на користь Verilog є те, що перевірка високого класу все більше схиляється до SystemVerilog, що є величезним розширенням до Verilog. Але інструменти високого класу можуть також комбінувати код синтезу VHDL з кодом підтвердження SystemVerilog.


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

Або Cocotb - вся потужність Python як мови підтвердження. Ваш синтезуючий код все ще записується в той HDL, який ви вирішили вивчити (наприклад, VHDL або Verilog).


2
Я знаю Verilog, але я не знайомий з VHDL: що ви означаєте, що VHDL є більш детермінованим, ніж Verilog?
cic

44

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

Є мова, яку мені дуже подобається називати CDL . Це суворо синтезується, ви пишете свої тестові стенди іншими способами, він створює синтезований Verilog, який ви можете взяти до інших інструментів. На жаль, документів CDL не вистачає, я сподіваюся отримати кілька зразків у світі, щоб показати, наскільки простіше використовувати, ніж Verilog або VHDL, але просто цього не зробили. Він оснащений власним сим / тестовим середовищем. За допомогою CDL та GTKWave ви можете виконати значну кількість роботи.

Інший інструмент під назвою Verilator - досить жорсткий у підтримці чистоти Verilog. Це безкоштовний симулятор Verilog з дуже простим способом приєднатися до sim або створити тестові стенди в C / C ++. Ви також можете використовувати Verilog, але це не обмежує вас. Також є Ікар Верилог , який є більшим і більш відомим, але я б рекомендував Verilator, якщо ви хочете вивчити Verilog. Для VHDL є GHDL , мій досвід роботи з ним був не таким хорошим, як Verilator , але принаймні є безкоштовний інструмент для спроб змочити ноги. Якщо у вас є досвід програмування програмного забезпечення, ви, швидше за все, отримаєте і користуєтеся Verilog швидше, ніж VHDL.

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


1
Дуже хороші поради. Я відредагував вашу відповідь як посилання на мене та інших. +1
Даніель Грілло

23

За це боролося багато святих воєн. Одним з особливих недоліків Verilog є його недетермінована поведінка. http://www.sigasi.com/content/verilogs-major-flaw


Так, це виглядає погано, але я не впевнений: це недолік у мові чи в цьому конкретному синтезаторі?
stevenvh

4
Це питання мови. Різні синтезатори обирають власну поведінку непередбачувано. Запустіть один і той же код на тренажері Mentor або тренажері каденції, і ви можете отримати різні результати.
Філіп

20

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

Зазвичай вибір того чи іншого визначається інструментами, якими ви користуєтесь. Деякі з популярних FPGA-інструментів краще спрацьовують з VHDL. Деякі популярні засоби ASIC роблять краще з Verilog. Отже, що краще залежить від того, що ви хочете зробити з цим.

Скажімо, ви хочете створити невеликі проекти, використовуючи FPGA Altera, які популярні в школах EE. Безкоштовні інструменти підтримують обидва HDL. Але ви можете виявити, що спільнота користувачів в основному використовує VHDL. Буде більше прикладу коду, багаторазових модулів тощо, якщо ви виберете цю мову.

І навпаки, якщо ви маєте намір працювати у великій компанії, яка займається серйозними роботами з дизайну чіпів, майже всі вони користуються Verilog в наші дні. Інструменти синтезу, моделювання та перевірки важких режимів оптимізовані для Verilog. А останнім часом SystemVerilog - розширення для Verilog для підтримки дизайну та перевірки системи високого рівня.

Більше дискусій тут та корисних посилань тут:

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

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


4
Дякую. Останнє речення важливе. Чи є інструменти, які перетворюють одне в інше?
stevenvh

Є якась історія у нас, що я не хочу потрапити, але якщо ви подивитеся на modelsim, коли він бере verilog, він перетворюється на vhdl, а потім sims що. Це не робить навпаки, так що принаймні verilog до vhdl можна побачити певну конверсію за допомогою цього інструменту. є інші інструменти, які спеціально конвертують той чи інший спосіб, і вони мають демо-версії.
old_timer

3
Деякі з комерційних (синтез, статичний аналіз) інструментів читатимуться однією мовою, а інші - іншим. Результат, як використання компілятора, щоб перетворити Ada на мову складання, а потім декомпілятор для вилучення C. Результат вам не сподобається.
Енді МакК

17

Коротка відповідь : використовуйте SystemVerilog, але вивчіть також VHDL . Уникайте Verilog-2001, якщо можете.

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

  • Verilog-2001 є стислим , тоді як VHDL є (дуже, дуже, дуже) багатослівним
  • Verilog-2001 підтримує конструкції дуже низького рівня, які не підтримуються VHDL (але вам не доведеться використовувати їх для типового дизайну рівня передачі реєстру (RTL))
  • VHDL набирається більш сильно , що, як правило, значно спрощує виявлення помилок на ранньому етапі
  • VHDL набагато виразніше, ніж Verilog
  • Verilog-2001 має синтаксис, подібний до С , тоді як VHDL - більш схожий на Ada
  • Верилог-2001 може мати деякі заплутані поняття для початківців (наприклад, wireпроти reg)

Однак, найважливіші поняття поділяються двома мовами, хоча і різними назвами (наприклад, alwaysvs process), і в будь-якому випадку складність у вивченні ЛПВЩ більшою мірою пов'язана з поняттями, що стоять позаду (наприклад, одночасність усіх процесів, HW конвенції тощо), ніж до самої мови. Враховуючи відмінності, якщо вибір буде між Verilog 2001 та VHDL, я особисто звернувся до будь-якого новачка до VHDL.

Однак, як я вже говорив, моя пропозиція насправді не використовувати ні VHDL, ні Verilog-2001, якщо у вас є можливість вибрати. На противагу тому, що багато хто припускає, SystemVerilog не є мовою вищого рівня, корисною лише для проектування або перевірки на системному рівні, і має мало спільного з мовами, які можуть подаватися в інструмент синтезу високого рівня, як SystemC.

Натомість SystemVerilog - це повне оновлення мови Verilog (на основі Verilog-2005, див. Http://en.wikipedia.org/wiki/SystemVerilog ), що має повністю синтезований підмножина, що відповідає стислість Verilog з більш високою експресивністю, ніж обидві. Verilog-2001 та VHDL, що забезпечують, на мій погляд, найкращі з обох світів.

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

  • always_ff, always_latch, always_combБлоки , які допомагають розробнику відрізнити відразу між блоками , що реалізують різні види логіки, і - always_combі always_latch- (! Джерелом численних помилок в VHDL і Verilog, особливо для початківців) висновок автоматично сигнали , які повинні йти в списку чутливості
  • logicтипи, що підміняють заплутані wireта regтипи Верилог-2001
  • упаковані типи, що дозволяють легко будувати багатовимірні шини (наприклад logic [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-ish (наприклад, одночасні блоки, явні терміни), а потім генеруєте звичайні HDL (зазвичай Verilog-2001). Чесно кажучи, я не вважаю ці супер корисними, оскільки крок абстрагування від ЛПВЩ малий, і SystemVerilog надає вже багато концепцій вищого рівня, з тим перевагою, що він безпосередньо подається в потік синтезу без проміжних кроків.
  • Інструменти високого рівня синтезу , такі як Vivado HLS, LegUp, Calypto Catapult та багато інших. Вони беруть опис на високому рівні, часто в C, C ++ або SystemC і, як правило, ненавмисне, і генерують найкращі зусилля в (зазвичай нечитабельному) Verilog. Вони досить добре генерують деякі об'єкти (наприклад, прискорювачі ГВ для таких функцій, як згортка, ЗПТ тощо), але, як правило, не мають загального призначення. Наприклад, неможливо розробити процесорне ядро ​​в більшості інструментів HLS - єдиний, про який я знаю, - BlueSpec, який справді є гібридом між HLS та HDL поколінням.

Це майже те, як я дізнався. Перший вивчив VHDL і кодував його протягом 3 років. Після цього провів 3 місяці Verilog кодування і (дуже швидко) вирішив, що SystemVerilog - це саме шлях. Зараз я кодую виключно SV, але сильно покладаюся на розуміння та методи кодування, які я навчився під час використання VHDL.
станрі

12

Моя кар'єра за останні 13 років складала 80% ASIC і 20% FPGA.

VHDL використовували протягом 1-го 3,5 року, решта - Verilog. Перемикання на Verilog мені не було складним, і сьогодні я лише кодуюсь у Verilog.

Крім того, я дуже багато інтерфейсів Async, засувок та напівпровідної конструкції на рівні воріт для продуктивності, тому VHDL зараз дуже мало використовує в моєму житті. Натомість я знайшов SystemVerilog та SystemC набагато кориснішими для підбору та використання для великих інженерних проектів.

На одному етапі такі інструменти, як Verilator (безкоштовно! Та швидкий), врятували мені дуже багато необхідного фонду для критичних симуляцій. У вас немає такої опції (поки що) для VHDL. І вам це може ніколи не знадобитися, якщо ви завжди купаєтесь у багатому басейні або не робите> 1-метрова конструкція воріт.

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


FreeHDL для моделювання VHDL? Qucs як передній.
Мартін

8

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

Дуже прикро писати сторінку коду і усвідомлювати те, що ви написали, фактично була послідовною програмою, а не апаратним дизайном, так що вона буде синтезуватися, але результат був некрасивим і повільним.

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

Зрештою, мова рідко є жорстким бітом, майстерність полягає в дизайні системи, а не в наборі тексту.

З повагою, Ден.


5

Минулого року університет, який я вивчав, просунув два відкриті курси для початківців. Обидва охоплювали один і той же вміст, але один використовував VHDL, а інший Verilog.

Звичайно, я запитав обох професорів про відмінності VHDL та Verilog. Обидва не змогли обрати найкращих.

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

Після цього я вирішив займатися лише VHDL, оскільки на той час я працював з Delphi.

Але я ніколи не працював з FPGA після курсу. Тож це найкраще, що я можу вам допомогти.


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 програли? - Ти будеш суддею!", Наприклад: 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, є те, що оскільки це дуже багатослівна мова, схоже, існує тенденція (у думці дизайнерів) вважати, що вона не потребує коментарів. Не вірно, звичайно, слід писати коментарі перед кодом.


1
Я думаю, що це цікаве твердження, що сильна типізація VHDL є найбільшою проблемою. Для мене сильне введення тексту - це центральна особливість, яка дозволяє мені підвищити рівень абстракції. У апаратному дизайні у вас є вибір між описом структури, яка реалізує поведінку, або описом поведінки, яка реалізує структуру. Історія показала, що абстракція є запорукою успішного проектування великих систем, і цифрові системи не є винятком. Я думаю, що ви багато чого сумуєте, обмежуючись дуже вузьким набором мовних особливостей.
trondd

2
Щоправда, але я не спеціалізуюсь на "великій системній конструкції", я спеціалізуюся на дрібних речах, які повинні бути надзвичайно ефективними. Існує ряд причин того, що ефективність іноді стає найважливішою в дизайні електроніки. Іноді велика система виготовляється з багатьох цих маленьких систем, і такий вид конструкції дає набагато більшу ефективність.
Карл Браннен

5

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

Що я виявив - це те, що сировинному VHDL бракує багато зручних функцій. (АБО ТА ТА: якщо на думку приходить цілий std_logic_vector). Таким чином, побудова собі набору інструментів з налагоджених, синтезованих функцій проходить довгий шлях підвищення вашої продуктивності при використанні VHDL.

Можливо, хтось міг би посилатися на хорошу бібліотеку з відкритим кодом, яка пропонує всі ці функції "доброго використання"?


2
Я впевнений, що І / АБО скорочення включено до VHDL 2008 разом із деякими іншими корисними оновленнями.
ks0ze

4

Попередні відповіді в значній мірі висвітлювали контрасти між двома мовами, і ця стаття також досить добре висвітлює точки: http://www.bitweenie.com/listings/verilog-vs-vhdl/

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

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

Чесно кажучи, ви не можете помилитися ні з однією мовою; і якщо ви дуже довго працюєте в цій галузі, з часом ви все одно будете вивчати обидві мови.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.