逻辑设计方法学【5】 --控制时钟偏移
整个芯片中时钟信号到达时间的差异成为时钟偏移,即clock skew。在时序设计的时候,满足寄存器的建立时间和保持时间的要求是最基本的设计原则。在相邻的寄存器之间的数据传输延迟,与时钟偏移应该满足一定的关系,在本节中,我们来详细地讨论其关系。
通过图1来看相邻寄存器之间传输的时候的数据延迟和时钟偏移,以及详细的时序关系
图 1 两个相邻触发器之间的时钟偏移
给定两个相邻的触发器DFF1和DFF2以及一个等电位时钟分布网络,这两个触发器之间的时钟偏移定义为:
Tskew = T2 - T1
在这里T1和T2分别从市中院到触发器DFF1和DFF2的延迟。
1 短路径问题
时钟偏移中的短路径问题与触发器的保持时间违背很相似。在两个相邻触发器之间的数据传播延迟比时钟偏移还短时,就会出现该问题。图2中的电路图和时序图可以说明短路径问题。由于同一时钟沿到达第二个触发器比新数据要慢,因此第二个触发器在与第一个触发器同样的边沿处,切换为与第一个触发器同样的值,这会使DFF2在与DFF1同一个边沿处移位同样的数据,最终导致功能错误。
图 2 含短路径问题的电路
2 时钟偏移和短路径分析
在两个顺序上相邻的触发器之间的数据路径传播延迟比两者之间的数据偏移小的时候,就会出现短路径问题。
通过图3将两个寄存器之间的各个延时信息表示出来
图 3 寄存器之间的各个部位延迟信息
其中:
Tcq1:第一个触发器的时钟输出延迟
Trdq:从第一个触发器的输出到第二个触发器输入的传播延迟
Tck2:第二个触发器的时钟到达时间与第一个触发器的时钟到达时间之差
在以下条件下,会出现明显的短路径问题:
Tck2 > Tcq1 + Trdq - Thold
其中Thold是第二个触发器的保持时间
该区域如图4所示
图 4 短路径示意图
因此,为了使设计完善,必须识别哪些是短路径,设计者必须提取出时钟偏移和短路径延迟。
3 使时钟偏移最小化
将时钟偏移减小至最小值是解决短路径问题的最好方法。将设计中的时钟偏移保持在触发器的最小延迟之下能提高设计对所有短路径问题的健壮性。下面介绍一些常用的设计技术以使设计对时钟偏移更健壮。
3.1 在数据路径上加入延迟
如图3所示,通过在数据路径上增加延迟(Trdq1)而最终使整个数据路径的延迟大于时钟延迟,可以消除短路径问题。在数据路径中插入的延迟必须足够大以保证数据路径延迟一定能大于时钟偏移。
3.2 时钟翻转
时钟翻转是避免出现短路径和时钟偏移问题的另一种方法。在这种技术中,将时钟相对于数据翻转使用,这样就自动消除了时钟偏移。请注意,这么做的前提是:在整个设计中,时钟和数据是一个确定的关系,并且这个关系是用于不会改变的,否则这样设计也会出错。
在发送寄存器接收到时钟沿前,时钟会西安驱动接收触发器读入发送值。图5是实现时钟翻转方式的一个小例子。
图 5 时钟反转方法
可以看出,在插入足够多的延迟后,接收触发器会比源触发器先接受到有效时钟沿,当然这样肯定会牺牲掉建立时间,同时提高了保持时间。
3.3 交替相位时钟
避免时钟偏移问题的已知方法之一是使用交替相位时钟,以下为几种交替相位时钟的设计技术。
交替使用时钟沿
在这种设计方法中,顺序上相邻的触发器使用相反的时钟沿触发,如图6所示
图 6 交替边沿时钟
这种方法为时钟偏移提供了约半个时钟周期的短路径时钟偏移余量。
交替使用时钟相位
图7中的相邻触发器组分别由同一时钟的两个不同相位驱动,在这种情况下,任意两个相邻的触发器之间都有与两个相位的相位差大致相同的安全余量。
图 7 交替相位时钟
必须注意一点,交替使用时钟相位要求对原始时钟信号使用完全不同的时钟约束。例如,在交替使用时钟边沿时,由于相邻触发器由同一个时钟周期相反的边沿驱动,因此时钟频率的新约束值应该是初始约束频率的一半。
总结
在解决短路径问题的时候,虽然已经提出了好几种设计方法,但最常用的设计方法为在数据路径上增加数据延迟。对于FPGA或ASIC来说,各个厂家都会预定义一些为了增加数据延迟的宏定义,这对于设计来说相对比较方便。而后续介绍的提供时钟翻转和交替相位的方法,虽然在原理上可行,但是在实际操作的时候,却并不是那么容易,尤其在时序约束已经很紧的情况下,请更加慎重地考虑这些设计方法。
参考文献
[1] Mohit Arora.硬件架构的艺术.机械工业出版社. 42-48