原创 逻辑设计:Fanout与Skew

2009-3-29 18:16 3812 4 7 分类: 工程师职场

Dc综合是基于路径,每个路径上都有Cellnet,所以基于路径的综合就是计算路径上的delayrcdc是使用互连线模型进行估算)。

 

在了解delayrc的计算时,我们要先了解一下一个cell对于drive(前级)和driven(后级)所用到的模型是什么。如下图,一个buffer,从前级看过来是一个loadcapacitance,想获得这个load,可以通过load_of buffer/a获得),从后级看来是一个driveresistance)。电路的的驱动能力是上一级的1/R,即电阻的倒数,驱动能力大,说明看过去的电阻小,也说明这个器件比较大(大器件有较大的驱动能力)。电路的负载能力是下一级的load(即电容)总和,负载能力大,说明能驱动下级的期间就很多。

大器件是大电容,小电阻,而小器件是小电容,大电阻。理解这些,对于dc综合以及后端apr版图都有很好的操作。

 点击查看原始尺寸

 

对于cell的延迟,dc是根据input_transitionout_load对应的查找表来计算的。

对于net的延迟,dc是根据wire_load_model中的fanout_lengthresistancecapacitance,area的查找表计算的。

例如:

Wire_load(small){

Resistance   : 0.2;

Capacitance  : 1.0;

Area        :0;

Slop        :1.0;

Fanout_length(1,0.022);

Fanout_length(2,0.046);

Fanout_length(3,0.070);

Fanout_length(4,0.095);

}

比如现在扇出是2

点击查看原始尺寸

根据fanout_length20.046)可以知道这个互连线的长度是0.046,然后再根据capacitanceresistence可以得出这个互连线的电容为:0.046x1.0,互连线电阻为:0.046x0.02

 

如果扇出是5,在查找表中没有找到fanout_length5的項,互连线长度将会是=fanout_length(4,0.095)+(5-4)*slop=0.095+1*1.0=1.095

 得出了rc就可以计算出信号的transition时间=2.2RC。

实际的互联线如下:

点击查看原始尺寸

扇出线上的转换时间根据在版图之后提取的rc参数信息求得:

2.2RC=(Rnet+Rout)×(Cnet+Cin)

 

 

无论如何,要记住的就是dc是基于路径分析的(怎么划分路径请参考另一篇:http://bb2hh.blogbus.com/logs/20463915.html),每个路径上有cell延迟和net延迟,而cell延迟是根据input_transitionout_lod得出的,net延迟是根据fanout_lengthresistancecapacitanc得出的。驱动和电阻成反比,负载和电容成正比。

 

 

由上面可以知道fanout影响到loadcapacitance),transitiondelay。了解了上面,我们来理解下dc中对design建模,所用到的一些跟fanout有关的参数。

 

 

Dc中的约束,其实就是给chip设计一个环境,比如驱动这个chip输入端口的cell,或者这个chip输出端口驱动了那些单元或者端口接入了哪些负载,以及这个芯片的工艺,电压,温度,等等。。。

 

对于一个cell来说,输出端口具有max_fanout属性,输入端口有fanout_load属性。

例如将一个AND2作为design的驱动cell(set_driving_cell),这样就把AND2max_fanout属性加在了输入端口上。如果一个AND2的输出端口max_fanout5,输入端口fanout_load2。一个buffer输入端口的fanout_load3。那么这个AND2的输出端可以接2AND2,或者可以接一个buffer,或者可以接一个buffer和一个AND2。如上图所示,则会引起DC产生DRC错误。因为输入端口的fanout_load=2XAND2+buffer=7,超过了AND2max_fanout2.如果使用了系统提供的set_max_fanout 5 [all_inputs],将会忽略set_driving_cellcellmax_fanout属性,而使用set_max_fanout属性

 

如果将一个AND2作为design的负载,那么这个输出端口上的fanout_load属性将会为2.dc中一般的做法是set_fanout_load [expr [get_attribute slow/and2/a fanout_load] *xxx] [all_outputs],来设置输出端口的fanout_load属性。

 

