Подписка на новости

Опрос

Нужны ли комментарии к статьям? Комментировали бы вы?

Реклама

 

2002 №9

VHDL против AHDL: попытка полемики

Стешенко Владимир


Нельзя объять необъятное.

К. Прутков

В № 7'2002 «КиТ» была напечатана статья «Проектирование в системе Max+Plus II: VHDL против AHDL». Ее автор, Глеб Варфоломеев, затрвгивает действительно актуальный вопрос - на каком языке описания аппаратуры остановиться разработчику систем на ПЛИС. Сразу хочется сказать, что статья всоевременная и нужная, но... Вот об этих нескольких «но» и хотелось бы поговорить.

Статью предваряет фраза: «Разработчики, замкнувшиеся в рамках AHDL, уподобляются программистам, пишущим на ассемблере». Так разве это плохо? Не подлежит сомнению, что код на языке ассемблера позволяет получить самый быстрый и эффективный исполняемый код, и, в определенных условиях ограничения аппаратурных ресурсов, это преимущество ассемблерного кода становится гораздо важнее простоты и изящества кода на языке высокого уровня. Кроме того, как совершенно справедливо отмечает Глеб Варфоломеев: «AHDL (AlteraHDL) является внутренним языком пакета Max+Plus II». Только это отнюдь не означает, что в «каком бы виде вы ни выполняли свой проект (графический, AHDL, VHDL, Verilog или в виде временных диаграмм в Waveform Editor), компилятор Max+Plus II сначала переведет ваш проект на язык AHDL». К сожалению, все тонкости работы компилятора Max+Plus II не известны за пределами узкого круга программистов фирмы Altera, замечу только, что никакого перевода на AHDL нет и быть, в силу понятных причин, не может — компилятор Max+Plus II формирует по любому описанию проекта список цепей (netlist), как и все синтезаторы. По эффективности синтеза с языков описания аппаратуры высокого уровня Max+Plus II сильно не дотягивает ни до Leonardo, ни до Synplicity. В этом легко убедиться, взяв стандартные примеры тестов от PREP, и протестировать на них вышеупомянутые синтезаторы и компилятор Max+Plus II. Max+Plus II создает проект на 15–30% хуже по занимаемым ресурсам и быстродействию. Значит ли это, что Max+Plus II «плохой» компилятор? Нет и еще раз нет. Он дешев (на порядок-два дешевле «серьезных» продуктов), имеет развитую систему помощи и, как справедливо отмечено, имеет «неплохой ассортимент литературы по языку AHDL». Есть несколько книг на русском языке, фирменное описание — но вот, пожалуй, и все. Max+Plus II изначально ориентирован на собственный язык описания аппаратуры — AHDL, и оптимизированные примеры на нем будут эффективно синтезированы и размещены.

Трудно согласиться с фразой, что «с литературой же по языку VHDL ситуация зеркально противоположная». Не хочется заниматься рекламой, в том числе и саморекламой, но за последние год-два только на русском языке издано не менее пяти книг, частично или полностью посвященных использованию языков высокого уровня: VHDL и Verilog. Я уж не говорю об открытых сетевых ресурсах по языкам описания аппаратуры высокого уровня (это тема для отдельной статьи).

На взгляд Глеба Варфоломеева «в доступной автору литературе… не содержится сравнения эффективности языков AHDL и VHDL». А нужно ли это сравнение? Преимущества языков описания аппаратуры высокого уровня проявляются при наличии мощных средств синтеза и необходимости переноса проекта с ПЛИС на заказную БИС. Писать на VHDL и пользоваться штатным компилятором Max+Plus II можно, только нужно ли это для эффективной работы с проектом?

Рассмотрим приведенный Глебом Варфоломеевым пример (рис. 1).

Первое, что бросается в глаза, — полностью доверяемся компилятору, а что он сгенерирует, попробуйте догадаться сами. Смею предположить, что будет много-много сумматоров с последовательным переносом, огромные задержки на комбинационных цепях. И второе — быстродействие такого проекта будет крайне низко. Только «достоинства те же: краткость и наглядность».

Здесь сделаем небольшое лирическое отступление. Дело в том, что вопрос проектирования и оптимизации структур вычислителей — достаточно обширная область теории и практики алгоритмов, методов вычислений и т. п. Потому-то стоимость IP-cores тех же быстрых перемножителей сопоставима со стоимостью пакетов разработки. Увы, эти ядра интеллектуальной собственности жестко привязаны либо к архитектуре конкретной ПЛИС, либо к библиотекам конкретной кремниевой фабрики при проектировании и производстве СБИС. А оптимизировать под конкретную архитектуру без использования дорогих продуктов, таких, как Amplify, или тяжелого ручного труда по физическому размещению ячеек в роутере после компиляции исходного описания на языке высокого уровня, невозможно. А тот же AHDL содержит целый ряд примитивов (LCELL, SOFT), которые худо-бедно позволяют дешево и просто выполнить оптимизацию. Именно поэтому некорректным является пример сравнения с перемножителем на AHDL (рис. 2).

