zoukankan      html  css  js  c++  java
  • 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的方法。

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

  • 相关阅读:
    python 读写文件
    python之创建文件写入内容
    python之生成随机密码
    python实例七
    python 实例六
    python 实例四
    python实例二
    python实例一
    【BZOJ】1610: [Usaco2008 Feb]Line连线游戏
    【BZOJ】1602:[Usaco2008 Oct]牧场行走
  • 原文地址:https://www.cnblogs.com/ASIC-Horizon/p/8072076.html
Copyright © 2011-2022 走看看