这样dc就可以根据这些设置,选择优化端口处的器件,以及时序。

 

说道fanout,所以顺带说明一下容易混淆的max_fanout,max_capacitance。如上图所示,

输入端口的fanout_load=2个与门的fanout_load和一个bufferfanout_load

输入端口的loadcapacitance=2个与门的load_of和一个bufferload_of。(如果通过set_load设置了输入端口,另外还要加上set_load的值)。

 

Max_fanout检查的是输入端口的fanout_load最大值,

Max_capacitance检查的是输入端口load值。

两者概念不同。

 

下面讲下fanoutdelay,看如下一个例子:

buffernet延迟是2buffer延迟是1fanout1net延迟为3,每增加一个扇出,net延迟增加2.如果一个信号经过这个扇出网络后,那么延迟为:2+1+3+8-1)×2=20

如果把扇出结构优化成如下形式:

那么信号经过这个网络后,延迟为:2+1+2+1+3+4-1)×2=15.

那么延迟减少了5


 

接下来讲一下skew,既然知道了fanout对于delay的影响,下面看一个例子:

 

 

 

由于时钟到每个触发器的互连线长短不一样,造成信号到达clock pin的时间也不一样,触发器也不会同时翻转。Skew的定义就是最长路径减去最短路径的值。

 

根据时钟域以及路径关系,skew可以分为global skewlocal skewinterclock skew

Global skew是指,同一时钟域,任意路径的最大skew

Local skew是指,同一时钟域,任意2个有逻辑关联关系的路径最大skew

interClock skew是指,不同时钟域之间路径的最大skew

 

 

 

另外还有一个useful skew。本来打算在setup timehold time中讲解。这里先大概说下

如下图:时钟周期为10ns,各时钟路径延迟如下:可以看到有一条路径的slack-1,说明这条路径违规。可以看到与这条路径相关的skewT3-T2=-1ns

点击查看原始尺寸

下面我们利用useful skew向前面一个slack比较充裕的路径(slack=2ns)借点time,来修正现在这条路径。如下图:

 

点击查看原始尺寸

 

经过useful skew,修正了原来的violation

这就是useful skew的作用,可以向前,或者向后接time来修正violation

PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

用户436722 2014-11-6 14:48

分析的很翔实

用户452478 2014-5-7 13:31

讲得挺好

用户377235 2014-2-23 19:56

相关推荐阅读
用户193865 2010-03-21 18:01
VLSI interview questions
1/ What is latch up? Latch-up pertains to a failure mechanism wherein a parasitic thyristor (such as...
用户193865 2009-10-28 01:36
source insight 快捷键
退出程序                                : Alt+F4重画屏幕                                : Ctrl+Alt+Space完成语法...
用户193865 2009-10-28 01:08
AT命令介绍
AT命令最常见的应用场景: 1。智能手机:一般智能手机都是一个主芯片控制一个通信模块,这个通信模块就是一个完整的、简单的手机,包括手机应该有的射频、基带等部分,还有GSM协议栈,完全可以独立打电话、发...
用户193865 2009-10-16 13:42
msdev及devenv 命令行
为加快编译速度,命令行编译。msdev是visual studio 6.0的IDE程序, devenv是visual studio 2005的IDE程序两种IDE程序, 既可以工作在图形模式下,也可以...
用户193865 2009-10-12 13:28
MTK环境中如何新增语言
vendor\font\MTK\official\project\plutommi\content\src\MainLcd240X320\FontRes.c //以lcd为 240X320 为例.pl...
用户193865 2009-08-21 09:47
后端时序修复_Fixing hold violation after P&R using perl
布局布线后端时序修复Fixing hold violation after P&R using perl1, 在每一个触发器的D或者SI引脚前加一个DELAY cell以避免Hold viol...
EE直播间
更多
我要评论
3
4
关闭 站长推荐上一条 /3 下一条