Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: большое число fan-out'ов, Altera
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Димыч
Всем доброго!

В проекте используется несколько модулей, написанных разными людьми. Поэтому ли или же по другой причине, при компиляции читаю ряд Warning'ов о слишком большом числе "фан-аутов" для некоторых регистров. Манипуляции с назначением на них ограничения "Maximum fan-outs" в корне ситуацию не меняют. Но ПЛИС работает так, как нужно, в любом случае.
Стоит ли попытаться побороться с вопросом или же это штатная ситуация?
Для нескольких цепей число фан-аутов более двух сотен. Как такое работает? Или фиттер сам дуплицирует регистры в этом случае?

спасибо!
Postoroniy_V
Цитата(Димыч @ Sep 16 2008, 16:21) *
Всем доброго!

В проекте используется несколько модулей, написанных разными людьми. Поэтому ли или же по другой причине, при компиляции читаю ряд Warning'ов о слишком большом числе "фан-аутов" для некоторых регистров. Манипуляции с назначением на них ограничения "Maximum fan-outs" в корне ситуацию не меняют. Но ПЛИС работает так, как нужно, в любом случае.
Стоит ли попытаться побороться с вопросом или же это штатная ситуация?
Для нескольких цепей число фан-аутов более двух сотен. Как такое работает? Или фиттер сам дуплицирует регистры в этом случае?

спасибо!

штатная ситуация и если всё работает, то трогать ничего не надо
а так про fanout
Duplicate Logic for Fan-Out Control
Duplicating logic or registers can help improve timing in cases where
moving a register in a failing timing path to reduce routing delay creates
other failing paths, or where there are timing problems due to the fan-out
of the registers.
Many synthesis tools support options or attributes that specify the
maximum fan-out of a register. When using Quartus II integrated
synthesis, you can set the Maximum Fan-Out logic option in the
Assignment Editor to control the number of destinations for a node so
that the fan-out count does not exceed a specified value. You can also use
the maxfan attribute in your HDL code. The software duplicates the node
as needed to achieve the specified maximum fan-out.
1 Logic duplication using Maximum Fan-Out assignments
normally increases resource utilization, and can potentially
increase compilation time, depending on the placement and the
total resource usage within the selected device. The
improvement in timing performance that results because of
Maximum Fan-Out assignments is very design-specific.
If you are using Maximum Fan-Out assignments, Altera
recommends benchmarking your design with and without these
assignments to evaluate whether they give the expected
improvement in timing performance, and use the assignments
only when you get improved results.
You can manually duplicate registers in the Quartus II software
regardless of the synthesis tool used. To duplicate a register, apply the
Manual Logic Duplication option to the register with the Assignment
Editor

Quartus Handbook 8.0 page 8-59
awa
Вот тут как раз подобный глюк вылез. В составе схемы был модуль с 16 выходами на пины - все разводилось и работало прекрасно. Поставил два таких модуля, фиттер их соптимизировал и получилось у одного из регистров 32 fan-out идущих на пины, раскиданные по 3-м сторонам корпуса.
Теперь задержка на некоторых из них слишком большая и по частоте не проходит.
Ставлю "Maximum Fan-Out" для этого регистра в 16 - фиттер игнорирует почему то.
Пытался "дуплицировать" вручную - тоже не вышло. Даже не пойму куда копать дальше.

PS. Камень - CycloneII, Quartus - 7 версии.
Postoroniy_V
Цитата(awa @ Oct 13 2008, 22:35) *
Вот тут как раз подобный глюк вылез. В составе схемы был модуль с 16 выходами на пины - все разводилось и работало прекрасно. Поставил два таких модуля, фиттер их соптимизировал и получилось у одного из регистров 32 fan-out идущих на пины, раскиданные по 3-м сторонам корпуса.
Теперь задержка на некоторых из них слишком большая и по частоте не проходит.
Ставлю "Maximum Fan-Out" для этого регистра в 16 - фиттер игнорирует почему то.
Пытался "дуплицировать" вручную - тоже не вышло. Даже не пойму куда копать дальше.

