Научная статья на тему 'VHDL против AHDL: попытка полемики'

VHDL против AHDL: попытка полемики Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
162
88
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Стешенко Владимир

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «VHDL против AHDL: попытка полемики»

Компоненты и технологии, № 9'2002 Софт

VHDL против AHDL:

попытка полемики

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

К. Прутков

В № 72002 «КиТ» была напечатана статья «Проектирование в системе Мах+Р1ив II: УИ01 против ДИОЬ». Ее автор, Глеб Варфоломеев, затрагивает действительно актуальный вопрос — на каком языке описания аппаратуры остановиться разработчику систем на ПЛИС. Сразу хочется сказать, что статья своевременная и нужная, но...

Вот об этих нескольких «но» и хотелось бы поговорить.

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

steshenk@sm.bmstu.ru

С

татью предваряет фраза: «Разработчики, замкнувшиеся в рамках 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 ситуация зеркально противоположная». Не хочется заниматься рекламой, в том

числе и саморекламой, но за последние год-два только на русском языке издано не менее пяти книг, частично или полностью посвященных использованию языков высокого уровня: УИБЬ и УегДо^ Я уж не говорю об открытых сетевых ресурсах по языкам описания аппаратуры высокого уровня (это тема для отдельной статьи).

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

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

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

Здесь сделаем небольшое лирическое отступление. Дело в том, что вопрос проектирования и оптимизации структур вычислителей — достаточно обширная область теории и практики алгоритмов, методов вычислений и т. п. Потому-то стоимость IP-cores тех же быстрых перемножителей сопоставима со стоимостью пакетов разработки. Увы, эти ядра интеллектуальной собственности жестко привязаны либо к ар------www.finestreet.ru-----------------------

Компоненты и технологии, № 9'2002

хитектуре конкретной ПЛИС, либо к библиотекам конкретной кремниевой фабрики при проектировании и производстве СБИС.

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

А тот же AHDL содержит целый ряд примитивов (LCELL, SOFT), которые худо-бедно позволяют дешево и просто выполнить оптимизацию. Именно поэтому некорректным является пример сравнения с перемножителем на AHDL (рис. 2).

INCLUDE «lpm_mult.inc»;

Софт

SUBDESIGN MULT

(

dataa[7..0]

datab[7..0]

result[15..0]

)

INPUT;

INPUT;

OUTPUT;

VARIABLE

lpm_mult_component : lpm_mult WITH (

LPM_WIDTHA = 8,

LPM_WIDTHB = 8,

LPM_WIDTHP = 16,

LPM_WIDTHS = 16, INPUT_B_IS_CONSTANT = «NO», LPM_REPRESENTATION = «UNSIGNED», USE_EAB = «OFF»

result[15..0] = lpm_mult_component.result[15..0]; lpm_mult_component.dataa[7..0] = dataa[7..0]; lpm_mult_component.datab[7..0] = datab[7..0];

Рис. 2

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

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

Особого разговора заслуживает вопрос о выходных файлах (tdo, vho, vo). Эти файлы

COMPONENT lpm_mult GENERIC (LPM_WIDTHA: POSITIVE;

LPM_WIDTHB: POSITIVE;

LPM_WIDTHS: NATURAL := 0;

LPM_WIDTHP: POSITIVE;

LPM_REPRESENTATION: STRING := «UNSIGNED»; LPM_PIPELINE: INTEGER := 0;

LPM_TYPE: STRING := «LPM_MULT»;

LPM_HINT: STRING := «UNUSED»);

PORT (dataa: IN STD_LOGIC_VECTOR(LPM_WIDTHA-1 DOWNTO 0);

datab: IN STD_LOGIC_VECTOR(LPM_WIDTHB-1 DOWNTO 0);

aclr, clock: IN STD_LOGIC := '0'; clken: IN STD_LOGIC := '1';

sum: IN STD_LOGIC_VECTOR(LPM_WIDTHS-1 DOWNTO 0) := (OTHERS => '0');

result: OUT STD_LOGIC_VECTOR(LPM_WIDTHP-1 DOWNTO 0));

END COMPONENT;

Рис. 3

представляют собой не что иное, как выходной список цепей и используются, как правило, в системах моделирования типа 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 «Автономные информационные и управляющие системы», для Стешенко В. Б. E-mail: steshenk@sm.bmstu.ru, сайт www.sm.bmstu.ru/sm5.

BEGIN

END

-www.finestreet.ru -

91

i Надоели баннеры? Вы всегда можете отключить рекламу.