避免本地时钟
本地时钟是使用常规结构资源而不是专用全局时钟资源进行布线的时钟网络。在大多数情况下,
Vivado
综合和
Vivado
逻辑优化工具在架构要求的时钟缓存或具有超过
30
个时钟负载的时钟网络中插入时钟缓存。本地时钟通常发生在:
•
全局时钟由用结构逻辑实现的计数器划分
•
时钟门控转换不能从时钟路径中删除所有
LUT
• 7
系列器件中使用了太多的时钟缓存
注释:
UltraScale
器件具有比
7
系列器件更多的时钟缓存,并且低扇出时钟缓存的高利用率通常不会产生问题。
一般来说,避免使用本地时钟。本地时钟对实现工具带来了几个挑战:
•
不可预测的时钟偏差,导致困难的时序收敛
•
增加低到中等扇出网络,由布线器特别小心处理,导致潜在的可布线性问题
提示:
如果本地时钟引入
QoR
问题,尝试布局规划规划时钟驱动器并使用
Pblock
加载到一个小区域。使用
report_clock_utilization
标识本地时钟的位置,查看时钟布局,并决定如何减少其数量或影响。
创建输出时钟
把
FPGA
器件的时钟转发给
FPGA
外的时钟器件的最有效方法,就是使用
ODDR
组件。将一个输入保持为高电平,另
一个保持为低电平,就可以方便地创建在相位关系和占空比上都受控良好的时钟 (例如:将
D1
保持为
0
,
D2
引脚保
持为
1
,就可以实现
180
度的相移)。使用置位
/
复位和时钟使能,还能控制时钟停止以及保持时钟极性一段时间。
如果需要进一步控制外部时钟的相位,可使用
MMCM
或
PLL
带有外部反馈补偿和
/
或有粗粒度或精细粒度、固定的或
可变的相位补偿。这样就能够更加有力地控制相对于其它器件的时钟相位和传输时间,降低器件提出的外部时序要求。