PS. Камень - CycloneII, Quartus - 7 версии.

так разберитесь почему игнорируется ваши установки
1)где установили Maximum Fan-Out? в исходнике или как?
2) почему в ручную не вышло? в чип едиторе смотрели?
3) и вообще что значит не вышло? тайминги не те? или нет дуплицирования?
awa
Цитата(Postoroniy_V @ Oct 13 2008, 18:09) *
так разберитесь почему игнорируется ваши установки
1)где установили Maximum Fan-Out? в исходнике или как?
2) почему в ручную не вышло? в чип едиторе смотрели?
3) и вообще что значит не вышло? тайминги не те? или нет дуплицирования?

1) Maximum Fan-Out установил в Assignment Editor для конкретного регистра.

test_io:inst1|DWrReg[0] Maximum Fan-Out 16 Yes

Название регистра взял из Timing Optimization Advisor. Тут же кстати показано и сколько fan-out у него.

2) Почему вручную не вышло - не знаю. Может чего не так делал. Смотрю результат в Chip Planner. Честно показывает 33 fan-out. 32 на пины и один внутри.

3) Нет дуплицирования и соответственно отсюда тайминги не те.


Насчет установки в исходнике, я как то даже проморгал что так можно. Еще осваиваюсь с verilog. Посмотрел в доке. Поставил /* synthesis syn_maxfan = 16 */ и, о чудо, - сработало. Правда попытки выставить параметр в 4 или 20 были проигнорированиы, все равно бъет на 2-а по 17 fan-out. Ну да ладно, главное, что тайминги в норме. Спасибо большое за помощь, а то я уже совсем измучился.

PS. Прошу прощения за глупые вопросы, я с FPGA работаю "наскоками", это не основная моя работа. Раньше с MAX Plus работал в графике да в AHDL. Теперь вот на Verilog перешел, только главный модуль в графике оставляю.
vetal
Цитата
Ну да ладно, главное, что тайминги в норме.

Вы их на глазок замеряете или все же описываете квартусу какие именно тайминги вам нужны? Квартус неглупый и там где нужно может сам размножить если ему известно чего от него хотят!
awa
Цитата(vetal @ Oct 14 2008, 11:41) *
Вы их на глазок замеряете или все же описываете квартусу какие именно тайминги вам нужны? Квартус неглупый и там где нужно может сам размножить если ему известно чего от него хотят!

Да, Вы правы, тайминги квартусу не указываю. В прошлых проектах и так все удовлетворяло (скорость и сложность были ниже). Только контролирую результат в Compilation Report -> Timing Analizer.
А тут чувствую совсем никуда не денешся. Ткните, пожалуйста, меня носом как это все настраивается.
vetal
Цитата(awa @ Oct 14 2008, 12:53) *
Да, Вы правы, тайминги квартусу не указываю. В прошлых проектах и так все удовлетворяло (скорость и сложность были ниже). Только контролирую результат в Compilation Report -> Timing Analizer.
А тут чувствую совсем никуда не денешся. Ткните, пожалуйста, меня носом как это все настраивается.


Страничка на сайте альтеры
http://www.altera.com/support/software/tim...-timequest.html
и описание
http://www.altera.com/literature/hb/qts/qts_qii53018.pdf
Maverick
Интересно, очень интересно! smile.gif Наверно выше изложенное про Altera можно отнести и к Xilinx (ISE 8.02.03) правда?

P.S. лень просто поискать про это на сайте Xilinx smile.gif
vetal
Цитата(Maverick @ Oct 14 2008, 14:07) *
Интересно, очень интересно! smile.gif Наверно выше изложенное про Altera можно отнести и к Xilinx (ISE 8.02.03) правда?

P.S. лень просто поискать про это на сайте Xilinx smile.gif


По большому счету - да. Методологически должно быть одно и тоже smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.