blackfin 28 26 июля, 2021 Опубликовано 26 июля, 2021 · Жалоба 20 minutes ago, Мур said: С 10го захода QII таки запомнил мою просьбу! А почему addr_mem_b объявлены виртуальными? Они что, вообще никуда не подключены??? :) Виртуальными обычно назначают пины модуля, когда хотят оценить частоту работы модуля без учета влияния пинов IO. Это же не ваш случай. 22 minutes ago, Мур said: Обычно тупо все сбрасывала. Нужно было нажать иконку с дискетой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 26 июля, 2021 Опубликовано 26 июля, 2021 · Жалоба 15 minutes ago, blackfin said: А почему addr_mem_b объявлены виртуальными? Они что, вообще никуда не подключены??? :) Виртуальными обычно назначают пины модуля, когда хотят оценить частоту работы модуля без учета влияния пинов IO. Это же не ваш случай. ...они подключены к двупортовой памяти внутри FPGA. И с внешними пинами эта шина не связана. Я так трактовал вашу подсказку выше... Убрал строку про виртуальный пин и все повторилось при общей сборке и оценивании Fmax. ХМ!... Quote Нужно было нажать иконку с дискетой. Всегда нажимал! И получал в ответ представленное выше сообщение. (Some assignments have problems - see massege in the System tab of the Massege window for details. Do you want to continue to save anyway) ... И на Yes шел сброс ВСЕХ установок... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 28 26 июля, 2021 Опубликовано 26 июля, 2021 · Жалоба 2 minutes ago, Мур said: Я так трактовал вашу подсказку выше Это была никакая не подсказка. У меня в проекте модуль счетчика вообще никуда не был подключен. Это было нужно, чтобы оценить частоту самого счетчика. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 26 июля, 2021 Опубликовано 26 июля, 2021 · Жалоба 4 minutes ago, blackfin said: Это была никакая не подсказка. У меня в проекте модуль счетчика вообще никуда не был подключен. Это было нужно, чтобы оценить частоту самого счетчика. Спасибо. Учту. Удобная вещь для отладки, чтобы иметь не игнорируемое имя в списке... Я спокойно к этому виртуалу отношусь. Трюк для разработчика! Всего-то Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 26 июля, 2021 Опубликовано 26 июля, 2021 · Жалоба 43 minutes ago, Мур said: set_instance_assignment -name VIRTUAL_PIN ON -to addr_mem_b set_instance_assignment -name MAX_FANOUT 500 -to addr_mem_b У вас точно более 500 блоков памяти ? А вы уверенны что на virtual пин можно задавать max_fanout? Размножать ведь надо регистры от которых идет цепь к блокам памяти. Любой констрейн должен быть осмысленным. И не мешало бы проверять выполняется ли он. На сколько я сталкивался с Qu max_fanout используется как при синтезе (MAP) так и при FIT. И иногда размноженные при синтезе по max_fanout регистры склеиваются опять при MAP. А может быть и наоборот. Еще при работе с памятью в Qu есть засада. Конкретное число физ. блоков памяти (а cоответвенно и fanout для цепи адресов) становится известно лишь в при MAP процессе. Поэтому не всегда понятно как (и на каком этапе) работает max_fanout констрейн. К тому же отдельные этапы оптимизации (например physical synthesis) при FIT управляются отдельными assignments. Поэтому когда у меня была похожая ситуация я добавлял max_fanout атрибуты вместе с атрибутами управляющими оптимизацией в процессе FIT. И опять же - max_fanout это не золотая пилюля. В такой ситуации нужен комплекс мер и самый первый это анализ конкретных причин. Почему это происходит и из за чего и где. И IMHO падение частоты из за замены типа счетчика лишь следствие этих проблем, а не их причина. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 28 26 июля, 2021 Опубликовано 26 июля, 2021 · Жалоба 10 minutes ago, RobFPGA said: И иногда размноженные при синтезе по max_fanout регистры склеиваются опять при MAP. Есть же, вроде, возможность рулить этим процессом: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 26 июля, 2021 Опубликовано 26 июля, 2021 · Жалоба 45 minutes ago, blackfin said: Есть же, вроде, возможность рулить этим процессом: По умолчанию уже активно!... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 28 26 июля, 2021 Опубликовано 26 июля, 2021 · Жалоба 3 minutes ago, Мур said: По умолчанию уже активно!... Вы что, читать не умеете? :) Чтобы Quartus не удалял продублированные регистры, эту опцию нужно выключить: Remove Duplicate Registers = Off. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 26 июля, 2021 Опубликовано 26 июля, 2021 · Жалоба 5 minutes ago, blackfin said: ... эту опцию нужно выключить: Remove Duplicate Registers = Off. Как же так!.. Мне как раз на адресной шине НУЖНО иметь дубликаты, чтобы обеспечить передачу адреса на максимальную площадь. Да и к тому же нагрузочная способность жмет... А распределенные дубликаты решают эти две задачи сразу! Я заблуждаюсь? ...Кстати Fmax упал на 1 МГц Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 28 26 июля, 2021 Опубликовано 26 июля, 2021 · Жалоба 52 minutes ago, Мур said: Я заблуждаюсь? Перевожу с языка оригинала: Remove Duplicate Registers ? = Off !!!. Удалять дубликаты регистров ? = Нет !!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 4 26 июля, 2021 Опубликовано 26 июля, 2021 (изменено) · Жалоба This option is useful if you wish to prevent the Compiler from removing duplicate registers that are used deliberately. To use duplicate registers in a design, disable this logic option. тут понятно, что надо ставить off. Мне не ясно другое - что подразумевается под deliberately. Это те регистры, которые синтезатор сам навставлял на этапе синтеза, или же дублирующие регистры, явно описанные в проекте разработчиком... Склоняюсь ко второму. ИМХО чтобы принудить синтезатор автоматом добавлять регистры при синтезе - надо ограничить fanout от этих регистров до блоков памяти (в данном случае - регистров адресов). Скажем - несколько десятков... И посмотреть разводку. Изменено 26 июля, 2021 пользователем Yuri124 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 26 июля, 2021 Опубликовано 26 июля, 2021 · Жалоба Приветствую! Assignments на картинке влияет глобально, на весь дизайн. Это не всегда хорошо так как в одном месте может улучшит а в другом ухудшить. Почти всеassigments можно делать и локально для отдельных блоков или регистров. По результатам анализа конкретных ситуаций. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 26 июля, 2021 Опубликовано 26 июля, 2021 · Жалоба 24 minutes ago, RobFPGA said: Приветствую! Assignments на картинке влияет глобально, на весь дизайн. Это не всегда хорошо так как в одном месте может улучшит а в другом ухудшить. Почти всеassigments можно делать и локально для отдельных блоков или регистров. По результатам анализа конкретных ситуаций. Удачи! Rob. ...конечно надо это учитывать! Забывать об этом не стоит... Локально? И как же это? Я заинтригован... Я психанул и сделал обратную операцию - поставил рукописный счетчик(привожу тут). И что характерно, частота Fmax не изменилась! Опять вопрос, что это за примитивы такие? Чудеса!... cuter18.vhd Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 4 26 июля, 2021 Опубликовано 26 июля, 2021 · Жалоба 5 minutes ago, Мур said: что это за примитивы такие? насколько понял из картинки отчета TQ (предыдущая страница топика) - далеко нужно тянуться от счетчика к памяти... Т.е. в моем понимании - сам счетчик не причем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 26 июля, 2021 Опубликовано 26 июля, 2021 · Жалоба Приветствую! 11 minutes ago, Мур said: И что характерно, частота Fmax не изменилась! Опять вопрос, что это за примитивы такие? Чудеса!... Еще раз - проблема не в реализации счетчика, а в сложности P&R из за высокого fanout большого количества памяти разбросанной по кристаллу. Fmax это не показатель. Нужно ставить в констрейнах целевую частоту и добиваться ее анализируя узкие места дизайна сначала после MAP а затем и после P&R. Удачи. Rob. P.S. Локально assignments делаются также как и глобальные только с указанием модуля/регистра/цепи точки приложения этого assignments. Можно делать это непосредственно в RTL через атрибуты (ALTERA_ATTRIBUTE = "..."), или в assignments editor-е или ручками напрямую в .qsf файле Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться