Всем привет,
а также, ПРЕБОЛЬШУЩЕЕ СПАСИБО всем советующим и советовавшим мне по моим высокочастотным и параллельным задачкам.
Я, как уже недавно похвалился, смог собрать то, что хотел с фмакс>400МГц, но есть у меня еще одно желание к моему проекту, но, не знаю, где копать, поэтому обращаюсь к Вам за советом!
В моем проекте имеется довольно длинный пайплайн, содержащий около 20 шагов, около десяти из которых - сами вычисления, а еще примерно 10 - это копирования во всякие вспомогательные промежуточные регистры.
Если эти вспомогательные регистры убрать, то я использую около 34К лютов, но фмакс будет маленький, если они все есть, то 80К лютов и фмакс - как надо. Всего на кристалле есть 113К лютов.
Есть подозрение, что я использую эти промежуточные регистры с большим размахом, и я мог бы собрать дизайн с 60К лютов и тем же фмаксом. Такое желание обусловленно тем, что, если у меня будет много свободных лютов, то я смог бы в эту же плиску воткнуть еще чего в параллель.
Мне алгоритмически не критично удалить один или несколько промежуточных регистров, но, каждый пересбор проекта стоит мне 50 минут. А, как вы можете предположить, комбинаций на удаление может быть 2^{10}.
Скажите, пожалуйста, где и как я мог бы посмотреть, что, например, какой-то регистр в моем пайплайне не сильно важен (даже не знаю как сказать, только примерно чуствую что может быть что-то такое автоматическое).
Спасибо
ИИВ
Можно вывести список N худших путей в timing analyzer.
Можно гистограмму задержек построить, и худшие пути отфильтровать по гистограмме.
Этап конвейера, где все пути имеют задержку t << tclk, можно убрать.
Например, этапы конвейера такого вида:
- DFF -> DFF
- DFF -> LUT -> DFF
можно попытаться убрать, если вы их сами не ввели для улучшения fmax

.
---
Разумеется, логику убранного этапа надо куда-то деть, если она нужна.
Например, в соседний этап перенести, если fmax не грохнется.
имплементация на стратиксе?
то есть разговор про LE, а не ЛУТы? вроде как конвеер на логику не влияет, а только на количество флип-флопов
----------------------------------
в квартусе есть "галки" perform register retiming / perform register duplication
можно их использовать для автоматического построения конвеера - то есть убрать подозрительные ступеньки и попытаться синтезировать с этими опциями
--------------------
если автоматическим методам доверия нет,
то метода такая
тот элемент : структуру / масив и т.п. в котором описана станция (регистр) пайплайна
описываете как
logic this_stage;
без регистра
always_comb
this_stage=prev_stage;
ну и попытаться синтезировать
если по времянке не влезло, то
always @(posedge clk)
this_stage=prev_stage;
и т.д.
------------------
пользование статическим временным анализом (тайм квест) драматически уменьшает количество вариантов для перебора
Уважаемый Jojo,
очень благодарен Вам за ответ и сильно прошу прощения, что не владею терминологией и не могу ясно сформулировать что хочу, в Вы, своим ответом, мне с этим сильно помогли.
Цитата(jojo @ Apr 29 2011, 14:24)

Можно вывести список N худших путей в timing analyzer.
Можно гистограмму задержек построить, и худшие пути отфильтровать по гистограмме.
Этап конвейера, где все пути имеют задержку t << tclk, можно убрать.
Вот, именно это-то я и спрашивал.
Скажите, пожалуйста, правильно ли я понимаю, что, в "TimeQuest Timing Analyzer"->"Report Timing"->"Core Clock Setup" / "Core Clock Hold" как раз эти задержки по путям и даны?
Спасибо
ИИВ
Рад был помочь.
Я с TimeQuest давно не работал, но думаю, что это нужные пункты, судя по названию.
Где-то рядом есть пункт меню, нажав который, можно получить гистограмму запаса по tSU.
Из этой гистограммы тоже что-то можно выудить.
Важны пути с наименьшим запасом tSU, в них бывает полезно добавить триггеры.
Но важны и пути с наибольшим запасом, их можно объединить и сэкономить ресурсы.