局部时钟是使用常规互连结构资源而不是专用全局时钟资源进行布线的时钟信号线。大多数情况下,Vivado 综合和 Vivado 逻辑最优化工具会插入时钟缓冲器以满足架构要求,或者用于具有超过 30 个时钟负载的时钟信号线。通常在如下情况下会出现局部时钟:
- 全局时钟由用互连结构逻辑实现的计数器进行分频
- 时钟门控转换不能从时钟路径中删除所有 LUT
一般情况下请避免使用局部时钟。局部时钟给实现工具带来了几个难题:
- 时钟偏差不可预测,导致难以执行时序收敛
- 增加由布线器谨慎处理的中低扇出信号线会导致潜在的可布线性问题 提示: 如果局部时钟引发时序约束 QoR 问题,请尝试使用 Pblock 在一小块面积上对时钟驱动和负载进行布局规划。使用
report_clock_utilization
来识别局部时钟的位置,查看时钟布局,并决定如何降低其数量或影响。
Versal 器件提供的 BUFG_FABRIC 单元可用于将信号线从常规互连结构资源布线到专用全局时钟资源上。在整个器件上的各 NoC 列中存在多个 BUFG_FABRIC site,用于对高扇出信号线(例如,全局时钟资源上的复位和时钟使能)进行布线。
警告:
BUFG_FABRIC 单元并非供时钟信号线用于访问全局时钟资源。如有局部时钟需要使用全局时钟网络,但无法直接访问全局时钟资源,则可使用 BUFG_FABRIC 来将此局部时钟布线到全局时钟网络上。相比于可直接访问全局时钟资源的时钟,由此生成的时钟将具备次优时钟特性。