Перейти к содержанию
    

непонятный Warning в квартусе

"Warning: Resynthesizing Cyclone or Stratix WYSIWYG primitives

into Cyclone II WYSIWYG primitives;

however, resynthesized WYSIWYG primitives may not produce optimal compilation results."

в хелпе говорится,что мол синтезируйте для циклон-2 прямо из вхдл и все будет.

но у меня проект и так на вхдл,в квартусе назначил циклон-2,а warning не исчезает.

причем появился он не сразу,а когда я начал с одним регистром мутить.

Что на самом деле этот warning означает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"Warning: Resynthesizing Cyclone or Stratix WYSIWYG primitives

into Cyclone II WYSIWYG primitives;

however, resynthesized WYSIWYG primitives may not produce optimal compilation results."

в хелпе говорится,что мол синтезируйте для циклон-2 прямо из вхдл и все будет.

но у меня проект и так на вхдл,в квартусе назначил циклон-2,а warning не исчезает.

причем появился он не сразу,а когда я начал с одним регистром мутить.

Что на самом деле этот warning означает?

 

Уже давно привел бы код регистра, с которым "начал мутить" - тогда были исходные данные для ответа. А лучше, если возможно, приводить код на который ссылается "Ворнинг"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"Warning: Resynthesizing Cyclone or Stratix WYSIWYG primitives

into Cyclone II WYSIWYG primitives;

however, resynthesized WYSIWYG primitives may not produce optimal compilation results."...

...Что на самом деле этот warning означает?

WYSIWYG (What You See Is What You Get) primitives - примитивы, жестко завязанные на конкретный чип. Смысл предупреждения заключается в том, что в проекте были использованы подобные примитивы семейств Cyclone или Stratix, а затем DEVICE был заменен на Cyclone II. Ясен красен, что синтезатор в этом случае не гарантирует оптимального использования ресурсов.

в квартусе назначил циклон-2
IMHO, логичней было бы поставить именно Cyclone или Stratix и проверить наличие Warning'а.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

про WYSIWYG - это я понял,я не понял где он у меня в проекте ЭТО нашел.Вот код

WORK:process(RESET , CLK_IN)

begin

if RESET = '0' then

for i in 0 to 64 loop

Accum(i) <= CONV_SIGNED(0 , 24);

end loop;

DATA_OUT <= "000000000000000000000000";

elsif CLK_IN = '1' and CLK_IN'event then

for i in 0 to 21 loop

Accum(i) <= signed(DATA_IN)*h(i);

end loop;

for i in 0 to 20 loop

Accum(i + 23) <= Accum(i + 1) + Accum(i + 22);

Accum(64 - i) <= Accum(i + 1) + Accum(63 - i);

end loop;

Accum(22) <= Accum(0);

DATA_OUT <= Accum(0) + Accum(64);

end if;

end process WORK;

Warning исчезает,если закомментировать любое из сложений в loop'е.Например

for i in 0 to 20 loop

Accum(i + 23) <= Accum(i + 1) ;--+ Accum(i + 22);

Accum(64 - i) <= Accum(i + 1) + Accum(63 - i);

end loop;

или

for i in 0 to 20 loop

Accum(i + 23) <= Accum(i + 1) + Accum(i + 22);

Accum(64 - i) <= Accum(i + 1) ;--+ Accum(63 - i);

end loop;

причем если потыкать в Warning,то он не перекинет на то место в коде,где косяк,как обычно бывает.

А появился он когда я начал с индексацией мудрить.Пробовал назначить стратикс-пропадает.

Поясните,где тут этот примитив?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

причем если потыкать в Warning,то он не перекинет на то место в коде,где косяк,как обычно бывает.

А появился он когда я начал с индексацией мудрить.Пробовал назначить стратикс-пропадает.

Поясните,где тут этот примитив?

По всей видимости "косяк" кроется в операции умножения. Дело в том, что в FPGA Cyclone II реализованы hard-core умножители. Предупреждение как раз и связано с тем, что fitter реализовал умножение вашего алгоритма на этих блоках, а не на логических ячейках (как это он делает, например, в Cyclone или Stratix). С индикацией warning никак не связан, и НЕ пропадает при комментировании, указанных Вами участков кода. А вот при смене семейства на Cyclone или Stratix по вполне понятным причинам пропадает.

 

P.S.: В дальнейшем просьба в сообщении писать код только в соответствующих тэгах. Так он становится более наглядным. И по возможности приводите функционально законченный код. Это реально сэкономило бы время правки (определение типов данных для Accum и h, попытка вспомнить в какой библиотеке функция умножения кроется и т.д.).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

P.S.: В дальнейшем просьба в сообщении писать код только в соответствующих тэгах. Так он становится более наглядным. И по возможности приводите функционально законченный код. Это реально сэкономило бы время правки (определение типов данных для Accum и h, попытка вспомнить в какой библиотеке функция умножения кроется и т.д.).

да теги были,но почему-то пропали когда я их сюда скопировал..насчет умножителей-сильно сомневаюсь,квартус честно говорит,что засунул их в аппаратные умножители.у меня warning пропадает как раз при комментировании указанных выше участков кода.и если уж на то пошло,то ГДЕ тут примитив?куда синтезатор засунет умножители(в ячейки или еще куда)-это его частное дело.

тут ведь нигде не сказано "используй аппаратные".если б я мегафункцию явно вызывал-другое дело.

насчет типов:

type CoeffArray is array (0 to 21) of signed(11 downto 0);

type AccumArray is array (0 to 64) of signed(23 downto 0);

signal h : CoeffArray;

signal Accum : AccumArray;

файл с текстом прилагается.использую Q6.0 без SP.

FIR_FILTER_WPC.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...