Приветствую!
Хотелось бы собрать в одном месте информацию по техникам борьбы с неразводимостью проекта в Vivado,
Есть конкретный кейс, большой проект на VU13P специфика которого в том, что ядра, которые реализованы пересекаются друг с другом (например одно ядро использует 90% из всех DSP на конкретном SLR, а другое - 80% RAM SLR, а третье - половину всех LUT SLR).
Репорт о роутинге:
степень утилизации:
Собственно репорт рекомендует попробовать:
report_design_analysis -congestion
report_design_analysis -complexity
и штудировать UG906
report_design_analysis -complexity:
report_design_analysis -congestion:
Какие выводы из этого всего напрашиваются:
1. Отключение LUT combining (если допустимо)
2. Использование ограничений по -max_fanout
3. opt_design -directive ExploreArea
4. place_design -directive AltSpreadLogic_medium или place_design -directive AltSpreadLogic_high
5. route_design -directive AlternateCLBRouting
6. phys_opt_design -directive AggressiveExplore (под вопросом)
7. Понижение частоты дизайна (если возможно)
Итого, с помощью некоторых из приведенных способов удалось число пересечений свести от восьми к двум, поэтому интересно дополнить этот список, чтобы продолжить эксперименты.
что еще можно попробовать?
------------------------
upd:
8. Синтезировать с оверконстрейном по частоте и ретаймингом (но поскольку это не ASIC, то работает только в определенном диапазоне частот), а разводить на фактической частоте.