说明:
电路中的时序主要分为同步和异步两类,同步时序的检查主要有setup 和hold (建立和保持)timing check。本节介绍setup、hold的概念以及在timing 报告中涉及到的相关参数的概念
1. setup、hold time check介绍
setup time:在时钟有效沿之前,数据到达寄存器D端的稳定时间
hold time: 在时钟有效沿之后,已经在D端的数据的稳定时间
在STA中,timing check被分为四大类:input2reg,reg2output,input2output,reg2reg。其中reg2reg比重较多,且所有的四类都是基于reg2reg的分析形式进行的check。如下图1所示的reg2reg timing path。图2为两个寄存的clk 周期波形图。
那么图1 中的DFF2的setup check含义就是,图2中第一个时钟沿,DFF1发送数据,而在第二个时钟沿来临之前,数据已经到达了DFF2的D端口处。而对应setup check需要满足公式如下,只有当timing 报告中满足这个公式的时候,setup check 才是满足的:
同理图1中DFF2的hold check含义就是,图2中第2个时钟沿接收到数据之后,在把DFF2的D端口数据送往Q端口的时候,要保证D口的数据不会改变(不会被第三个时钟沿时刻DFF1的新数据刷新)。对应的hold check 需要满足公式如下:
2. setup、hold time check来源
前面已经讲解了setup 和hold timing check在STA中的概念以及在check过程中的计算方法,这一节讲解,为什么要有setup和hold timing check,setup time、hold time 的原理。
DFF虽然是一个std celll,但是它并不是门级的最小单元,也不是晶体管级的最小单元。如下图3所示,为上升沿触发DFF的晶体管级逻辑示意图,由6个反相器和4个CMOS门组成。
图中主要分为两部分,红色线连接的部分为master latch,绿色线连接的为slave latch。当时钟上升沿来之前,clk为低电平,C1打开,C2关闭,C3关闭,C4打开。数据由D端口经过I1,C1,I2,I3,传递到C2和C3处。当时钟上升沿来了,clk 由低电平转为高电平,C1关闭,C2打开,C3打开,C4关闭,数据由C3经过I4,I6,I5传递给Q和C4,master latch通过I2、I3、C2保存数据。当时钟下降沿来了,clk由高电平转为低电平,C1打开,C2关闭,C3关闭,C4打开,新的数据由D端口经过I1,C1,I2,I3,传递到C2和C3处,slave latch通过I4、I5、C4保存数据。由此可以得知数据由D端口传到Q端口,需要经过两个步骤的,第一步数据传入master latch锁存,第二步数据由master latch传入slave latch锁存并输出给Q。 所以,数据D和clk相比较来的快慢,可能会导致数据出现采错情况,从而导致D到Q的数据传输错误,因此需要setup time和hold time来进行修正,保证每一拍的数据都能及时到达以及送出。
由图分析可知,数据由C3送给Q的值,取决于时钟上升沿来之前D端口传给C2和C3的值,如果上升沿来了,结果数据还没有正常送到C2,那么可能导致C2处的数据不是期望的数据,导致送给Q的数据是错误的,这个就是所谓的setup timing。而这个setup timing 由I1、C1、I2、I3决定。对应的公式为:
另由图分析可知,假如数据0由D送入master latch的时候,会由新的数据1从其他的DFF的slave latch送到该DFF的D端口,那么如果这个D端口刷新的太快,就不能保证D送入master latch的数据为数据0。由此如果想传入的数据不被恶意刷新,就需要保证在C1关闭之前,数据不能到达C1的端口,因此得到hold time的公式:
而第一节中的DFF的ck到q的时间,可以表示:
有趣的探讨点:
- 该章节中的Tsetup、Thold、Tck-q三个值,对应了DFF中的三个特殊的delay。DFF作为std cell,在lib中会对这三个值进行描述,而在timing check的时候,会直接取用这三个对应的值进行计算。Tsetup、Thold在timing 报告中对应library setup time和library hold time的delay值。而ck-q的值对应timing报告中DFF的delay值。
- 由该章节公式可以看出,Tsetup、Tck-q基本可以确认为正值,因为是几个delay的加和(排除si的影响)。但是Thold 确是两个delay的减法,所以,可能在lib中存在Thold为负值的情况,这对应于TC1由开启到关闭的时间要小于I1的传输时间。
3.Timing Check – hold/setup timing哪个更重要?
setup:
由Timing Check – hold/setup check原理介绍中介绍可以知道,setup timing 的检查公式是和Tperiod,也就是clock的周期有关系,那也就是时钟频率,那也就是芯片的performance。从这一方面来考虑,setup对芯片的性能影响非常大。
hold:
由Timing Check – hold/setup check原理介绍可以知道,hold timing 的检查公式,只是和cell delay以及lib hold time有关,和时钟频率没有任何关系。从公式上来看,即不会影响到芯片的性能。但是,如果在STA signoff阶段,hold timing 不满足导致的回片测试出现问题,那么是无法debug出来的,这个是不可逆的。而如果是setup没有满足需求就进行了TO,那么回片之后,还可以通过降频的方式进行测试。
总之
因此,setup的好坏将会影响芯片的性能,hold的好坏对于TO回片测试也会有很大的影响。如果考虑到芯片最终的性能,那setup更重要一些,但是如果考虑量产过程中的测试阶段,那hold同等重要,甚至重要性要高于setup。这就是在STA阶段经常会出现的情况:hold 一定要clean,setup剩余非常少,难修的时候可以waive。