时钟偏移(英语:clock skew)或称时钟偏斜,是指时钟信号到达数字电路各个部分所用时间的差异。对于大多数数字集成电路系统,例如计算机系统,各种信号都是根据系统时间脉冲信号的时钟频率进行同步的,这样这些信号就能在相同的步调上工作。最理想的情况是,输入信号在下一个时钟的有效电平或者信号边缘带来之前,切换并在其正确的逻辑电平上保持稳定,从而使整个电路系统的行为合乎预设。在一个完整的电路系统中,不同电子器件的速度可能有着大小不一的差距,因此系统存在一个最大的运行频率。实际上,信号可能无法准确地在理想的信号边缘到来之前的瞬间保持在其正确的信号值上,它保持稳定所需的时间于理想情况有一定的偏移,这种偏移就是时钟偏移。除了上面这种情况,还有其他多种原因可以导致时钟偏移的现象。
同步时序电路的基本模型是由寄存器(实现时序功能)和寄存器之间的组合逻辑电路(实现组合逻辑功能)构成的。数据信号被锁存在寄存器中,并可以“穿过”组合逻辑电路到达下一个寄存器,然后在时钟的有效边缘到来时,下一级寄存器对数据信号进行锁存。理想的电路系统需要时钟信号在各个寄存器上的步调尽可能地一致,这样才能使各个寄存器的行为“同步”。然而,在实际的同步电路设计过程中,常常遇到时钟信号在不同时间到达电路各个部分的现象,这就是时钟偏移。
在同步电路里,时钟偏移是指时钟信号到达两个相互连接的硬件寄存器单元的差异。时钟偏移的数值可以是正的,也可以是负的。如果时钟信号在集成电路中完全是同步的,那么这个集成电路中各个部分观察到的时钟偏移为零。
产生时钟偏移现象的原因有几种,例如互连线的长度、温度的偏差、位于传输路径中间的器件、电容耦合、器件材料不完善以及使用时钟信号的器件的输入端电容不同。随着电路的时钟频率增加,时序性质会变得更加关键,稍微的偏移甚至会使电路偏离正常工作的状态。
时钟偏移主要分为两类:正偏移和负偏移。当信号传输的目标寄存器在接收寄存器之前捕获正确的时钟信号,电路发生正偏移;反之,当信号传输的目标寄存器在接收寄存器之后捕获正确的时钟信号,电路发生负偏移。
时钟偏移可能会造成两种时序违背:保持时间违背、建立时间违背。
发生在时钟信号的到来比数据信号从信号源到达目标寄存器(或目标触发器)并在其中保持一段时间更晚。反过来讲,即数据信号在连接到目标寄存器上,未能在有效边缘到来之后保持足够长的时间,从而造成数据不能正确地被锁存在目标寄存器中。
假设目标寄存器捕获有效时钟信号边缘的时间比数据信号的到达更早,那么连接在目标寄存器上的数据信号必须在时钟信号下一次有效边缘到来之前尽快保持稳定。如果数据信号未能满足这一要求,那么就会发生建立时间违背。如果时钟信号有效边缘到来之时,数据信号仍未稳定连接到目标寄存器,就意味着要等待再下一次时钟信号有效边缘到来的时候才能做尝试。数据信号需要的建立时间长度是系统时钟信号频率的要求。
单纯提高时钟频率不能解决保持时间违背,因此在某种程度上,保持时间违背问题更加严重。设计人员需要考虑正的时钟偏移和负的时钟偏移,使得建立时间约束和保持时间约束都不被违背。
在超大规模集成电路中,存在大量需要时钟信号进行同步的寄存器,这就需要构建一个时钟信号的分布传输网络,来提供时钟偏移尽可能小的同步时序。在集成电路的物理设计阶段,需要设计一个良好的时钟树结构。通过在时钟信号传输电路上插入不同参数的缓冲器,可以尽可能地使时钟偏移接近零,即时钟信号近乎同步到达集成电路中的各个寄存器。设计人员可以利用计算机辅助工程软件(例如 Cadence等公司的电子设计自动化工具)来辅助设计。静态时序分析可以检查集成电路是否违背保持时间、建立时间相关的约束。