wenjian07的个人空间 https://blog.eetop.cn/283296 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

DC概论二之fanout与skew - [IC]

热度 1已有 4616 次阅读| 2013-8-6 14:07 |个人分类:APR

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://bb2hh.blogbus.com/logs/20563101.html

 注明:如需转载,请注明作者出处,谢谢~,Author:pythonlong

 以下根据资料和个人体会整理,如果错误,疑问欢迎请指正,讨论!!

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

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

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

 

 

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

对于 net 的延迟, dc 是根据 wire_load_model 中的 fanout_length 得到互联线的 resistance capacitance,结合上一级的out transition 的计算得到,而上以及的output transition是根据input transition和output load查表得到的。。

例如:

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); # 根据fanout定义一个等效一个互连线的长度

}

比如现在扇出是 2

 

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

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

 得出了rc就可以计算出信号线的延迟

实际的互联线如下:

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


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

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

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

fanout_load是说连接这一个pin等价于多少个fanout。可以直接理解成n fanout per load,更简单的理解为n net per pin:这个pin相当于n个net。一般库中输入pin的fanout_load为1,输出pin的fanout_load为0.

便于理解:max_fanout=max_net,fanout_load=nets per pin

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

如果将一个 AND2 作为 design 的负载,那么这个输出端口上的 fanout_load 属性将会为 2,即如果连接这个输出端口,则相当于使用了2个net.dc 中一般的做法是 set_fanout_load [expr [get_attribute slow/and2/a fanout_load] *xxx] [all_outputs] ,来设置输出端口的 fanout_load 属性,即设置了输出端口等效几根net。

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


下面讲下 fanout delay ,看如下一个例子:

buffer net 延迟是 2 buffer 延迟是 1 fanout 1 net 延迟为 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 skew local skew interclock skew

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

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

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

 

 

 

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

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

 

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

 

 

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

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

1

点赞

刚表态过的朋友 (1 人)

发表评论 评论 (1 个评论)

回复 模拟到底 2013-9-10 11:09
学习了,讲的的挺清楚:handshake

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 3

    关注
  • 2

    粉丝
  • 0

    好友
  • 3

    获赞
  • 1

    评论
  • 1178

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-2 06:17 , Processed in 0.022909 second(s), 15 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部