Проект под альтеру занимающий кристал примерно на 90% от общего объема в 50к элементов, из них используется около 30к лутов и 40к регистров, плюс всякая память и dsp. Проект довольно сильно конвейеризирован (само так получилось), поэтому проблем по setup timing никогда не наблюдалось - наиболее высокоскоростной клок 200 МГц, есть запас порядка 30-40 МГц. Но с ростом сложности проекта стали периодически возникать проблемы по hold timing - где-то глубоко внутрях dsp части иногда может не уложиться несколько путей между соседними элементами. Выглядит это примерно так:
путь в рамках одного и того же или соседних блоков, data delay порядка 450-500ps, clock skew 350-400 ps (а не многовато ли для соседних блоков?), не укладывается обычно на 30-80 ps. Детальная информация на прикрепленном скриншоте.
После стирания базы и перекомпиляции проблему (со 2-3-4 раза) обычно удается решить. Но со временем эта проблема прогрессирует, плюс тратится лишнее время. Можно ли с этим что-нибудь поделать?
Гугление привело к советам включить:
Optimize hold timing: all path
Enable common clock path pessimism removal
Включено по умолчанию, но не помогает. Есть ли еще какие-нибудь идеи?