ICC中用Tcl脚本给版图中的Port/Terminal加Label的方法

Posted Horizon00

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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/TerminalLabel的方法:

 

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的方法。

 

如果喜欢本公众号也请多多分享哟,谢谢您的关注技术分享图片

技术分享图片

以上是关于ICC中用Tcl脚本给版图中的Port/Terminal加Label的方法的主要内容,如果未能解决你的问题,请参考以下文章

如何写tcl脚本?谢谢

tcl脚本怎样改变文本属性

如何用tcl脚本替换字符串中的特殊字符?

从 Tcl 中的多个文件中读取特定数据

TCL脚本语言学习笔记

pgtksh -- PostgreSQL Tcl/Tk shell 客户端