7 系列器件时钟
注释: 本章节以 Virtex ® -7 时钟源为例。 Virtex-6 的时钟资源与此类似。如果使用不同的架构,请参阅有关器件的 《时
钟资源指南》 [ 参照 40] 。
Virtex-6 和 Virtex-7 器件内含 32 个称为 BUFG 的全局时钟缓存。 BUFG 可满足设计的大部分时钟需求,且对时钟数量、
设计性能及时钟控制要求不高。全局时钟资源包括 BUFG 、 BUFGCE 、 BUFGMUX 和 BUFGCTRL 原语,每个都有自己的
特性。如需了解有关全局时钟组件特性的信息,请参阅有关器件的 《时钟资源指南》 [ 参照 40] 和 《库指南》 [ 参照
30] 。
建议: 如果时钟需求超过 BUFG 的数量,或是需要更优异的总体时钟特性,应根据可用时钟资源分析时钟需求,并针
对任务选择最佳资源。
除全局时钟资源之外,还提供区域时钟资源,其有助于更加严格地控制时钟网络。区域时钟资源包括水平时钟区域缓
存 (BUFH 、 BUFHCE) 、区域时钟缓存 (BUFR) 、 I/O 时钟缓存 (BUFIO) 及多区域时钟缓存 (BUFMR) 。如需了解有关区域时
钟组件特性的信息,请参阅有关器件的 《时钟资源指南》 [ 参照 40] 和 《库指南》 [ 参照 30] 。
使用水平时钟区域缓存实现时钟门控
您可以与 BUFG 配合使用水平时钟区域缓存 (BUFHCE) ,以执行中等粒度时钟门控功能。应对有数百或者数千负载的时
钟域,且如果希望在其中的一部分间歇性地关闭时钟, BUFHCE 就是有效的时钟资源。 BUFG 可驱动在同一或不同时钟
区域中的多个 BUFHCE ,从而可帮助您在多个低偏差时钟域中独立控制时钟。
![](https://i-blog.csdnimg.cn/direct/d02da8df00114a239bd7da69166bdff0.png)
在独立使用时,所有连接到 BUFH 的负载必须处于相同的时钟区域中。这样能良好地满足超高速、更加精细粒度 (更
少负载数量)的时钟需求。 BUFHCH 可用于实现特定时钟区域中的中等粒度时钟门控。用户必须确保由 BUFH 驱动的
资源不会超出时钟区域中的可用资源且不存在其它冲突。
BUFH 和由 BUFG 、其他 BUFH 或任何其它时钟域驱动的时钟域之间的相位关系可能不同。唯一的例外是当有两个
BUFH 驱动水平相邻的时钟域时。此时如果两个 BUFH 都由同一时钟源驱动,左右时钟区域之间的偏差应具有高度受控
的相位关系,这样数据就可以安全地跨这两个 BUFH 驱动的时钟域。 BUFH 还可用于访问对面区域中的 MMCM 或
PLL ,用于时钟输入或千兆位收发器。但使用这种方法时必须小心谨慎,以确保有 MMCM 或 PLL 可用。
关于 SSI 器件的更多时钟考虑
通常,上述所有时钟考虑因素同样适用于 SSI 技术器件。但由于其结构问题,在针对这些器件时,还有需要考虑更多因
素。使用 BUFMR 时,不能驱动跨 SLR 边界的时钟资源。相应地,赛灵思建议用户把负责驱动 BUFMR 到 bank 或时钟
区域的时钟布局在 SLR 内部的中心时钟区域,以便访问 SLR 左右两侧的全部三个时钟区域。
就全局时钟而言,对设计需要的全局时钟 (BUFG) 数量不超过 (包括) 16 个的情况,没必要考虑更多因素。这些工具
会自动分配 BUFG ,避免可能发生的冲突。在需要的 BUFG 数量超过 16 个 (但不足 32 个)时,必须在引脚选择和布
局方面进一步考虑,才能避免因全局时钟线竞争和 / 或时钟负载布局引起的资源争用。
和所有其它赛灵思 7 系列器件中一样,支持时钟功能的 I/O (CCIO) 及相关的时钟管理模块 (CMT) 都对它们在给定 SLR
中能够驱动的 BUFG 有限制性要求。位于 SLR 上半部或下半部的 CCIO 只能驱动对应的上半部或下半部中的 BUFG 。因
此,在选择引脚和相关的 CMT 的时候,应注意不要让所有 SLR 的上半部或下半部的 BUFG 超过 16 个。为此,该工具
可自动分配所有的 BUFG ,在避免发生冲突的情况下把全部时钟驱动到所有的 SLR 。
对需要的全局时钟数量超过 32 个的情况,赛灵思建议尝试把 BUFR 和 BUFH 用于较小的时钟域,从而减少所需的全局
时钟域数量。结合使用 BUFR 和 BUFMR ,可以驱动三个时钟区域内的资源,覆盖二分之一个 SLR (对于 Virtex-7 级
SLR ,约为 25 万个逻辑单元)。水平相邻的时钟区域可同时拥有左右两侧由低偏差方式驱动的 BUFH 缓存,实现规模相
当于三分之一个 SLR 的时钟域 (约为 16.7 万个逻辑单元)。
尽量利用这些资源不仅可以减少时钟资源争用方面的考虑,而且可以多次完善总体布局,从而提升性能、降低功耗。
如果需要超过 32 个全局时钟来驱动多半个 SLR 或多个 SLR ,很可能要细分 BUFG 全局时钟轴。在 SLR 边缘处的垂直全
局时钟线上有隔离缓存,便于在不发生冲突的情况下,在占据相同垂直全局时钟线的不同 SLR 中使用两个 BUFG 。利用
此项功能需要更多用户控制和干预。在下图中,三个 SLR 中从 BUFG0 到 BUFG2 已被隔离,因此可在其各自的 SLR 内
拥有独立时钟。另一方面, BUFG31 线未被隔离。因此,同一 BUFG31 (位于图中的 SLR2 中)可用来驱动所有 3 个
SLR 中的时钟线,但应禁用位于其它 SLR 中的 BUFG31 。
对 BUFG 而言,必须精心选择和手动布局 (LOC) 。此外,每个时钟域的所有负载都必须手动编组、手动布局在适当的
SLR 中,以避免时钟冲突。如果所有全局时钟的布局和所有负载的管理能够在避免发生任何时钟冲突的情况下让时钟
达到所有的负载,就能够使用数量多于 32 个的该全局时钟资源。
![](https://i-blog.csdnimg.cn/direct/59c22e9fae4049f29920f917e14231b5.png)
SSI 技术器件中的全局时钟资源的时钟偏差
时钟偏差对任何大型 FPGA 器件而言,都可能占给定路径总体时序预算的主要部分。过大的时钟偏差不仅会给最高时
钟速度造成问题,本身还会带来严苛的保持时间要求。在器件中内置多个裸片会带来更为严峻的 PVT 工艺问题,但在
赛灵思组装工艺的管理下,只有速度相近的裸片才会封装在一起。
即便有这样的工艺,赛灵思时序工具还是会把这些差异包含在时序报告中。在分析路径的过程中,这些方面会作为建
立和保持计算的一部分加以分析,并依据规定的要求,以路径延迟的形式反映在报告中。对 SSI 技术器件而言,无需用
户额外进行计算或考虑,因为时序分析工具已在计算中考虑过这些因素。
如果使用顶部或底部的 SLR 进行延迟微分计算,偏差会增大,而且各点之间距离越远,偏移越大。因此赛灵思建议对
全局时钟而言,中心 SLR 中必须布局一个以上的 SLR 。这样能够在器件上实现更加均匀的总体时钟网络分布,从而降
低总体时钟偏差。
针对 UltraScale 器件而言,时钟布局的影响较少。然而,赛灵思仍然强烈建议将时钟资源尽可能接近时钟负载的中心
点布局,以降低时钟插入延迟并降低时钟功耗。