了解时钟偏差是什么,以及它如何通过理解同步电路、时钟传递和时钟分配网络对现代系统产生影响。
现代数字电子设计的最大挑战之一是能够满足时序约束。在数字电路中,保持可预测且组织良好的操作逻辑流的一种方法是进行精确控制和明确定义时序。
时钟偏差是这些电路设计中需要考虑的一个因素,如果不加以适当处理,它可能会成为重大问题的根源。事实上,在许多情况下,系统的时钟偏差可能是限制整体系统速度和时钟频率的因素。为了了解时钟偏差,我们首先需要讨论同步电路。
同步电路与时钟——最小时钟周期计算
大多数现代数字计算机的一个基本特性是同步电路。
同步电路需要一个时间保持机制来维持有序且周期性的顺序逻辑流。在数字电子学中,这种时间保持机制被称为时钟,它最简单的形式是一个具有恒定频率的方波。
如图1所示,这些电路的工作原理是,数据在数据寄存器中静止存储,这些寄存器设计用于在寄存器遇到时钟的上升沿(或下降沿)之前锁定数据。当时钟边沿发生时,数据从寄存器中释放,通过组合逻辑块发送,然后存储在下一个寄存器中。
这些操作发生的频率由时钟频率决定,而时钟频率又由其他几个参数决定。最小时钟周期的通用方程定义为:
[ T_c = t_{pcq} + t_{pd} + t_{setup} + t_{skew} ]
其中:
(T_c) 是时钟周期 (t_{pcq}) 是数据寄存器的时钟到Q时间(即从时钟信号到达寄存器到数据出现在Q端的时间) (t_{pd}) 是组合逻辑的传播延迟 (t_{setup}) 是下游寄存器的建立时间 (t_{skew}) 是两个寄存器之间的时钟偏差
最大时钟频率定义为:
[ \text{最大时钟频率} = \frac{1}{T_c} ]
时钟传递与时钟偏差
由于数字逻辑倾向于同步电路,因此所有逻辑块的精确时序对于系统的正确行为至关重要。当你考虑将图1中的设置从单个数据路径扩展到数百万个数据路径(如实际芯片设计中那样)时,很快就会发现保持所有内容的同步是一项非比寻常的挑战。
在实践中,时钟信号通常由晶体振荡器产生,送入锁相环(PLL),然后分布到IC内的每个逻辑块和晶体管。在这一过程中,最大的挑战之一被称为时钟偏差,它可以定义为顺序相邻寄存器之间时钟信号到达时间的差异。
这种情况可以用数学方式定义为:
[ \text{Clock Skew} = \text{Receiving Register Clock Delay} - \text{Transmitting Register Clock Delay} ]
图2展示了时钟偏差发生的传统设置,其中时钟分配网络中的延迟导致数据寄存器B比寄存器A更晚接收到其时钟信号。
如果接收寄存器比发送寄存器更晚接收到时钟信号,则可以将偏差定义为正偏差;相反,则为负偏差。在数字设计中,时钟偏差会成为一个严重问题,因为它可能会违反同步电路所依赖的时序约束。
例如,在给定恒定时钟频率和负偏差的情况下(如图3所示),接收寄存器B的时钟比发送寄存器A的时钟更早到达。在这种情况下,从发送寄存器发送的数据将在时钟到达接收寄存器后到达。此时,数据不满足接收寄存器的建立和保持要求(即,在时钟到达时,接收寄存器尚未准备好接收数据)。因此,数据将丢失,因为接收寄存器无法安全地锁定数据。这个概念会产生连锁反应,因为未来依赖于丢失数据的逻辑操作也会失败。
正如我们在最大时钟频率的公式中所见,时钟偏差的增加会增加最小时钟周期,并降低系统的最大时钟频率。这是因为时钟偏差实际上增加了时序开销,减少了组合逻辑中有用工作的时间。还值得注意的是,时钟不需要同时传递,但时钟偏差通常有一个可接受的误差范围。
时钟偏差的原因
尽管时钟偏差的原因有很多,但归根结底都是时钟分配网络中延迟的差异。
时钟偏差的一个原因是时钟分配网络中互连长度的不同。如果两个顺序寄存器时钟传递路径中的互连长度差异很大,就会发生时钟偏差。沿着较短互连传播的时钟将比沿着较长互连传播的时钟更早到达其寄存器。
时钟偏差的另一个原因可能是时钟分配网络中互连延迟的差异。即使两个时钟传递路径的长度相同,它们也可能由于寄生效应(如电阻、电容或电感耦合)而经历不同的延迟。在图4的示例中,任何RC寄生效应的差异都会导致时钟到达寄存器A和B的时间产生不同的延迟。具有较大延迟的线路上的时钟信号自然会比具有较小延迟的信号更晚到达目的地。设计具有相同延迟的互连可能是一项极其困难的任务。
时钟偏差还可能是由时钟信号逻辑路径延迟的差异引起的。例如,在设计包含时钟门控的电路中,时钟传递路径中可能存在额外的门,每个门都有其自身的负载电容和传播延迟。如果这些门没有得到平衡,逻辑路径的差异会导致时钟传递时间不等。
其他原因可能包括温度变化、制造差异和材料缺陷。
使用时钟分配网络最小化时钟偏差
随着时钟频率的增加,时钟偏差成为一个更具挑战性的问题,因为更高的时钟频率显著降低了允许的误差范围。为了最小化时钟偏差,复杂的同步电路采用与时钟树(如图5所示)类似的时钟分配网络。每个时钟树中的反相器都会放大时钟信号,以驱动时钟树的下一级。目标是使时钟信号同时到达所有寄存器输入。
对于拥有数百万甚至数十亿晶体管的超大规模集成电路,时钟分配网络可能会比图4所示的简单示例复杂得多。这些网络的创建通常由电子设计自动化(EDA)软件自动处理。工程师会输入关键参数,如目标频率、寄存器建立和保持时间限制以及最大时钟偏差。然后,软件会生成一个时钟分配网络,以满足目标时序约束。
结论
在数字集成电路设计中,时钟偏差是一个需要考虑的重要问题。如果不妥善处理,时钟偏差可能会对系统性能造成破坏,导致系统操作不当、数据丢失或成为限制系统时钟频率的因素。
本文内容仅代表作者观点,不代表平台观点。
如有任何异议,欢迎联系我们。
如有侵权,请联系删除。
2021年的第一场雪!英特尔2020年Q4财报解读
利用硬件辅助验证工具加速功能仿真
博文:裸片尺寸和光罩难题——光刻扫描仪吞吐量的成本模型
博文速递:Race condition in digital circuits