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

  

70 проголосовавших

  1. 1. Как следует называть код, написанный на HDL?

    • Программа
      10
    • Схема
      1
    • Описание схемы
      47
    • Другой вариант
      12


Где-то так. :) И почему же описание действий на том же верилоге не является программой?

 

Потому что железо только снится.

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


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

Где-то так. :) И почему же описание действий на том же верилоге не является программой?

 

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

 

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

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


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

Проголосовал за другое. На мой взгляд код на xHDL - описание работы сущности, он не является ни программой, ни схемой. В данном случае схема - есть результат обработки сущности синтезатором.

 

Согласен! И не программа, и не схема.

И теперь вопрос со стороны начинающего - а мало ли чего синтезаторы да компиляторы придумают!

Не боязно?

Иногда пишешь - все в порядке! Чуть по-другому (then,when,if,else,case)- попал!

По-моему за нас думают. И не всегда правильно.

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


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

И теперь вопрос со стороны начинающего - а мало ли чего синтезаторы да компиляторы придумают!

Для этого существуют средства формальной верификации (например Formality), которые проверяют эквивалентность описаний до синтеза и после синтеза. Синтез не имеет права нарушать описания, он имеет право только одно заменять другим, эквивалентным заменяемому. То есть в процессе синтеза схема, описанная Вами в исходнике, нарушаться не имеет права, а лишь может преобразовываться в другую, эквивалентную ей схему, но построенную из другого, допустимого, множества элементов. (Например Вы установили в схему многобитный сумматор, применив оператор "+", а синтезатор разложил его на N однобитных, но эквивалентность осталась). Таким образом, если синтезатор что-то придумает за Вас сам, то в процессе формальной верификации это сразу же всплывет, так как потеряется эквивалентность двух схем, что будет жестоко обматерено.

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


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

Для этого существуют средства формальной верификации (например Formality), которые проверяют эквивалентность описаний до синтеза и после синтеза. Синтез не имеет права нарушать описания, он имеет право только одно заменять другим, эквивалентным заменяемому. То есть в процессе синтеза схема, описанная Вами в исходнике, нарушаться не имеет права, а лишь может преобразовываться в другую, эквивалентную ей схему, но построенную из допустимого множества элементов. Таким образом, если синтезатор что-то придумает сам, то в процессе формальной верификации это сразу же всплывет, так как потеряется эквивалентность двух схем.

 

А программеры, которые пишут синтез не ошибаются?

Вы не ошибаетесь?

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


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

А программеры, которые пишут синтез не ошибаются?

Еще раз повторю, в том числе для выявления этих ошибок и существуют средства верификации. Формальная верификация, еще симуляция описаний до и после синтеза со сравнением результатов, возможно с применением ATPG.

Вы не ошибаетесь?

А я то тут причем? Я не пишу синтезаторов. В исходнике я, конечно, нередко ошибаюсь, и глюки потом выискиваю, но к вопросу самодеятельности синтезаторов это не относится, это совсем другая тема.

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


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

Иногда пишешь - все в порядке! Чуть по-другому (then,when,if,else,case)- попал!

Синхронность, синхронность, и еще раз синхронность - вот что должно быть девизом настоящего плисовода! :)

По-моему за нас думают. И не всегда правильно.

Ну это вряд ли :)

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


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

Синхронность, синхронность, и еще раз синхронность - вот что должно быть девизом настоящего плисовода! :)

 

Ну это вряд ли :)

 

Плисовод! очень понравилось!

А что прячется под словами "Синхронность, синхронность, и еще раз синхронность"?

Раньше писал на ABELe (.clk, .ar, .ap, .d мне более понятно , чем на VHDLe ). Pадачки были простые - поместить логику в CPLD, сформировать какие-то сигналы, с нужной задержкой и нужной длительности, state машинки какие-то организовать, сумматор слепить, собрать сигнал и т.д.

В чем "фишка" CPLD vs. FPGA ? ABEL vs. VHDL?

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


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

Я проголасовал за описание схемы. Так как напимер по многим книгам в определении и назначении языка VHDL звучат именно эти слова.

Источники:

Osnovy_Jazyka_VHDL_Bibilo_2002.djvu

Сергиенко_VHDL для проектирования вычислительных устройств_2003.djvu

Суворова Е.А. Шейнин Ю.Е. Проектирование цифровых систем на VHDL.djvu

