[an error occurred while processing this directive]
|
Когда пишете на асме, вы получаете ровно то, что написали. Какие команды применили, то и получили. На AHDL ситуация не такая. Вспомните тот пример с арбитром!? :) Вы сделали две похожих реализации и получили в одном случае 19 ячеек, в другом 14. Причем до синтеза сказать, какой из них что даст, было нельзя (а потом еще пошаманили и получили 12 ячеек. И опять же не понятно, от чего это зависело и по исходному тексту нельзя нечего предсказать). И даже после синтеза было непонятно, почему так получалось. Т.е. входное описание на AHDL - это тоже функциональное описание, которое подвергается синтезу, в результате которого далеко не все так, как в исходном описании.
А вот ассеблер (или его аналог) - это когда вы будете вводить описание на уровне ячеек-атомов (типа как в vqm), например:
cyclone_lcell un1_count_add2_cZ (
.combout(un1_count_add2),
.cout(un1_count_carry_2),
.dataa(count_2),
.datab(un1_count22_1_i_0),
.cin(un1_count_carry_1)
);
defparam un1_count_add2_cZ.cin_used="true";
defparam un1_count_add2_cZ.operation_mode="arithmetic";
defparam un1_count_add2_cZ.output_mode="comb_only";
defparam un1_count_add2_cZ.lut_mask="96e8";
defparam un1_count_add2_cZ.synch_mode="off";
defparam un1_count_add2_cZ.sum_lutc_input="cin";
Т.е. где вы прямо на уровне примитивов чипа и оперируете, задавая режимы LUT'а, его маску, явно задействуя ресурсы ввода/вывода ячейки и т.д.. Вот тогда будет та самая предсказуемость - будет однозначно ясно, откуда берутся эти ячейки. Только трудоемкость этого процесса такая, что, понятно, ну его на фиг. :)
AHDL - это тоже, как и Верилог, типа С, но только с расширениями под конкретные архитектуры - позволяет явно указать, что использовать, позволяет использовать низкоуровневые примитивы (типа кэрричейнов). Т.е. как в некоторых ембеддед компиляторах специальные нестандатрные ключевые слова, типа, "__interrupt", "__flash", прагмы и т.д.
Синтезаторы Верилога, кстати, тоже имеют весьма богатый набор расширений, только они не на уровене языка, а на уровне директив. Синплифай, к примеру, вводит их в виде комментариев, оформленных специальным образом. А в проекте нового стандарта Верилога, вроде, даже ввели синтаксис новый для этого - директивы будут помещаться внутри (*...*).
E-mail: info@telesys.ru