Поиск
Показаны результаты для тегов 'xdc'.
-
Вводная: Vivado, VU13P У всего проекта интерфейсный клок и клок вычислителя.Клок вычислителя (clk_core) в несколько раз выше интерфейсного (clk_ctrl). Сам проект содержит под сотню вычислителей,с которыми общаются на интерфейсном клоке, а сами вычислители молотят на клоке вычислителя. Для улучшения QoR закрепил каждый вычислитель на конретные pBlock (до этого результаты WNS по конфигу 1 и конфигу 2 или 3 существенно различались). Собственно все эксперименты по синтезу & PnR провожу в трёх конфигах: конфиг 1 флоу с одним вычислителем конфиг 2 флоу с одном SLR, полностью забитым вычислителями конфиг 3 кристалл полностью забит вычислителями Так вот - несмотря на то, что по факту ничего не поменялось (все вычислители зафикшены на pBlock) результаты в кейсе 2 и 3 деградируют по WNS. Появилось подозрение, что в этих кейсах вивадо пытается построить CLOCK ROOT от SLR/всего кристалла, что не является для меня необходимым. Все вычислительные клоки каждого вычислителя не обязаны быть синхронными между собой, а коммуницируют вычислители с центром управления на медленном интерфейсном клоке, хочется дать вивадо информацию о том, чтобы позволить строить клоковое дерево независимо внутри каждого вычислителя и соответствующим образом выбирать локалько CLOCK ROOT. Вопрос Поскольку рантайм адовый - не хочется тратить время на эксперименты, а описать послабления наверняка: 1. Правильно ли понимаю, что для начала надо поименовать все клоки разных вычислителей? Можно ли применить create_generated_clock к порту модуля? 2. Правильно ли будет потом применить между этими клоками set_clock_groups -asynchronous ? Как перенесёт вивадо эту команду с числом аргументов свыше сотни? 3. Либо надо писать set_clock_groups для пар каждого с каждым? Вот вроде как чутка похожий кейс: https://forums.xilinx.com/t5/Timing-Analysis/Asynchronous-inter-clock-paths-failed-to-meet-timing/td-p/761677