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

О философии HDL-дизайнера

Наткнулся в переписке с коллегами на сжатую справку о своей работе с ПЛИС. Мне это понравилось. Выношу на обсуждение.

Цитата
Укоренилось мнение, что создание дизайна на ПЛИС осуществляют программисты и сам процесс его создания есть программирование. Это факт, что это делают программисты, но это миф, что это программирование. Это создание цифровой архитектуры.

1. Рекомендую при участии в конференциях по отношению к ПЛИС не употреблять слова "програмное обеспечение". Для этого говорят - HDL-дизайн.
2. Прошу усвоить, что результат работы HDL-дизайнера есть архитектура, уже её надо будет программировать. Программистами.
3. Самым сложным и затратным(до 80% времени) в работе HDL-дизайнера является этап верификации, поскольку он состоит из прохождения 3х этапов:
a) Создание и применение Тест-бенчей при написании фрагментов дизайна;
б) Создание и применение Набора Тест-бенчей для перекрестных проверок поведения модулей в сборке всего дизайна. Тут важна вариационность тестов, чтобы выявить конфликты в общей работе дизайна;
г) Создание дополнительных дизайнов при выявлении ошибок и сбора информации о поведении "на железе" в комбинации с SignalTab(или ChipScope). Тут неизбежно сотрудничество непосредственно с программистом, который будет пользователем этой архитектуры на ПЛИС, либо имитирует её внешний мир(по заранее определенной методике);
Игнорирование этих особенностей загоняют проблемы в глубь и ставят под угрозу сроки создания систем в целом. Не выявленные проблемы все равно заставят их пройти сполна.

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


Ссылка на сообщение
Поделиться на другие сайты
Мне это напоминает использование «крайний» вместо «последний». Такое буквоедство не импонирует.
Между тем, у создания HDL-архитектуры и программирования на ЯВУ много общего в стратегиях, подходах, ошибках и т.д.
И один, и другой работает на высоком уровне абстракции. И последние тенденции говорят о плавном срастании HDL и SW областей проектирования.
Все остальное нюансы на уровне терминологии.
Но за мысли спасибо.

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


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

А среди кого укоренилось такое мнение ?

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Мур @ Sep 8 2017, 16:45) <{POST_SNAPBACK}>
rolleyes.gif У менагеров....

Вот если вышестоящее руководство так думает - тогда проблема. А манагеры пусть думают что хотят. Лишь бы не мешали maniac.gif
Изменено пользователем Flip-fl0p

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Flip-fl0p @ Sep 8 2017, 16:53) <{POST_SNAPBACK}>
Вот если вышестоящее руководство так думает - тогда проблема. А манагеры пусть думают что хотят. Лишь бы не мешали maniac.gif

В моем случае это проблема. Тут у меня только 2 человека(включая меня) компетентных. Начальство не из их числа... Везде в документации фигурирует ПО на FPGA. Мне стыдно перед приезжими, что более продвинуты в вопросе.

Мешают. И ставят в упрек как по срокам, так и по надежности(сделали серьезный дизайн за 6 месяцев. Хотя должно быть год.

И теперь за контроллеры! Следующий "забег"(с языком на плече) возможен через год....

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


Ссылка на сообщение
Поделиться на другие сайты
Расшифруйте аббревиатуру FPGA.

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(ViKo @ Sep 8 2017, 17:21) <{POST_SNAPBACK}>
Расшифруйте аббревиатуру FPGA.

Программируемые пользователем вентильные матрицы.

Встречный вопрос,- что такое Verilog или VHDL?
Утрирую дополнительно ситуацию,- микросхема контоллера, только что прошедшая корпусирование у производителя и не имеющая пока целевую заливку имеет ПО? Вот и ПЛИС, с залитой конфигурацией, пока только архитектура. Её предстоит использовать.

Говорят мне,- "А там есть алгоритмы?" Да, конечно, но это проблемно-ориентированная система, как периферия у процессорного ядра. Она есть, но все там используется!
http://www.lcard.ru/lexicon/fpga
Цитата
--К программному или аппаратному обеспечению следует относить саму прошивку FPGA (или CPLD) и проект этой прошивки в какой-либо среде программирования?

Подобный вопрос может возникнуть, например, при согласовании технического задания. Рассматривая уровни программных и аппаратных средств обобщённой пользовательской системы, мы видим, что прошивки FPGA (или CPLD) фактически находятся между сущностями HARD и SOFT. Это означает (исходя из сказанного выше), что тот уровень прошивки, в котором реализована "жёсткая логика" с параллельной топологией взаимосвязей ячеек FPGA и учётом физических задержек распространения сигнала (наподобие электрической схемы), очевидно является аппаратным уровнем (HARD). А тот уровень прошивки, в котором рассматривается программа процессора, реализованного в FPGA, очевидно является программным уровнем системы. Подразумевается, что логика работы рассматриваемого процессора должна быть основана на последовательно исполняемом программном коде, который может быть изменён (перепрограммирован) без модификации физического уровня проекта.

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

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Мур @ Sep 8 2017, 17:09) <{POST_SNAPBACK}>
В моем случае это проблема.

