Спасибо огромное за советы! DSE - вещь классная, правда пока у меня повидимому руки кривые, чтобы решить с помощью ее мою задачу.
Цитата(bogaev_roman @ Jun 2 2014, 13:29)

Но не проще ли выкручивать в Вашем случае только определенные настройки типа ограничения на фанаут или дублирование логики или вообще создать отдельно разведенную партицию с готовым нетлистом и задержками в "узком" месте? Просто перебор значений по сидам и различным настройкам - это шаманство, которое работает в последнюю очередь.
Сам понимаю, что шаманство, но оно позволяет поднять с 390 до 420 тактовую и пока это единственный способ, который у меня достоверно работает. Причем, заполнение логики проекта на циклоне всего-то 55%.
Дублирование логики и ограничения на фанауты еще пару лет назад освоил и из этих настроек, как я думаю, выжал все, что можно.
В обоих проектах структура примерно такова есть основной клок Clk1 (416МГц на циклоне или 500МГц на стратиксе) и есть Clk2 половинка и Clk3 четвертинка. Клоки идут от одного PLL. Другие клоки есть, но они все сугубо отвечают за ввод-вывод и клочат FIFO. Есть центральный модуль (Main_Module), в котором реализована логика ввода-вывода, она обычно содержит почти всю блочную память для FIFO и не большое (10%) число ресурсов. Есть много (80-300) однотипных модулей (Compute_Module), которые производят вычисления и работают на максимальной возможной частоте, правда обмен между ними с основным модулем идет на Clk2 или даже Clk3.
Если ставить маленькое число Compute_Module в проекте, то квартус довольно быстро все собирает и получаются правильные тайминги.
Пытаюсь зафиксировать расположение нескольких (визуально хорошо разведенных модулей) и докомпилить все с большим числом модулей - не лезет

Compute_Module давно отлажены и успешно работают, а вот основной модуль регулярно надо модифицировать и отлаживать.
Как я понимаю, основная проблема у меня в том, что и Main_Module, и Compute_Module требуют DSP ресурсов, но ресурсы-то разные (в первом случае блочная память, во втором случае умножалки). Поэтому, если даже идеально развести все Compute_Module и зафиксировать их нетлист, то не факт, что Main_Module поместится и ему хватит доступа к остальным ресурсам. То есть пока не напихаешь все, квартус не удосуживается сделать Compute_Module оптимальными или почти оптимальными. Понятно, что во время отладки и поиска минимальных ошибок можно зафиксировать уже разведенные Compute_Module и это сильно помогает. Но стоит чуть сильнее изменить логику Main_Module, тайминги сходятся только после полного перетряхивания всего проекта.
ИМХО, вижу, что мне не хватает одной опции:
собрать все Compute_Module так, чтобы выполнялись необходимые тайминги, но эти модули занимали меньше всего места и максимально компактно легли на кристалле. Я бы их тогда зафиксировал в нетлисте и радовался быстрой пересборке остального проекта. Альтернативно - гонять сиды

Спасибо
ИИВ