Перейти к содержанию
    

Мне кажется следует вспомнить что изначально

1) VHDL создавался ни для моделирования, ни для синтеза.

2) Verilog создавался для моделирования, но не синтеза.

 

Чистыми языками дла синтеза можно считать CUPL, ABEL, PALASM, AHDL

 

В лоб сравнивать VHDL и Verilog вообще некоректно.

И то, что они (VHDL и Verilog) позволяют это (моделирование и синтез) делать - не факт, что они это делают плохо или хорошо.

Факт, что это они делают с переменным успехом, и возможно оба не на твердую 5.

 

P/S

Не вижу способов объективно сравнивать VHDL и Verilog.

Думаю все упирается в личные предпочтения.

 

P.S.

И если нам приходится забивать гвозди микроскопами - то не надо спорить какой из них лучше.

Лучше молоток, но нам его не дали, точнее забрали... (Это я о AHDL) :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

под Паскалем, я подразумеваю ООП Паскаль (Дельфи), и кстати в конце 90х это был очень популярный язык под винду из-за быстрого и хорошего компилера.

но несмотря на кривость и убогое происхождение С++, почему-то не прижилось дельфи

 

Не прижился, потому что умер вместе с Борландом. Был поборот MSVS, кстати, очень качественным компилятором с отличной поддержкой MS.

 

а вспомним STL, ведь это немаловажный фактор успеха С++

и темплейтную/параметризованную библиотеку OVM - есть ли что-то подобное в VHDL? нет и невозможно

 

Нет.

STL появился, когда плюсы уже были на пике популярности. В MSVC долгое время не было работоспособного STL, и мало кто жаловался.

И STL в плюсах очень сильно преусложнена. Традиционно все писали сами свои контейнеры под свои нужды.

 

мне кажется, что пользователей/программистов UNIX-а до недавнего времени (да может и сейчас) было гораздо меньше, чем виндовых

ну и GCC кроме С++ изначально поддерживал ADA, по-крайней мере когда я с gcc столкнулся ADA фронтэтд уже был, и по-моему используют они одну и ту же библиотеку, по крайней мере скомпилить и запустить ADA программу на UNIX машине не проблема

тем не менее ADA мало кто пользует (а это чистый VHDL Ж), адский исходник от вхдлного человек не в теме не отличит друг от друга

 

то есть я не согласен с тем что связь UNIX-C обеспечила успех С, может даже наоборот - из-за того, что UNIX был сразу на С написан обеспечило успех UNIX-у

 

Юникс изначально был написан на Сях. Это дало портируемость операционки и было огромным шагом вперед. При этом использовать в качестве системного языка язык программирования, требующий существенной поддержки библиотеками, очевидно невозможно. Поэтому Си были как системный язык оптимальны, хоть и позволяли легко делать глупые ошибки. Но в качестве языка написания приложений Си - просто кошмар. Тем не менее, Юниксоиды предпочитали использовать его для всего. Плюсы немного улучшили ситуацию, не закрыв полностью так любимые сишниками дыры сей, позволяющие делать глупые ошибки и, кстати, очень сильно мешающие современным компиляторам хорошо компилировать.

 

Для Ада, насколько я знаю, долгое время не было нормальных доступных компиляторов. gcc - это среда относительно новая. И для Виндов долгое время не было нормального компиляторы с Ада. Но, как я понимаю, когда Ada стало возможно нормально использовать, он уже морально устарел. Так как в настоящее время не объектно-ориентированным язык написания приложений быть не может, в Ada соджержатся лишь зачатки объектно-ориентированного подхода. Для плюсов же, повторюсь, начиная с появления Win32 существовал отличный MSVC, к тому же, с очень приличной MFC, так же хорошо поддерживаемой MS и ставшей на десятилетие стандартом написания приложений под Винды. Вот эта вот поддержка MS и определила победу плюсов под Виндами на долгие годы, на самом деле.

 

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

 

а Verilog создавался как практический язык верификации

в нем например есть UDP - для описания блэк боксов в виде таблицы

есть specify (это целый суб-язык) для задания задержек цепей (в VHDL это делается весьма убого посредством Vital)

есть конструкции для gate и switch моделирования (из верилог фанов, кто вспомнит, что значит rtranif0? :))

встроенная система сил драйверов - Pu0 или La1 - кто знает что это?

удобная система управления средой симуляции - тот же $monitor

все это сейчас не нужно, но в 95 годе, наверно это имело смысл

 

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

 

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

 

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

пока это только для верификации,

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

ну и т.д.

 

Да, интерфейсы с направлениями сигналов - это интересно. Говорите, пока что не для синтеза?

 

я рассматриваю VHDL не как Паскаль, а как COBOL - есть достаточно большой объем работоспособного кода на VHDL, поэтому отказаться от него нельзя, но если есть возможность выбора, то SV предпочтительнее. причем не только для верификации, но и для синтеза

 

Ну, из того, что мне легко доступно на Ксайлинксе, VHDL явно сейчас лучший выбор. Когда появится SV - посмотрю на него более внимательно. Но что-то не доверяю я экспертному мнению Вериложников, мне Верилог представляется сравнимым с Фортраном, на самом деле. То, что вериложники считают отсутствие в языке средств самоконтроля программиста благом, еще больше заставляет меня сомневаться в этом языке. И для Сей были всякие Линты, но побеждают языки со втроенными средствами контроля, на самом деле.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у меня есть впечатление, что VHDL создавался для документирования - то есть, чтобы отпечатать, прошить, поставить печати и подписи и сложить в сейф DoD-а.

быстро подтверждения этому не нашел, в педивикии

That is to say, VHDL was developed as an alternative to huge, complex manuals which were subject to implementation-specific details.

 

а верилог был сразу задуман как входной язык симулятора (программы), поэтому он не был перегружен бессмысленными на тот момент конструкциями

 

---------------------------------------

 

интерфейсы по идее нужны для связи ООП-ного верификационного SV кода (кстати там есть и типизация для ценителей :) ) с RTL-ным описанием,

но если есть конструкция, то почему бы не добавить в синтезатор?

Synplify и DC сейчас не понимают, Пресижн частично понимает

 

---------------------------------------

 

совет для ксайлинса - пользуйтесь синплифаем, во первых качество кода выше, во вторых доступен SV

я так понимаю политику ксайлинса - они не будут улучшать свой синтез

 

а всякие Латтисы/Актелы вообще синтеза своего не имеют - предлагается выбор синплифай или пресижн

 

 

 

-----------------

 

BTW: Lint-ы для верилога тоже есть

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у меня есть впечатление, что VHDL создавался для документирования - то есть, чтобы отпечатать, прошить, поставить печати и подписи и сложить в сейф DoD-а.

быстро подтверждения этому не нашел, в педивикии

That is to say, VHDL was developed as an alternative to huge, complex manuals which were subject to implementation-specific details.

 

а верилог был сразу задуман как входной язык симулятора (программы), поэтому он не был перегружен бессмысленными на тот момент конструкциями

 

Какие же конструкции VHDL на ваш взгляд бессмыссленные?

 

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

 

интерфейсы по идее нужны для связи ООП-ного верификационного SV кода (кстати там есть и типизация для ценителей :) ) с RTL-ным описанием,

но если есть конструкция, то почему бы не добавить в синтезатор?

Synplify и DC сейчас не понимают, Пресижн частично понимает

 

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

 

Тогда на фиг. Не особо интересно.

 

совет для ксайлинса - пользуйтесь синплифаем, во первых качество кода выше, во вторых доступен SV

я так понимаю политику ксайлинса - они не будут улучшать свой синтез

 

Спасибо, но меня качество синтеза VHDL в ISE пока что более чем устраивает. Мне нужен инструмент под то железо, с которым я сейчас работаю, а не вообще.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

А этого вы не заметили? В конце сообщения.

http://electronix.ru/forum/index.php?showt...st&p=913665

Или это не то?

а это?

assign one = two;

или, например, так?

assign clkout = lock? clk250 : clkin;

Все работает.

Quartus объявил о поддержке синтеза интерфейсов. Поскольку сам я не делал, подтвердить не могу. Но и не верить у меня нет оснований.

Скоро сделаю, подтвер..??дю!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А этого вы не заметили? В конце сообщения.

http://electronix.ru/forum/index.php?showt...st&p=913665

Или это не то?

а это?

assign one = two;

 

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А этого вы не заметили? В конце сообщения.

http://electronix.ru/forum/index.php?showt...st&p=913665

 

Если Вы об этом

if (din) dout[4] <= din;

else dout[4] <= 0;

То мне кажется, это смысла не имеет (масло масленное)

ибо будет в результате

if (din) dout[4] <= 1'b1;

else dout[4] <= 1'b0;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что присваивание работает обычно - я и не сомневаюсь.

А когда не сработало?

 

Если Вы об этом

То мне кажется, это смысла не имеет (масло масленное)

ибо будет в результате

Да, похоже. Я написал, не особо задумываясь, проверить, что синтезируется. И Quartus по-честному реализовал мое желание :)

А Technology Map Viewer показал решение несколько иное (на выходе сигнал инвертируется).

post-10362-1302616861.jpg

post-10362-1302617220_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Quartus по-честному реализовал мое желание

 

Это потому, что думать перестал. (Посмотрите во что в разводке превратилось)

Если Вас простые смысловые посылы не устраивают. Тогда мне кажется VHDL предпочтительнее

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

(Посмотрите во что в разводке превратилось)

Показал и это. Все так, как хотелось с самого начала.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А когда не сработало?

 

Так вот здесь вот. Я сам не проверял, верю написанному.

http://electronix.ru/forum/index.php?s=&am...st&p=913436

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Показал и это. Все так, как хотелось с самого начала.

 

А мне так не хочется.

post-804-1302617998_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А мне так не хочется.

Ну, я добавлю еще пару триггеров, сделаю полноценный синхронизатор. Если начало вышло, так и конец получится :)

На досуге сделаю.

 

Так вот здесь вот.

Вот такой код -

  always @(posedge din)
  begin
    dout[4] <= din;
  end

На RTL-Viewer нарисовал триггер. В Map-Viewer просто повесил 1 на dout[4].

 

А вот такой -

  always @(posedge clkin or posedge din)
  begin
    dout[4] <= din;
  end

И там, и там соединил din с dout[4]

Уж не знаю, почему, но Quartus 9.1 готов реализовать мои самые безумные фантазии :)

Там еще sazh спрашивал, какой кристалл - Cyclone-II EP2C8Q208.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какие же конструкции VHDL на ваш взгляд бессмыссленные?

 

язык, откровенно говоря, простой и конструкций там немного.

я не писал про его бессмысленность, но раз уж затронули

то по-моему бессмысленность + недостатки

1) конфигурации, ни разу не использовал

а вот отсутствие препроцессора это плохо. условной компиляцией через if generate много не сделаешь (и до кучи :) там else нету)

всегда в коде закоментированные блоки, откоментированные блоки

2) требование component->use->package лишней писанины (я знаю, что в 98(?) стандарте можно инстанциировать entity, но это же не путь тру-VHDL)

3) это всегда вспоминают - непродуманные библиотеки преобразований и математики (если считать, что типизация это хорошо), то есть a+1 с непривычки ставит в тупик, ну и каждый пишет свою библиотеку преобразований типов.

4) убогий ввод-вывод, каждый пишет свою библиотеку

5) отсутствие иерархических путей (через .) и полезных системных функций

6) resolved и unresolved логику (ну типа библиотеки рассматриваем как часть языка, ведь чистый VHDL вообще ни для чего не годен)

7) была какая-та муть с дразверами - верилог-симулятор добавляет все драйвера в стек событий, а у VHDL этого нет - там просто убивается старый драйвер, ну и вообще с delta циклом у верилога гораздо продуманей все, а в SV даже стандартизовано (в VHDL аналога #0 нету)

ну и еще наверно можно придумать....

с необходимостью разделения на signal и variable можно поспорить

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Quartus объявил о поддержке синтеза интерфейсов. Поскольку сам я не делал, подтвердить не могу. Но и не верить у меня нет оснований.

Если синтез интерфейсов - это интерфейсы в синтезируемом коде, то да, работает.

 

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

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

 

  always @(posedge C or posedge Rst)
  begin
    O2<=Rst;
    
    if(Rst) O1<=1;
    else O1<=0;
  end

 

Собственно, синтезируются обе конструкции. Только вторая синтезируется в регистр с асинхронным сбросом, а первая в кобинационную связь типа "провод" между выходом и входом и варнинг "не найден клок, синтезирую комбинационку" :)

Изменено пользователем Ethereal

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...