在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: xingyun666666

[讨论] 解决tran的问题

[复制链接]
 楼主| 发表于 2016-10-17 14:12:59 | 显示全部楼层
回复 10# 我晓得


    谢谢您的回复,请问,为什么会有noise,你的意思是插完buffer,增加了这个net上的驱动力,会影响到附近的net?
另外,noise无非就是两条net之间的影响,你在实际工程中遇到noise问题会怎么解决?做些size cell 和插buffer吗?如果noise不是很大,应该也不用修吧?timing  OK 就行。noise有经验值吗?一般多大不用管?
发表于 2016-10-18 10:45:13 | 显示全部楼层
回复 10# 我晓得

楼上正解,其实这类错误一般肯定是解掉的,粗暴点在invs里直接插cell就行,一般来说都不会引起其他vio 问题。至于在pt里怎么插,在哪里插,请查找pt命令。
 楼主| 发表于 2016-10-18 14:50:09 | 显示全部楼层
回复 12# heide333


  我看了下PT 的useguide,怎么在PT中的长net插buffer啊?因为PT没有物理信息啊,只显示了一个net的名字。insert_buffer net25 buff ,并不能保证插在了这根长net的中间啊,请前辈指导
发表于 2016-10-18 15:21:52 | 显示全部楼层
回复 13# xingyun666666
pt里看当然不准确了,就是在invs里看tran大小决定插多大buffer&inv,插一级还是几级,完事了去pt里面重新看一下插入点的路径是否违例。tran违例的地方是单一路径基本不影响其他path,要么这条tran违例附带影响很多path,结果会变好,不太可能出现很严重的其他path违例。
 楼主| 发表于 2016-10-18 17:02:26 | 显示全部楼层
回复 14# heide333


    您说根据tran的大小决定来插多少和多大驱动的buffer,我想举一个具体的例子:
    cellA的输出pin 经过net接到cellB输入pin,在pin上报了-0.2的violation。lib中cellB的输入pin,允许的最大的tran是0.5,也就是实际到达这个pin的tran是0.7,那我应该去找一个buffer来解tran,在lib中看这个buffer的输出pin的什么属性?来看是否这个buffer可以修好?这个问题想了好久好纠结

pin (X) {
            direction : "output";
            function : "A";
            max_capacitance : 0.307449;
            max_transition : 0.664800;
            min_capacitance : 0.000070;
QQ图片20161018165625.png
发表于 2016-10-18 18:50:02 | 显示全部楼层
回复 9# xingyun666666


    你可以把这条net上的所有path都报出来,或者报一条最差的,然后在这个基础上修改,transition太大的话,先看看经过该net的所有的path有没有hold violation,如果有的话估计插入buffer后hold可能会更严重,(前提是插入的buffer的delay与修复transition减小的delay相比跟小,因为数据速度更快了),如果有setup violation的话,插入buffer的话可能会对setup slack有好处,因为数据速度被加快了,可以看看从库中找个合适的buf。
 楼主| 发表于 2016-10-19 13:57:28 | 显示全部楼层
回复 16# zhanggd


    其实我迷茫的地方时:怎么根据tran  violation的大小决定来插多少和多大驱动的buffer?去库里找buffer,看这个buffer的什么属性?
    举一个具体的例子:
    cellA的输出pin 经过net接到cellB输入pin,在cellB的pin上报了-0.2的violation。lib中cellB的输入pin,允许的最大的tran是0.5,也就是实际到达这个pin的tran是0.7,那我应该去找一个buffer来解tran,在lib中看这个buffer的输出pin的什么属性?来看是否这个buffer可以修好?
pin (X) {
            direction : "output";
            function : "A";
            max_capacitance : 0.307449;
            max_transition : 0.664800;
            min_capacitance : 0.000070;
发表于 2016-10-19 20:00:47 | 显示全部楼层
回复 17# xingyun666666


   该net自身的cap过大(比如走线过长等)和该net后面接的输入的cap过大,真要确定是什么位置放置buffer,好像也没有什么具体的规定吧,那就朝着减小net上的cap这个方向来决定好了
 楼主| 发表于 2016-10-20 09:57:58 | 显示全部楼层
回复 18# zhanggd


   嗯嗯,您说的对我很有帮助,我其实就是不会看lib,从lib中挑选合适的buffer,
   假如出现max tran  violation在一个cell的属兔pin上,我找一个buffer来插,那我看这个buffer的输出pin的什么指标?在实际去lib找buffer的时候不会找了,哎
发表于 2016-10-20 17:09:09 | 显示全部楼层
回复 19# xingyun666666


    要细究的话,要看两个值,第一个时该net的cap,可以通过查看该net的属性来得到(相关命令:list_property、get_property,我这里说的是EDI的,ICC用list_attribute、get_attribute)。第二个看lib中该buf的输入pin的cap大小(lib中有)和该buf的output_load参数(目的是让buf后面可以带动的负载有个大致了解)。个人意见
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-11-25 22:29 , Processed in 0.021664 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表