sdf- standrad dealy format,标准延时格式文件。
作为一个ASIC工程师,需要时常和这个东西打交道,比如synthesis,STA,post-simulation,eco。也算是一个非常基本的概念,但也时常发现很多工程师对此认识模糊不清,所以写写。
First, delay分为cell delay 和wire delay.顾名思义,cell delay是指元器件内部的delay,wire delay是器件互连Pin-to-pin的delay。
真正的delay,就是这两者的累加。
举个例子:
(CELL
(CELLTYPE "NR2D1") // cell name
(INSTANCE u434) // cell instantiate name
(DELAY
(ABSOLUTE
(IOPATH A1 ZN (0.0812::0.0841) (0.0379::0.0395)) //cell delay,A1-->ZN
(IOPATH A2 ZN (0.1350::0.1350) (0.0994::0.0994)) //cell delay A2-->ZN
)
)
)
以上是Back end return的 sdf 文件,描述了一个2输入或非门的器件,例化名u434,给出了该器件从输入到输出的每条路径的delay值。
再看,
(INTERCONNECT u434/Z u444/A2 (0.028:0.029:0.029) (0.030:0.031:0.031))
// 上升沿传输delay 下降沿传输delay
以上是一个wire delay得描述,从u434的Z Ouput pin到U444的A2 input pin,给出了上升delay(rising edge transmit delay)和下降delay(falling edge transmit delay). 括号内的时间分别是最小(Tmin)/典型(Ttyp)/最大(Tmax)delay。
由上即可计算出,由u434的任一输入端到u444的A2端的总延时。
当然,在一个大型的高速ASIC器件中,这只是一个基本的sdf文件(basic sdf file),实际上,我们还会考虑outbound,couple等问题,会有附加的其它sdf文件来描述相应导致的增加delay,最后总的delay还是累加算出。
关于基本元器件的时序定义,就不再进行解释,在任意一本verilog书籍里都可以看到。
P.S 有时在做post-simulation时,会出现不能标上(annotate)sdf的情况,这时就需要仔细检查simulation报出的信息与sdf对应的cell是否一致,是否path相同,例化名正确等。
呼,这些东西虽然简单,要写出来还真麻烦。
用户1849372 2015-12-21 09:21
ilove314_323192455 2009-8-25 21:57