[an error occurred while processing this directive]
|
Алтеровский софт любит подсовывать в проект алтеровскией функции, причем делает это не всегда оптимально. На пример, если в процесе будет конструкция типа :
if () then
else
то квартус вместо этой конструкци будет использовать что-то типа LPM_MUX, который уже не оптимизируется. Был опыт, когда из-за подобного поведения квартуса проект увеличивался по емкости на 20%.
Но это еще пол-беды. Поведение функции, которую квартус вставляет в проект, может отличаться от поведения конструкции, вместо которой вставляется эта функция. Был случай, когда на VHDL была описана простейшая память, данные при чтении из котрой появлялись на следующий такт после установки адреса. Квартус же подсунул функцию памяти, данные из которой появлялись не через один такт, а через ДВА!!!!. Соответственно проект работал не правльно. Правда о несоответсвии между поведением исходной конструкции и результирующей в лог был записан соответствующий WARNING. С тех пор, после компиляции проверяю все WARNING-ы, чтобы дважды не наступать на грабли.
К стати, может стоит внимательнее почитать ворнинги, может и с глюками станет по проще.
E-mail: info@telesys.ru