从fan-in、fan-out看setup和hold time violation

2020-06-30 11:52:00 浏览数 (1)

建立时间:时钟上升沿之前数据保持稳定时间

保持时间:在时钟上升沿之后数据保持稳定的时间。

建立时间Tsu

根据时钟周期公式:

代码语言:javascript复制
Tco Tdata Tsu-Tskew<Tcycle

可以推导出建立时间的裕量Sslack为:

代码语言:javascript复制
Tcycle-(Tco Tdata Tsu-Tskew)>0

当Sslack大于等于0时即满足建立时间的要求。

保持时间Th

保持时间的目的是防止下一次的数据传输过快,将本次的数据冲刷掉,是对上次数据时间的约束。经过Tsu建立时间之后,触发器进入建立时间阶段,在该阶段最担心的问题是下一次的数据来的太快,导致还未满足保持时间的要求。

所以要求下一次数据到来的时间要大于Th,而下一次数据到来的时间为:

代码语言:javascript复制
Tco Tdata-Tskew

所以保持时间裕量计算公式为:

代码语言:javascript复制
Hslack=(Tco Tdata-Tskew)>0

扇入与扇出

扇入:扇入系数是指门电路允许有几个输入,一般门电路允许的扇入系数为1~5,最多不超过8。

扇出:扇出系数是指门电路允许驱动同类型的门的个数,也就是负载能力,一般门电路的扇出系数为8,驱动器的扇出系数为25,体现了门电路的驱动能力。

灌电流与拉电流

灌电流:当门电路的输出端为低电平时,逻辑门的输入电流为灌电流。灌电流越大,逻辑门输出低电平就越高。

拉电流:当门电路的输出端为高电平时,逻辑门的输出电流为拉电流。拉电流越大,逻辑门的输出高电平就越低。

上拉电阻和下拉电阻

上拉电阻:上拉电阻就是将一个不确定信号的电平钳位在高电平(拉电流),来增加高电平时的驱动能力,以解决逻辑门驱动能力不足的问题。

下拉电阻:下拉电阻就是将一个不确定信号的电平钳位在低电平(灌电流),其作用是吸收电流,防止灌电流过大提高逻辑门的输出电压大小。

当输出负载大于其负载能力时:

1、 逻辑门输出低电平时,可能灌电流过大,输出电压Vol可能大于规定的Volmax

2、 逻辑门输出高电平时,可能拉电流过大,输出电压Voh可能小于规定的Vohmin

3、 输出的传播延时大于规格说明的延迟值,主要表现为Net_delay(Tdata)

4、 输出的上升和下降时间可能会高于规定值

5、超负载工作,电流较大,降低其可靠性,最终引起器件失效

Setup Violation与Hold Violation

根据建立时间公式Tsu:

代码语言:javascript复制
Tcycle-(Tco Tdata Tsu-Tskew)>0

以及保持时间公式Th:

代码语言:javascript复制
Hslack=(Tco Tdata-Tskew)>0

当发生Setup Vioalation或Hold time Violation时,由于Tco是寄存器的固有属性,系统时钟一般也是固定的,可通过减小Tdata(当Sslack<0时)或者增大Tdata(当Hslack<0时),完成时序违例的优化:

举一反二,以保持时间违例进行说明,控制Tdata,Tdata包含数据延迟和布线延迟两部分,其关键在于如何降低数据延迟和布线延迟。

(1)、减小扇出Fanout,根据上文的分析可以分析Fanout较多时增加Net_delay,不利于时序收敛。减小扇出的方法有:

a、寄存器复制,几个寄存器复制原先的驱动信号,分担原本由一个寄存器驱动的多个模块。

b、设置Max_Fanout,在代码中设置信号属性,将对应的Max_Fanout设置为一个合理的值,当实际中fanout超过此值时,综合器极性自动优化,但是过低的扇出可能造成设计阻塞反而不利于约束。

c、BUFG,全局缓冲

(2)、减小逻辑级数Logic Level,一个Logic Level的延迟对应的是一个LUT(查找表)和一个Net的延迟,对应不同的器件,不同频率的设计所能容纳的Logic Level不同,一般可通过重定时(Retiming)解决Logic Level过大问题,使用的方法为:流水线,将过于冗长的组合逻辑增加寄存器进行打拍。对于时钟偏斜△T来说因为不确定正负,其对建立时间和保持时间的影响是相反的,所以我们希望|△T|尽可能的小,所以尽量不要用生成时钟,而采用全局时钟,这样才会有更小的|△T|。

0 人点赞