Вызван уже оптимизированный перемножитель, построенный по нормальной архитектуре с цепями переноса и каскадирования. Естественно, он не поместится в одной ПЛИС ЕРМ3256 — за быстродействие мы платим ресурсами. Я уж не говорю, что использование CPLD для реализации вычислителей неэффективно именно в силу их архитектур, ориентированных на реализацию функций большого числа входных переменных — для этого лучше взять ПЛИС семейств FLEX или ACEX. Если бы автор попробовал вызвать оптимизированный перемножитель из VHDL (что, кстати, возможно и для рассмотренного примера), то обращение было бы очень похожим (рис. 3).

И где же тут «краткость и наглядность»?

Особого разговора заслуживает вопрос о выходных файлах (tdo, vho, vo). Эти файлы представляют собой не что иное, как выходной список цепей и используются, как правило, в системах моделирования типа Modelsim в качестве исходного файла, иногда совместно с файлом задержек. Именно поэтому несколько строк на поведенческом уровне превращаются в сотни килобайт структурного описания на самом нижнем уровне. В каком виде формировать этот выходной файл — дело разработчика, и зависит от используемых средств моделирования.

Немаловажным моментом в статье Глеба Варфоломеева является противопоставление поведенческого и структурного описания проекта. Любой разработчик систем на ПЛИС и СБИС скажет, что чаще всего описание проекта состоит из структурного объединения нескольких иерархических описаний подсистем, как правило, поведенческих. Но поведенческое описание таит подводные камни, связанные с работой конкретного синтезатора. Несмотря на наличие стандарта IEEE1076.6 на синтезируемое подмножество VHDL, оно весьма различно для разных синтезаторов. И Max+Plus имеет весьма и весьма ограниченное подмножество для синтеза. Это же касается и языка Verilog. Именно поэтому мощные системы и стоят таких денег. И фирма Altera ведет очень разумную политику, обеспечивая возможность интеграции Max+Plus и Quartus с современными пакетами синтеза и моделирования.

Ошибочным является утверждение, выраженное Глебом Варфоломеевым в следующем абзаце: «Однако иногда не удается избежать структурного описания. В этом случае в программы на языках высокого уровня вставляют ассемблерные вставки или подгружают внешние ассемблерные модули. У языков описания аппаратуры такой аналогии нет.» А как же ядра IP-core, — те же мегафункции — ведь это фактически оптимизированный под конкретную ПЛИС список цепей (netlist). Чем не вставка на самом нижнем уровне?

Абсолютно справедливо, что «существенный недостаток языка AHDL — невозможность перенести с платформы на платформу проект на языке AHDL». А надо ли это для разработчика, который не занимается переносом проектов?

Нельзя не согласиться с тем, что «если вы еще не имели опыта использования языков описания аппаратуры и размышляете о выборе языка, то выбирайте VHDL!» Я бы добавил — и Verilog, и ABEL, и AHDL тоже. Нельзя заниматься противопоставлением тех или иных способов описания цифрового проекта.

Из вышесказанного мною может сложиться мнение, что ваш покорный слуга категорически не согласен с Глебом Варфоломеевым и всячески отстаивает AHDL как универсальное языковое средство описания проектов. Отнюдь! Просто, если уж браться за анализ возможностей того или иного языка программирования или описания аппаратуры, то делать это нужно корректнее. И помнить, что помимо чисто языковых особенностей и стилей есть еще средства реализации и моделирования проекта.

Какие же основные выводы можно сделать? Во-первых, язык AHDL — простой и дешевый инструмент тонкой оптимизации проекта под конкретное семейство ПЛИС конкретного производителя в конкретной среде разработки. Во-вторых, языки VHDL и Verilog дают преимущество при использовании качественных средств синтеза и моделирования.

В заключение хотелось бы поблагодарить уважаемого Глеба Варфоломеева за попытку начать дискуссию по выбору и критическому анализу средств проектирования и методов описания проекта. Автор будет признателен за любые замечания и пожелания, которые следует направлять по адресу:

107005, Москва, 2-я Бауманская ул., д. 5, МГТУ им. Баумана, кафедра СМ5 «Автономные информационные и управляющие системы», для Стешенко В. Б. Е-mail: steshenk@sm.bmstu.ru, сайт www.sm.bmstu.ru/sm5.

Скачать статью в формате PDF  Скачать статью Компоненты и технологии PDF

 


Сообщить об ошибке