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

Чудеса быстродействия 18-разрядного счетчика.

20 minutes ago, Мур said:

С 10го захода QII таки запомнил мою просьбу!

А почему addr_mem_b объявлены виртуальными? Они что, вообще никуда не подключены??? :)

Виртуальными обычно назначают пины модуля, когда хотят оценить частоту работы модуля без учета влияния пинов IO.

Это же не ваш случай.

22 minutes ago, Мур said:

Обычно тупо все сбрасывала.

Нужно было нажать иконку с дискетой.

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


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

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  шел сброс ВСЕХ установок...

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


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

2 minutes ago, Мур said:

Я так трактовал вашу подсказку выше

Это была никакая не подсказка. У меня в проекте модуль счетчика вообще никуда не был подключен. Это было нужно, чтобы оценить частоту самого счетчика.

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


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

4 minutes ago, blackfin said:

Это была никакая не подсказка. У меня в проекте модуль счетчика вообще никуда не был подключен. Это было нужно, чтобы оценить частоту самого счетчика.

Спасибо. Учту.   Удобная вещь для отладки, чтобы иметь не игнорируемое имя в списке...  Я спокойно к этому виртуалу отношусь. Трюк для разработчика!  Всего-то

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


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

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 падение частоты из за замены типа счетчика лишь следствие  этих проблем,  а не их  причина.  :yes3:   

Удачи! Rob.   

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


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

10 minutes ago, RobFPGA said:

И иногда  размноженные при синтезе по max_fanout регистры склеиваются опять при  MAP.

Есть же, вроде, возможность рулить этим процессом:

max_fanout.jpg

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


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

45 minutes ago, blackfin said:

Есть же, вроде, возможность рулить этим процессом:

image.thumb.png.f7ebd866e912227c74d45374fb0a5528.png

По умолчанию уже активно!...

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


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

3 minutes ago, Мур said:

По умолчанию уже активно!...

Вы что, читать не умеете? :)

Чтобы Quartus не удалял продублированные регистры, эту опцию нужно выключить: Remove Duplicate Registers = Off.

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


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

5 minutes ago, blackfin said:

... эту опцию нужно выключить: Remove Duplicate Registers = Off.

Как же так!.. Мне как раз на адресной шине НУЖНО иметь дубликаты, чтобы обеспечить передачу адреса на максимальную площадь. Да и к тому же нагрузочная способность жмет...  А распределенные дубликаты решают эти две задачи сразу!

Я заблуждаюсь?     ...Кстати Fmax упал на 1 МГц

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


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

52 minutes ago, Мур said:

Я заблуждаюсь?

Перевожу с языка оригинала:
 

Remove Duplicate Registers ? = Off !!!.

Удалять дубликаты регистров ? = Нет !!!

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


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

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 от этих регистров до блоков памяти (в данном случае - регистров адресов). Скажем - несколько десятков... И посмотреть разводку.

Изменено пользователем Yuri124

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


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

Приветствую!

Assignments  на  картинке  влияет глобально,  на весь  дизайн. Это не всегда  хорошо так как в одном  месте может улучшит а  в другом  ухудшить. 
Почти всеassigments можно делать и локально для отдельных  блоков или регистров. По  результатам анализа  конкретных ситуаций. 

 

Удачи! Rob.

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


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

24 minutes ago, RobFPGA said:

Приветствую!    Assignments  на  картинке  влияет глобально,  на весь  дизайн. Это не всегда  хорошо так как в одном  месте может улучшит а  в другом  ухудшить. 
Почти всеassigments можно делать и локально для отдельных  блоков или регистров. По  результатам анализа  конкретных ситуаций.    Удачи! Rob.

...конечно надо это учитывать!  Забывать об этом не стоит...   Локально?  И как же это? Я заинтригован...

Я психанул и сделал обратную операцию - поставил рукописный счетчик(привожу тут).

И что характерно, частота Fmax не изменилась!  Опять  вопрос, что это за примитивы такие?   Чудеса!...

 

cuter18.vhd

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


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

5 minutes ago, Мур said:

что это за примитивы такие?

насколько понял из картинки отчета TQ (предыдущая страница топика) - далеко нужно тянуться от счетчика к памяти... Т.е. в моем понимании - сам счетчик не причем.

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


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

Приветствую!

11 minutes ago, Мур said:

И что характерно, частота Fmax не изменилась!  Опять  вопрос, что это за примитивы такие?   Чудеса!...

Еще  раз   - проблема  не в реализации счетчика, а в сложности  P&R из за высокого fanout большого количества  памяти разбросанной по кристаллу. 

Fmax это не показатель.  Нужно ставить в констрейнах целевую частоту и добиваться  ее  анализируя  узкие места  дизайна сначала после MAP а затем и после P&R.  

  

Удачи.  Rob.

 

P.S.  Локально  assignments  делаются также как и глобальные только с указанием  модуля/регистра/цепи  точки  приложения  этого assignments. Можно делать это непосредственно в RTL через  атрибуты (ALTERA_ATTRIBUTE = "..."),  или  в assignments editor-е или ручками напрямую в .qsf файле 

 

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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