ICC中用Tcl脚本给版图中的Port/Terminal加Label的方法
本文转自:自己的微信公众号《数字集成电路设计及EDA教程》
里面主要讲解数字IC前端、后端、DFT、低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程。
考虑到微信公众平台上面发布的很多推文百度搜索不到,所以以后的推文也会在这里进行转载。
图:
ICC中用Tcl脚本给版图中的Port/Terminal加Label的方法
在输出GDSII文件之前,为了方便后边导入Virtuoso用Calibre做LVS,最好给整个设计的输入输出端口打上Label,如果设计是模块级别的,没有IO和PAD,那么可以直接打在Port或者Terminal上,如果设计是Chip级别的,那么需要打在PAD上面。
ICC中用Tcl脚本给版图中的Port/Terminal加Label的方法:
set ALL_PORTS[get_ports -all]
foreach_in_collectionPORT_NAME $ALL_PORTS {
set xy_location[get_location $PORT_NAME]
setx_location [lindex $xy_location 0]
sety_location [lindex $xy_location 1]
#由于$PORT_NAME的属性是一个collection,无法直接用字符串相关命令来得到port的字符串格式的名字,因此,可以用命令collection_to_list将其转化为list:
set TEXT_NAME[collection_to_list $PORT_NAME]
#比如,一个端口的名字是tdo_pad,那么$PORT_NAME的值将是{tdo_pad},它的属性是一个只含一个元素的collection。$TEXT_NAME的值是{{port tdo_pad}},由于前缀{{port和后缀}}格式固定,因此我们可以用字符串操作命令来截取中间一段string得到端口的名字:
set TEXT_NAME_1[string range $TEXT_NAME 7 end-2]
#之后便可以用create_text命令来用指定层次给这些Port来打Label了。
#-origin控制Label的坐标位于Port金属的左下角;
#-hight控制Label的高度;
#-layer控制Label的层次,主要让Calibre工具识别它为一个Port。一般用金属所在的TXT层或者Label层,有的工艺直接用金属层也是可以被识别的;
#-orient控制Label的方向。
create_text-origin [list [expr $x_location] [expr $y_location]] \
-height 1 \
-layer 17 \
-orient W $TEXT_NAME_1
}
之后给大家讲一下版图中加PAD(深亚微米设计中IO和PAD分离,且PAD有Stagger摆放形式,一般用脚本来决定其所在的位置是内侧还是外侧以及具体位置),并给PAD打LOGO的方法。
如果喜欢本公众号也请多多分享哟,谢谢您的关注