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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3457|回复: 9

[求助] 请教一个用脚本修setup和hold的问题

[复制链接]
发表于 2018-8-9 08:07:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本人新手,请教各位老师。所谓后端PR用脚本修SEtUP和HOLD是什么意思呀。 是不是把手动修的过程写成脚本。但是每个错误要插的buffer和delay位置和大小都不同同,脚本要怎么处理呀。 本人比较小白,谢谢各位
发表于 2018-8-9 11:02:15 | 显示全部楼层
buffer的位置根据插入目标pin的位置决定,简单来说直接放在目标pin旁边就好了,让工具自己去legalize。pin的位置可以由attribute/property取得,delay的话根据以往经验或者现design中的数值估算就好,注意不同corner间delay的变化就行。

可以关注我的知乎专栏:https://zhuanlan.zhihu.com/c_149714285
定期将有后端基础知识讲解。
 楼主| 发表于 2018-8-9 11:19:52 | 显示全部楼层
回复 2# 阎浮提


    老师关注您专栏很久啦。 亲自解答很激动啊。。。

    因为我比较小白,您上面说的能举个具体例子吗,我还不是很理解。十分感谢
发表于 2018-8-9 17:33:12 | 显示全部楼层
回复 3# jiajuntree
以ICC2为例,假设想要修一条hold,我们需要知道的信息至少2个:pin_name和slack。那么粗糙地实现起来就这样:
1. 事先定义以下两个变量:
    set buf_ref "xxx"     ;#要插入的buf/delay cell的ref_name
    set buf_delay "yyy" ;#要插入的buf/delay cell的估算delay值
2. 通过pin_name得到pin位置(左下坐标)
    set pin_location [lindex [get_attribute [get_pins $pin_name] bbox] 0]
3. 计算需要插入的buffer数量
    set buf_cnt [expr round($slack / $buf_delay)] ;四舍五入,也可直接舍弃小数部分或不足1的部分+1,看自己想怎么处理了
4. 插入cell

    set inserted_cells [add_buffer  -lib_cell $buf_ref  -no_of_cells $buf_cnt  $pin_name -new_net_names $preferred_net_prefix -new_cell_names $preferred_cell_prefix]
5. 放置插入的cell


    set_attribute -objects $inserted_cells
-name origin -value $pin_location

set_attribute -objects $inserted_cells
-name physical_status -value legalize_only
6. legalize
    place_eco_cells -legalize_only


对于有很多条hold,foreach就好了。这种方法需要有hold enpoint + slack的信息,至于这个怎么得到,办法比较多,楼主思考思考吧。
除此之外,上面的方法没有解决重复path的问题,也没有在修hold之前check setup的margin,更没有考虑margin不够的情况。不过整体思路就是这样,具体细节楼主努力完善吧。
# BTW,以上代码没有经过实际验证,因此可能有语法错误
发表于 2018-8-10 09:15:35 | 显示全部楼层
回复 4# 阎浮提

非常不错,我来试试
发表于 2021-3-25 17:30:57 | 显示全部楼层


阎浮提 发表于 2018-8-9 17:33
回复 3# jiajuntree
以ICC2为例,假设想要修一条hold,我们需要知道的信息至少2个:pin_name和slack。那么 ...


你好,如果通过PT fix_eco_timing,吐出脚本,然后ICC2实现,这种方法是不是会影响到setup violation?
发表于 2021-3-25 17:44:40 | 显示全部楼层


qingtingsanmo 发表于 2021-3-25 17:30
你好,如果通过PT fix_eco_timing,吐出脚本,然后ICC2实现,这种方法是不是会影响到setup violation?
...


工具的自动ECO一般都会尽量避免破坏timing的情况,大多数公司正常的ECO流程也是你说的这种方法走的,没太必要担心。前提条件是PT能够在修setup的时候看到最差的hold情况,加上physical aware的ECO,对setup的破坏比较小。
当让物理情况比较特殊导致绕线有些问题或者某些先进工艺下绕线影响很大的情况确实容易导致setup出现问题。
发表于 2021-3-26 10:28:40 | 显示全部楼层


阎浮提 发表于 2021-3-25 17:44
工具的自动ECO一般都会尽量避免破坏timing的情况,大多数公司正常的ECO流程也是你说的这种方法走的,没太 ...


感谢您的详细解答,我想知道,hold 、setup 都有violation的情况下,这个fix_eco_timing 怎么设置比较好?我是一开始通过sice_cell、insert_buffer单独修hold,hold是能修好,但是setup会差很多。这时候需要再修一下setup吗,那hold会不会又差了?具体该怎么修呢?
发表于 2021-6-24 10:46:11 | 显示全部楼层


阎浮提 发表于 2018-8-9 17:33
回复 3# jiajuntree
以ICC2为例,假设想要修一条hold,我们需要知道的信息至少2个:pin_name和slack。那么 ...


您好,一直有关注您,请问,上面的方法没有解决重复path的问题,指的是什么?我看脚本是在不同的endpoint前插buf,没有重复的
发表于 2021-6-24 11:02:32 | 显示全部楼层


阎浮提 发表于 2021-3-25 17:44
工具的自动ECO一般都会尽量避免破坏timing的情况,大多数公司正常的ECO流程也是你说的这种方法走的,没太 ...


您好,当让物理情况比较特殊导致绕线有些问题或者某些先进工艺下绕线影响很大的情况确实容易导致setup出现问题。
这个可以举个简单的例子吗?不太好理解
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-3-28 18:25 , Processed in 0.027485 second(s), 6 queries , Gzip On, Redis On.

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