1.Clock skew 和Clock jitter 是影响时钟信号稳定性的主要因素
skew通常是时钟相位上的不确定,而jitter是指时钟频率上的不确定(uncertainty)。造成skew和jitter的原因很多。
1)由于时钟源到达不同寄存器所经历路径的驱动和负载的不同,时钟边沿的位置有所差异,因此就带来了skew。
skew=Tclk1-Tclk2
2)而由于晶振本身稳定性,电源以及温度变化等原因造成了时钟频率的变化,就是jitter。
skew和jitter对电路的影响可以用一个简单的时间模型来解释。假设下图中t(c-q)代表寄存器的最大输出延迟,t(c-q, cd)表示最小输出延时;t(su)和t(hold)分别代表寄存器的setup, hold time(暂不考虑p.v.t)差异;t(logic)和t(logic, cd)分别表示最大的组合逻辑传输延迟和最小组合逻辑传输延迟;
不考虑skew和jitter的情况下,及t(clk1)和t(clk2)同频同相时,时钟周期T和t(hold)需要满足
T > t(c-q) + t(logic) + t(su)
t(hold) < t(c-q, cd) + t(logic, cd)
这样才能保证电路的功能正常,且避免竞争的发生。
2.时钟偏差分析
1)正时钟偏差
如果考虑CLK2比CLK1晚t1的相位,及skew=t1。则
建立时间:T +t1> t(c-q) + t(logic) + t(su) ,t1>0
总是满足建立时间,正时钟偏差使有可能提高时钟频率,但同时也可能引起信号竞争,加大时钟周期总可满足此条件。
保持时间: t(hold) < t(c-q, cd) + t(logic, cd) - t1
正时钟偏差,意味着电路有更大的倾向发生hold time violation,改变时钟周期不能解决问题。
2)负时钟偏差
如果考虑CLK1比CLK2晚t2的相位,及skew=-t2,则
建立时间:T > t(c-q) + t(logic) + t(su) + t2, t2>0
保持时间: t(hold) < t(c-q, cd) + t(logic, cd) +t2
负时钟偏差会降低时钟性能,由于边缘2领先边缘1,因此不会发生信号竞争(总是满足保持时间)
时钟是对性能造成负面的影响,一般设计中都需要专门留取10%左右的margin来保证。
clock uncertainty = clock jitter + clock skew. jitter 是 由时钟源产生的抖动。skew是时钟树不平衡引起的到达两个寄存器的延迟差。在cts之后,skew由工具算出,因此sta的时候clock uncertainty 可以设一个比较小的值。另外做hold check的时候因为检查的是同一个时钟沿,因此没有jitter只有skew.
3.短路径问题
时钟偏移中的短路径问题与触发器的保持时间违背很相似。在两个相邻触发器之间的数据传播延迟比时钟偏移还短时,就会出现该问题。图中的电路图和时序图可以说明短路径问题。由于同一时钟沿到达第二个触发器比新数据要慢,因此第二个触发器在与第一个触发器同样的边沿处,切换为与第一个触发器同样的值,这会使DFF2在与DFF1同一个边沿处移位同样的数据,最终导致功能错误。(本应该虚线处,下一时钟数据才跳变,结果上一时钟沿就跳变)
1)时钟偏移和短路径分析
Tcq1:第一个触发器的时钟输出延迟
Trdq:从第一个触发器的输出到第二个触发器输入的传播延迟
Tck2:第二个触发器的时钟到达时间与第一个触发器的时钟到达时间之差
在以下条件下,会出现明显的短路径问题:
Tck2 > Tcq1 + Trdq - Thold
2)时钟偏移最小化
①在数据路径上加入延迟
通过在数据路径上增加延迟(Trdq1)而最终使整个数据路径的延迟大于时钟延迟,可以消除短路径问题。在数据路径中插入的延迟必须足够大以保证数据路径延迟一定能大于时钟偏移
②时钟反转
在发送寄存器接收到时钟沿前,时钟会先驱动接收触发器读入发送(源)值。在插入足够多的延迟后,接收触发器会比源触发器先接受到有效时钟沿,这是以牺牲建立时间为代价来提高保持时间的办法。
③交替相位时钟
交替使用时钟沿
在这种设计方法中,顺序上相邻的触发器使用相反的时钟沿触发,为时钟偏移提供了约半个时钟周期的短路径时钟偏移余量。
交替使用时钟相位
相邻触发器组分别由同一时钟的两个不同相位驱动,在这种情况下,任意两个相邻的触发器之间都有与两个相位的相位差大致相同的安全余量。必须注意一点,交替使用时钟相位要求对原始时钟信号使用完全不同的时钟约束。例如,在交替使用时钟边沿时,由于相邻触发器由同一个时钟周期相反的边沿驱动,因此时钟频率的新约束值应该是初始约束频率的一半。