微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC后端设计交流 > ICC中如何判断std cell放置在die area外面

ICC中如何判断std cell放置在die area外面

时间:10-02 整理:3721RD 点击:
RT,在ICC中写个tcl脚本,判断std cell是不是在die area外面,如何实现?大牛显灵

ICC大牛有写过该脚本的出来share一下算法~

check_legality不行么?

check_legality生成一个report,没法实现,而且这个命令不check是否在die area外面的...

小菜一样可以帮你实现:
foreach_in_collection c [get_flat_cells *] {
set die_llx [lindex [lindex [get_attribute [get_die_area] bbox] 0] 0]
set die_lly [lindex [lindex [get_attribute [get_die_area] bbox] 0] 1]
set die_urx [lindex [lindex [get_attribute [get_die_area] bbox] 1] 0]
set die_ury [lindex [lindex [get_attribute [get_die_area] bbox] 1] 1]
set cel_llx [get_attribute $c bbox_llx]
set cel_lly [get_attribute $c bbox_lly]
set cel_urx [get_attribute $c bbox_urx]
set cel_ury [get_attribute $c bbox_ury]
if {$cel_llx < $die_llx || $cel_lly < $die_lly || $cel_urx > $die_urx || $cel_ury > $die_ury} {
puts [get_attribute $c full_name]
}
}

Information: cell pericore/mp200/da8/dacreg0/daoe0_r_reg (-1823040 -67680) is out of core area.
这是我摆外边一个然后check的结果

袄,谢谢,看来check legality能check啊,但是怎么加到脚本里面去,如果check到在die area 外面,即把cell在replace到core area中呢,一直没有想出特别好的办法~

legalize_placement

不行的,你说的这两个命令都是可以实现相应的功能,但是我是具体到操作每一个std cell,每个std cell摆放的位置也是要我来设定的,因此写tcl脚本的话还不太可以,不过谢谢你啊~

不晓得你的具体需求,就你陈述的看来 set_attribute 就可以了

我的具体要求是:我需要create几个buffer,buffer放置的位置是我设置的,但是有可能其中某个buffer放置到die area外面。因此想放置完之后check一下,有在die area外的buffer再放置到我指定的位置

帮顶

看你这么纠结这个问题我实在是...
我前面给的脚本就能解决你的问题,只要稍微修改一下就可以,你在别的版块也提了这个问题吧,我也看到其他人给出答案了,不知道是你没思考还是没注意,我和另一位一个回答你问题的人都是给你假定你的die是长方形的,你说你的die可能不是长方形的,是多边形的,那么请问有哪个多边形不是多个长方形组成的呢,一个长方形的解决了,多个长方形的不会解决了吗?

我明白啊,你说的这些,小编在前面回答我了,我纠结的是怎么把die area转换为多个矩形呢,用tcl,小编给我的链接没有看到具体的算法~

空谈误国,实干兴邦!

floorplan里的place_std_cel

小编做的是个模块吧,其实在edi里面的话,模块外面的都有unplaced的属性,icc里面不知道有没有相应的属性,用属性的话更直接点

这个命令没有找到呢?!

恩恩,对的,ICC里面没找到什么对应的属性,找到属性是一方面,另一方面还要把它放到die里面,这个是难点~

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top