| ||
管理偏差
偏差必须得到管理,不过不一定要从源头来达到最小化。CTS引擎通常会通过平衡所有触发器的信号到达时间来实现零偏差,无论这些信号处在哪个时钟树级别。但是,并非所有时钟终点都需要相互平衡,不同的组具有不同的时钟端点,这样的“偏差组”其实会更好一些。
许多情况下,CTS工具可以分析触发器交互,以在不同的时钟树级别以及不同的电压岛上获得偏差平衡要求,工具还可以通过分析时序数据结构中的连接组件来发现偏差组。使用偏差组可以通过消除手动CTS规范和运行多个CTS来节省处理时间,也可以通过减少插入的缓冲区数量来节省电量。
时钟门控
时钟是一个高度活动的节点,其翻转速度是大多数据的两倍。在较小的技术节点上,时钟网络几乎占了芯片功耗的一半,其中大部分是由于时钟翻转的动态功耗。为了满足严格的平衡要求,时钟树中会有大型的驱动器和中继器,因此传统的时钟树和基于网格的(H-Tree或Fishbone)时钟树都会消耗大量的芯片面积,用于优化功率的时钟门控也对面积有直接影响。
时钟门控通过关闭未使用模块的时钟来降低时钟功耗,不过在使用时钟门控时有很多需要注意的地方,如果综合出来的时钟门控是孤立的,可能会导致插入过多的时钟门控,而这些时钟门控本身可能会消耗相当多的功率,RTL技术可以预先量化节能,并确定哪些时钟门可以节省电力。
时钟门控的位置也很重要。如果想做多层时钟树门控,越接近寄存器,本地时钟可能会更快,但有时如果与IP块相关,删除该块的本地时钟会更好。对于更高级别的,比如子系统级别或者时钟生成单元,时钟门控越接近源头,越能降低动态功率。
通过粗略的和精细的时钟门控的组合,可以更好地控制时钟功耗和时序收敛。对于那些此时不期望生效的模块,插入块级时钟门以关闭在特定操作模式中的时钟。粗略的时钟门控一般用在一两个阶段中,以确保大型模块或寄存器组的有效时钟门控,RTL技术可以识别这种场景。
当然这所有的一切都会导致复杂性的增加。随着移动设备的普及,时钟树变得非常复杂,每个电路工作的模式都有不同的时钟跟踪,构建能够承受工艺变化的强大时钟树对设计团队来说是一个巨大的挑战。
工作模式、工艺角和功率状态数量的增长以及各个工艺角的电阻变化很大,这要求设计人员采用更智能的方法进行CTS和时钟优化。具体来说,为了降低时钟树的功耗,CTS引擎必须处理MCMM场景并使用智能时钟门控,偏斜组和回转整形等先进技术,通过功耗反映CTS优化,设计人员可以在不牺牲面积或关闭时间的情况下实现功率和时序的最佳QoR(Questiosn of Reality)。
图1:通过片上变化管理偏差,Synopsys提供
过犹不及
这时候你应该会认为保持时钟在芯片上的低偏差是一件好事。实际上,这可能会导致问题。比如同时切换时钟门会导致高峰值功率和高di/dt(电流关于时间的倒数),从而对配电网络造成压力,这对测试模式也很重要。在RTL阶段,早期基于周期的功率分析可以帮助设计人员识别动态压降分析的关键矢量。
为了减少这些峰值,我们可能会使时钟到达时间故意偏差。如果将时钟信号偏斜,以在不同时间到达不同的元件,这样可以在一个时钟周期内均匀分配电量, 然后整个电路的峰值功率降低到基本上是单个元件的峰值功率。
降低功耗的另一种方法是使时钟边沿不那么完美。偏差是一种时钟转换,或者说时钟切换所需的时间,较慢的偏差意味着较慢的时序和较低的功率,而较快的转换会消耗更多功率却可以改善时序和信号的完整性。偏差整形能够消除无效地转换,以降低动态功率,同时满足时序约束。
FPGA中的时钟
既然谈到时钟问题,FPGA时钟也是兵家必争之地。FPGA具有固定的布线,固定大小的缓冲器和许多其他限制。不过在FPGA中比较好的是,所有延迟都是可以预先知道的。
生成时钟树时有一些因素是必须考虑的。比如输入和输出的数量是时钟树解决方案复杂性和所需设备数量的主要驱动因素,频率问题会影响最终时钟树解决方案的复杂性,必须考虑诸如“上电时是否需要所有时钟?”等问题,在功率、成本、电路板面积和设备数量的限制下完成这些要求,设计师可以映射到真实的设备来创建他们的时钟树。
如何避免问题
应该设法在最高级别的设计中避免问题。想要完美全局同步的系统是有些不切实际的,相反,现在所设计的系统,时钟来自不同的PLL,应该被认为是彼此异步的。
但是,需要注意时钟/数据域交叉的情况。同步器设计的理论基于时钟彼此不同步的事实,因此输入边沿由发送时钟发送并由接收时钟计时,随着时间的推移相对于每个时钟移动,如果它们是同步的,偏差对于同步器就是有害的。同步被视为异步,就会产生亚稳态,这样的设计可能很糟糕。
结论
时钟不是RTL模型中所看到的完美的信号。它可能是整个设计中最复杂的信号,影响系统的各个方面,从时序收敛到峰值功率需求,从芯片架构到布局。大多数公司都有明确定义的与处理时钟有关的方法,虽然工具已经帮助做了很多,不过工程师们应该记住,我们需要时刻关注——时钟边沿。
原文来自于Semiengineering“The Problem with Clocks”
https://semiengineering.com/the-problem-with-clocks/