Jump to content

    

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

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

 

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

 

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

2. Прошу усвоить, что результат работы HDL-дизайнера есть архитектура, уже её надо будет программировать. Программистами.

3. Самым сложным и затратным(до 80% времени) в работе HDL-дизайнера является этап верификации, поскольку он состоит из прохождения 3х этапов:

a) Создание и применение Тест-бенчей при написании фрагментов дизайна;

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

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

Игнорирование этих особенностей загоняют проблемы в глубь и ставят под угрозу сроки создания систем в целом. Не выявленные проблемы все равно заставят их пройти сполна.

Share this post


Link to post
Share on other sites

Мне это напоминает использование «крайний» вместо «последний». Такое буквоедство не импонирует.

Между тем, у создания HDL-архитектуры и программирования на ЯВУ много общего в стратегиях, подходах, ошибках и т.д.

И один, и другой работает на высоком уровне абстракции. И последние тенденции говорят о плавном срастании HDL и SW областей проектирования.

Все остальное нюансы на уровне терминологии.

Но за мысли спасибо.

Share this post


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

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

 

Share this post


Link to post
Share on other sites
А среди кого укоренилось такое мнение ?

:rolleyes: У менагеров....

Share this post


Link to post
Share on other sites
:rolleyes: У менагеров....

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

Edited by Flip-fl0p

Share this post


Link to post
Share on other sites
Вот если вышестоящее руководство так думает - тогда проблема. А манагеры пусть думают что хотят. Лишь бы не мешали :maniac:

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

 

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

 

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

Share this post


Link to post
Share on other sites

Расшифруйте аббревиатуру FPGA.

Share this post


Link to post
Share on other sites
Расшифруйте аббревиатуру FPGA.

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

 

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

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

 

Говорят мне,- "А там есть алгоритмы?" Да, конечно, но это проблемно-ориентированная система, как периферия у процессорного ядра. Она есть, но все там используется!

http://www.lcard.ru/lexicon/fpga

--К программному или аппаратному обеспечению следует относить саму прошивку FPGA (или CPLD) и проект этой прошивки в какой-либо среде программирования?

 

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

 

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

Share this post


Link to post
Share on other sites
В моем случае это проблема.

Много копий сломано в подобных спорах.

ПЛИС -- программируемая интегральная схема. Кто-то её программирует. В общем, я бы на вашем месте не заморачивался ВООБЩЕ.

Важен результат, а не то, как он называется.

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

Предлагаю тему закрыть во избежании холивара. А ведь он будет. :biggrin:

 

Share this post


Link to post
Share on other sites
Программируемые пользователем вентильные матрицы.

 

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Можно сказать, что человек программист и занимается при этом программированием?

 

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

В современных многопроцессорных системах с операционной системой, GPU и прочим, линейное программирование тоже весьма условно линейное. Надо многое синхронизировать.

Edited by x736C

Share this post


Link to post
Share on other sites

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

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

Share this post


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

 

Вот такое восприятие и дает основание управляющим без тени сомнения давать задание программисту контроллеров заниматься ПЛИС. Хотя это иная Вселенная... Программист? Вперед!...

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

 

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

 

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

 

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

 

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

Share this post


Link to post
Share on other sites
Вот такое восприятие и дает основание управляющим без тени сомнения давать задание программисту контроллеров заниматься ПЛИС. Хотя это иная Вселенная... Программист? Вперед!...
С таким подходом можно сравнить программистов JAVA и PHP. Если начальство дурноватое, то это совсем другая проблема. Нужно либо уметь доносить до начальства нужные мысли, либо его менять.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this