и т.д.

PS Да и по форуму правят, если кто-то говорит что написал "программу на HDL языке" на "описание цифровой схемы(автомата, вычислителя, процессора)"

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


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

В чем "фишка" CPLD vs. FPGA ? ABEL vs. VHDL?

Таже что и AVR8 vs MIPS64

 

Без синхронности в FPGA быстро в лужу усядешься.

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

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


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

А что прячется под словами "Синхронность, синхронность, и еще раз синхронность"?

Под этим прячется то, что в проекте следует избегать использования асинхронных входов регистров, как то асинхронных сбросов/предустановок, за исключением глобального сброса (reset который всей схеме, да и то, бывают случаи, что он тоже должен быть синхронен клоку), асинхронных загрузок данных (регистров-защелок в чистом виде, latch, асинхронных RS-триггеров, просто асинхронных загрузок данных во всевозможные триггеры, и т.п.). Все, что происходит в устройстве, должно происходить синхронно с перепадами тактовой частоты, по возможности единой. Также, косвенно, под понятие "асинхронность" попадают гейтированные и генерированные клоки, которых тоже надо избегать, как огня, так как они потенциальные источники трудноуловимых сбоев, происходящих из-за логических гонок или метастабилных состояний. Короче - понятие "асинхронной" и "синхронной" схем существует с древнейших времен, когда только зачиналась цифровая техника. Например К155ИЕ5 - это асинхронный счетчик, в нем каждый следующий триггер тактируется предыдущим, а К155ИЕ9 - синхронный - в нем все тактируются одним клоком. А у микрухи К155ТМ2 есть входы R и S, которые асинхронные, и D - синхронный. И при реализации схемы в ПЛИС эти понятия не изменились.

 

Исключения, конечно, бывают, например в случаях междоменных переходов между разными тактовыми, или при необходимости эмуляции точной функциональности чего-то-там, что "запихивается" в ПЛИС, но надо всеми методами стараться избегать использования всего вышеперечисленного.

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


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

И теперь вопрос со стороны начинающего - а мало ли чего синтезаторы да компиляторы придумают!

Не боязно?

Иногда пишешь - все в порядке! Чуть по-другому (then,when,if,else,case)- попал!

По-моему за нас думают. И не всегда правильно.

 

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

 

А программеры, которые пишут синтез не ошибаются?

Вы не ошибаетесь?

 

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

 

Вспомнилась старая программистская шутка

 

Аксиома: Написать программу без ошибок невозможно.

Следствие: Если Вы написали программу и компилятор не обнаружил ни одной ошибки, скажите об этом системному программисту - пусть исправит ошибки в компиляторе. :)

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


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

Конечно, ближе к описанию схемы.

Но вот, например, у DXP сразу же спросили - а что есть программа? Ещё один вопрос - а что есть схема?

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

Что-то навроде "структурно-функционального описания программируемого устройства". Не? :)

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


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

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

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

 

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

 

Что есть описание блока на HDL - например мультиплексор описывается операторами CASE или IF. Сумматор - оператором "+". Умножитель - оператором "*". Всевозможные триггеры - регистровым блоком always (для верилога). Соединения - присваиваниями и подключениями портов модулей. Ну и так далее, в документациях на синтезаторы все это очень подробно по полочкам разложено.

 

Что есть блок в нетлисте - а это элементарный элемент, имеющийся в технологической библиотеке для той технологии, под которую делается синтез, и не важно, ПЛИС это с набором LUT-ов и триггеров, или 90-нанометров с набором стандартных ячеек.

 

Что-то навроде "структурно-функционального описания программируемого устройства". Не? :)

А почему программируемого? Кто Вам сказал, что на HDL описывают только устройства на базе технологий с программируемой схемой соединений и логикой? А на чем, по Вашему, описываются схемы заказных ИМС (ASIC)? А на чем просто процессоров, выпускаемых серийно?

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


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

пара мыслей:

 

Программа? нет. никак. дюже параллельности много. и независимости.

Схема это в виде текста чтоли? конечно нет.

Описание схемы а что описывать если схемы нет? или это описание по которому можно построить схему? но вариантов построения - куча. не оно.

Другой вариант ага. МОДЕЛЬ. или описание модели. или поведенческая модель. или ещё что-то со словом (смыслом) модель. нет?

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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