28 августа 2026 г.

Технический отчет - Синхронный CDC в Xilinx Vivado - как STA анализирует кратные частоты от одного MMCM (300 - 600 МГц)

В современных проектах на базе ПЛИС Xilinx/AMD (в частности, семейств 7 Series и Zynq-7000) передача данных между кратными тактовыми частотами часто воспринимается разработчиками как асинхронный переход, требующий установки FIFO или многотриггерных синхронизаторов.

Однако при тактировании от общего блока MMCM/PLL сетки $300\text{ МГц}$ и $600\text{ МГц}$ обладают строгой аппаратной когерентностью. Временной движок Vivado (Static Timing Analysis — STA) рассматривает такие пути как полностью синхронные и автоматически рассчитывает бюджеты времени на переключение логики и трассировку.

В представленном техническом отчёте подробно рассмотрена физика статического временного анализа, особенности работы Timing-Driven Flow и практические сценарии организации междоменных трактов:

  • Физическая модель STA и расчет бюджетов: почему внутри кристалла тактовые деревья выравниваются в фазе $0^\circ$, как формируются окна Setup ($1.67\text{ нс}$) и Hold ($0.00\text{ нс}$), и каким образом трассировщик устраняет риски гонок данных с помощью механизма Routing Detour.

  • Эксперимент со сдвигом фазы (+90°): демонстрация того, почему попытка компенсировать задержку логики смещением фазы MMCM разрушает параллельные шины (Slack Contradiction) и приводит к срыву таймингов.

  • Архитектурные методы передачи данных:

    • Прямой синхронный регистровый переход без дополнительных ограничений;

    • Передача по стробу Clock Enable (раз в два такта) с обязательной настройкой пары ограничений set_multicycle_path (-setup 2 и -hold 1 -end);

    • Аппаратная альтернатива на базе примитива ODDR — удвоение потока данных без заведения быстрой сетки $600\text{ МГц}$ в логическую матрицу.

  • Справочные материалы и практика XDC: сводная таблица всех решений по результатам синтеза, математический аппарат вычисления Clock Uncertainty по руководству UG906 и правила адресации объектов netlist в Vivado.

Полный документ с подробными выкладками, временными диаграммами и разбором отчётов Vivado (report_timing, report_clock_interaction) доступен для чтения во встроенном просмотрщике ниже: