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

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

  • 相关阅读:
    高精度计算
    高精度除以低精度
    P1258 小车问题
    POJ 2352 stars (树状数组入门经典!!!)
    HDU 3635 Dragon Balls(超级经典的带权并查集!!!新手入门)
    HDU 3938 Portal (离线并查集,此题思路很强!!!,得到所谓的距离很巧妙)
    POJ 1703 Find them, Catch them(确定元素归属集合的并查集)
    HDU Virtual Friends(超级经典的带权并查集)
    HDU 3047 Zjnu Stadium(带权并查集,难想到)
    HDU 3038 How Many Answers Are Wrong(带权并查集,真的很难想到是个并查集!!!)
  • 原文地址:https://www.cnblogs.com/ASIC-Horizon/p/8072076.html
Copyright © 2011-2022 走看看