Много копий сломано в подобных спорах.
ПЛИС -- программируемая интегральная схема. Кто-то её программирует. В общем, я бы на вашем месте не заморачивался ВООБЩЕ.
Важен результат, а не то, как он называется.
Во всем мире это называется кодом. HDL код. То есть последовательность упорядоченных множеств слов и символов, принадлежащих некоторому конечному алфавиту. Это и есть программное обеспечение. Для этого был придуман язык описания аппаратуры, чтобы уйти от схематичной архитектуры к её языковому представлению. Языковое представление однозначным образом программирует цифровое устройство на определенное поведение, выполнение каких-то функций.
Предлагаю тему закрыть во избежании холивара. А ведь он будет. biggrin.gif

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Мур @ Sep 8 2017, 17:31) <{POST_SNAPBACK}>
Программируемые пользователем вентильные матрицы.

Встречный вопрос,- что такое Verilog или VHDL?

Не совсем так. Тут перевод более правильный "Программируемые на лету вентильные матрицы"

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


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

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


Ссылка на сообщение
Поделиться на другие сайты
А если в симулинке (матлабе) накидать блоков, соединить их стрелочками, а потом одной кнопкой: скодогенерить и сразу же скомпилировать прошивку, которая сразу же отправится в микроконтроллер.
Можно сказать, что человек программист и занимается при этом программированием?

А далее вопрос абстракции. Если пишете (создаете) HDL-код, то физический уровень для вас -- это уровень вентилей, логических ячеек, блоков памяти, архитектуры самой микросхемы, изменить которую нельзя. А уровень, на котором вы создаете свой код -- это software, из которого получается firmware, которое программирует hardware.
В современных многопроцессорных системах с операционной системой, GPU и прочим, линейное программирование тоже весьма условно линейное. Надо многое синхронизировать.
Изменено пользователем x736C

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


Ссылка на сообщение
Поделиться на другие сайты
Программируемый в полевых условиях массив вентилей - так будет еще правильнее.
В "Искусстве схемотехники" упоминается ОУ с задаваемым током потребления, они называют, "программируемый". А так, да, пустобрехство это все.

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(AVR @ Sep 8 2017, 17:57) <{POST_SNAPBACK}>
Я тоже считаю что "писать для ПЛИС" это НЕ программирование. Но последнее время задумываюсь - да ведь это ж самое настоящее обыкновенное программирование, с отладкой, с юнит-тестами, системами сборки, системами контроля версий, с релизами, с модулями, с отладкой через принтинг - вот прямо как программу отлаживаю принтингом, так и работу схемы отлаживаю принтингом.


Вот такое восприятие и дает основание управляющим без тени сомнения давать задание программисту контроллеров заниматься ПЛИС. Хотя это иная Вселенная... Программист? Вперед!...
Хотя человеку, который идет из ПЛИС на контроллеры, это возможно, а вот наоборот - проблемно. Потому как подходы иные. Параллельное (на тысячи процессов) или последовательное программирование(один программный счетчик и стек для контекстов(или по числу задач)). Человеком, с прошлым схемотехника, семантика HDL воспринимается вполне естественно.

Да и сам процесс написания кода выглядит как пожелание(синтезируемое и не синтезируемое(!) подмножество). В процессе усложнения дизайна уже проверенный на железе код вдруг начинает чудить.... Такое для контроллеров - экзотика. А в ПЛИС - спошь и рядом. Почему каждый раз проверку проходит ВЕСЬ дизайн. А расположение ножек, его смена - может тоже вызвать проблемы. Хотя дизайн уже закончен и отлажен...

Схемотехника в N-слоях ПЛИС (как разводка в 2х слоях PCAD)... Вижу аналогию!

Цитата(x736C @ Sep 8 2017, 18:06) <{POST_SNAPBACK}>
А далее вопрос абстракции. Если пишете (создаете) HDL-код, то физический уровень для вас -- это уровень вентилей, логических ячеек, блоков памяти, архитектуры самой микросхемы, изменить которую нельзя. А уровень, на котором вы создаете свой код -- это software, из которого получается firmware, которое программирует hardware.


Работу с ПЛИС часто воспринимаю как программирование контроллера на ассемблере... Не тот уровень абстракции...

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


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Мур @ Sep 8 2017, 19:23) <{POST_SNAPBACK}>
Вот такое восприятие и дает основание управляющим без тени сомнения давать задание программисту контроллеров заниматься ПЛИС. Хотя это иная Вселенная... Программист? Вперед!...
С таким подходом можно сравнить программистов JAVA и PHP. Если начальство дурноватое, то это совсем другая проблема. Нужно либо уметь доносить до начальства нужные мысли, либо его менять.

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация