Xilinx的智能门控时钟技术你了解吗?

文章目录

        写在前面

        摘要

        智能时钟门控

        额外优化

        设计实现流程中的智能时钟门控

        基准测试结果

        总结


写在前面

        在FPGA和ASIC设计中,时钟信号通常都是翻转频率非常高的信号,而电路的翻转本质是电容的充放电,这也就是时钟信号带来的电路功耗。在低功耗设计中,通过使用使能信号控制时钟信号在不必要的时候被禁用,从而减少系统功耗,此类方法也被称为门控时钟技术。

        传统的门控时钟,需要设计人员在RTL中自己设计。xilinx自7系列起,在其大多数逻辑元素(如FF,BRAM,SRL等)中,均添加了使能管脚CE,设计人员只需要在RTL中使用综合属性(* gated clock =“true”*),或者设置综合策略gated_ clock_conversion”为auto即可由vivado自动推断出门控时钟逻辑。同样的,也可以通过源语BUFGCE来直接指定门控时钟。这无疑给我们的设计带来了很大的方便。

        本文主要翻译自Xilinx《WP370,Reducing Switching Power with Intelligent Clock Gating》,浅蓝色字体为本人理解


摘要

        Xilinx提供了第一个自动化、细粒度的时钟门控解决方案,可在7系列和Zynq 7000设备中降低最高达30%的动态功耗。Xilinx智能时钟门控优化会在整个设计中自动执行,不会向设计流程引入新工具,也不会对现有逻辑或时钟产生改变设计行为的更改。而且,在大多数情况下,时序也会被保留。


智能时钟门控

        时钟门控是一种很好理解的功率优化技术,用于ASIC和FPGA设计,以消除不必要的开关行为。这种方法通常需要设计者在他们的RTL代码中添加少量的逻辑来禁用或取消不必要的活动时序单元--例如寄存器。尽管这种方法明显降低了动态功率,但在尝试手动实现这些优化时,设计人员仍面临着重大挑战:

  • 真正减少设计中的活动需要深入了解设计本身,且通常需要对RTL进行大量更改
  • 目前,大多数ASIC和FPGA设计都包含一些新的设计、遗留的设计和第三方IP电路设计的组合,但通常只有新的设计是时钟门控优化的候选。设计人员很少尝试在遗留的设计和IP设计上进行这些优化。他们通常对遗留RTL代码的设计和操作没有足够深入的了解,并且需要大量的时间来手动开发时钟门控优化
  • 应用时钟门控优化通常需要在设计流程中添加更多的工具和更多的设计流程,并可能导致创建一组复杂的新时钟,需要进行复杂的时序分析(ASIC优化通常就是这样)。除非功耗效率的提高对设计的成功是必要的,否则额外的复杂度和时间可能会令人望而却步,并徒增风险

        意思就是你自己设计搞门控时钟,是又费资源又费时,还需要对自己的设计底层非常了解,不如直接使用我们xilinx的智能门控时钟技术,不需要改RTL,也不会动你的时序,多方便啊!

        Xilinx具有与位置和布线标准设计流相链接的自动化功能,该功能使用一组创新算法对设计的所有部分(包括遗留和第三方IP模块)执行分析。对逻辑进行分析等同于在每个时钟周期寻找对结果无用的源寄存器,软件利用在可用逻辑中丰富的时钟使能(CEs)资源来创建时钟门控信号,以消除多余的开关行为,如图1所示。

        每个CE都非常适合进行功率优化,因为它连接到基本逻辑簇(Slice)。CE只控制少量寄存器(8个),提供与绝大多数设计使用的总线的最小尺寸相匹配的粒度级别(请参见图2)。

        需要注意的是,这些优化不会改变现有的逻辑或时钟位置,也不会创建新的时钟。最终的设计在逻辑上与原始设计相当,并且创建的额外逻辑与之前的逻辑是分开的,在原始设计中只增加了约2%的Lut消耗(平均而言)。因此,优化在绝大多数情况下不会影响时序,因为它没有向原始逻辑路径添加新的逻辑级数。

        其实就是每个时序逻辑器件都有使能端CE,只要你写的RTL符合要求,我们都能直接将其推断到CE端,不会产生额外的逻辑。


额外优化

        智能时钟门控优化还降低了在简单或双端口模式下专用块RAM(BRAM)的功耗。这些BRAM提供了几个使能信号:array enable,write enable和output register clock enable。节省的大部分功耗来自于使用array enable信号,如图3所示。

        例如,在一个块RAM后面是一个2对1的多路复用器,优化在LUT中实现了一个OR函数,带有写使能(weR)和选择控制(preselectR),并将它们连接到BRAM的ENARDEN。OR函数确保当没有数据写入和输出不被使用时(即没有在多路复用器中选择)时,BRAM消耗更少的能量。假设块RAM的写启用的切换率为50%,此优化显示动态功率减少了26%。

        下面是Verilog代码的一个示例:

        在该软件的同一个版本中,这些优化可以检测作为逻辑实现的时钟使能,并将其替换为专用的CE信号,如图4所示。


设计实现流程中的智能时钟门控

        Vivado设计组件(v2013.1及以后)将智能时钟门控优化整合到设计实现流程中。所有的黑盒和IP也都经过了优化。在综合后的opt_design阶段默认执行BRAM功耗优化的一个子集。这些优化的重点是在保持性能的同时最小化BRAM的功耗。

        在opt_design阶段之后的power_opt_design步骤中(可选)可以使用更广泛的功耗优化,包括额外的BRAM功耗优化以及寄存器和移位寄存器(SRL)优化。它可以通过项目设置对话框中的Power Opt设计下的is_enabled选项启用。在功耗优化后,用户可以照常运行布局和布线。参见图5。

        默认情况下,功耗优化工作在整个设计阶段。但是,存在一些特殊的约束,可以对设计的某些部分(如模块、时钟域或实例类型(如BRAM))进行更有针对性的优化。

        好消息是,这个优化选项默认是打开的。 


基准测试结果

        智能时钟门控的好处因设计而异:一些设计显示出显著的节能效果,而另一些则不然。有效性取决于用户是否已经优化了功耗的设计,以及设计是否具有符合时钟门控的逻辑结构。客户设计结果显示,动态功率降低最高达30%,平均可降低18%。参见图6。


总结

        Vivado设计组件提供的智能时钟门控优化功能大大简化了FPGA设计中降低动态功率的工作。ASIC设计中使用的传统时钟门优化方法预设了对设计的深入了解,从而几乎排除了对遗留和第三方IP块的优化。通常需要新的工具、新的步骤和复杂的时间分析来补偿不可避免的新的“门控时钟”和产生的逻辑变化。相比之下,Xilinx智能时钟门控优化自动优化整个设计(或一部分),且没有引入新的工具或流程(相比默认流程),也不会对现有逻辑和时钟、时序产生改变。

猜你喜欢

转载自blog.csdn.net/wuzhikaidetb/article/details/125095683