传播延时是指信号从逻辑门的输入端到其输出端所需要的时间。
这里引用一个英文的定义(很多时候用中文来描述专业术语,真的很别扭)
It is defined as the difference between the times when the transitioning input reaches 50% of its final value to the time when the output reaches 50% of the final value showing the effect of input change. 这里50%被定义为逻辑阈值。
以图1中的两输入与门为例。I1端是一个constant,value为1,I2端信号波形如图所示。O为两输入与门的输出。
Liberty file 包含每个逻辑门每个输入到输出路径的查找表,我们也称之为cell arc。这个查找表往往以.lib或者.db形式给出。通过查找表,可以得知某个的input transition和output load所对应的cell delay值。Lib文件部分截图如图2所示。由于这个Table不可能做到无限大,无限精确,对于不在查找表中的input transition和output load的组合,工具会利用插值算法来计算cell delay。这个Liberty文件一般是由fab提供的,对标准单元进行K库获得的。在数字后端实现时需要注意的是transition和load不要超表。
图2 cell delay lockup table
SDF文件: SDF (Standard Delay Format) is the extracted delay information of a design. The current delay information, as calculated, can be dumped into SDF file. It can, then, be read back. In case SDF is read, delays are not calculated and SDF delays are given precedence.
Net Delay refers to the total time needed to charge or discharge all of the parasitic (Capacitance / Resistance / Inductance) of a given Net.
Net delay的计算往往是将整个design中的net拆分成若干段来进行的,同时把每段net用某种RC模型来表征。数字后端实现过程中net delay也仅仅是基于特定的delay 模型来进行net delay的估算。PR工具布线后的database,需要利用Start-RC 来进行RC 抽取,以SPEF格式的RC文件输出。最后在Timing signoff工具Primetime中读取这个RC spef文件来进行delay的计算。更多关于net delay估算的模型后续会专门做个讨论。
那么net delay可能是负的delay值吗?答案是肯定的。在没有crosstalk的情况下,net delay一定是正值。图5为一个简单crosstalk示例电路。其中Net N1为Victim net,这条net边上有一条net,我们称之为Aggressor。Net N1和Aggressor之间存在耦合电容Cc,Cg为Net N1的对地电容。
当Net N1有个上升沿的跳变时,且Aggressor 这条net也是从0到1的跳变,且transition变化比Net N1还快时,此时就会存在一个负的crosstalk(假设存在串扰)。正是由于这个negative的crosstalk,反而使得Net N1的transition反而变得更好了,从而显现出负的net delay值。这种情景往往是用于分析min path即hold 场景。
CRPR能补偿crosstalk吗?
图5 crosstalk effect
所以,对于hold分析而言,launch clock path和launch data path上的crosstalk应当是negative crosstalk,capture clock path和capture data path上的crosstalk应当是positive crosstalk。