网站首页
IC库存
IC展台
电子资讯
技术资料
PDF文档
我的博客
IC72论坛
ic72 logo
搜索关键字: 所有资讯 行业动态 市场趋势 政策法规 新品发布 技术资讯 价格快报 展会资讯
  • 达普IC芯片交易网 > 新闻中心 > 技术信息 > 正文
  • RSS
  • 从netlist中查找subckt
    http://www.ic72.com 发布时间:2007/4/29 10:05:58
    从netlist中查找subckt

    比如在做dracula LVS时,会显示出如下一些信息

    ************************** DISCREPANCY 1 **********************************

    ----------------------------------------MATCHED DEVICE UN-MATCHED NODE---------

    *DEV5404 MOS N ---- XI1-XI1-XI0- : *DEV1423 MOS N
    XI1-XI1-XI0-MI7 : X=1643.95 Y=94.41
    XI1-net2<0>, ?BL_R<287>, XI1-net2<0>,
    XI1-XI1-XI0-XI1-XI1-XI0-net9 XI1-XI1-XI0-XI1-XI1-XI0-net9,
    BL_R<279>

    这是一些节点匹配情况,但你不知道这些节点的位置到底在什么地方,如果有电路图可能会找起来很
    方便,但如果只有netlist时,就有些麻烦。本程序就是来查找这些节点信息。
    比如我们来查找 XI1-XI1-XI0-XI1-XI1-XI0-net9,看看到底在电路的哪一个子电路中

    程序在Solaris 中测试
    程序工具:bash
    其中ckt_inst为netlist的top circuit;cir_file为netlist路径与文件名。
    运行结果如下:



    其中,括号中就是这inst所用的subckt,最前面为subckt所在的行号。

    程序代码如下:

    #!/bin/bash
    #this program for search node in subckt form netlist
    #copyrign ?nfmao 2004-11-26
    #

    #cJournalPath=
    ckt_inst="ROM2M"
    cir_file="../loglvs/ROM2M.cir"
    cir_end=".ENDS"

    #process in uppercase
    cat $cir_filetr "[a-z]" "[A-Z]">.tempcir
    cir_file=".tempcir"

    #get node format xx-xx-xx
    echo -n "Please input node:"
    read err_node

    err_node=`echo $err_nodesed -e 's/-/ /g'tr "[a-z]" "[A-Z]"`
    node_number=`echo $err_nodeawk '{sum=sum+NF}END{print sum}'`

    #loop node
    node_box=()
    i=1
    while((i<$node_number))
    do
    node_box[$i]=`echo $err_nodeawk '{print $'$i'}'`
    node_level=${node_box[i]}
    bg_number=`grep -n -i '^.SUBCKT '$ckt_inst' ' $cir_filecut -f 1 -d :`
    pro_number=`sed -n ''$bg_number',/^'$node_level'/'p $cir_fileawk 'END{print NR}'`
    ((bg_number=bg_number+pro_number))

    #+ not at begin
    ((jk=bg_number-1))
    add_number=`sed -n ''$jk',/^[^+]/'p $cir_fileawk 'END{print NR}'`
    ((jk=jk+add_number-2))
    ckt_inst=`awk 'NR=='$jk'{print $NF}' $cir_file`

    ((node_row=jk))
    echo $node_row : $node_level \( $ckt_inst \)

    ((i=i+1))
    done

    #process node name
    node_box[$i]=`echo $err_nodeawk '{print $'$node_number'}'`
    node_level=${node_box[i]}
    bg_number=`grep -n -i '^.SUBCKT '$ckt_inst' ' $cir_filecut -f 1 -d :`

    seg_number=`echo $bg_numberawk '{sum=sum+NF}END{print sum}'`
    first_seg=`echo $bg_numberawk '{print $1}'`
    echo
    echo $bg_number : $node_level in SUBCKT $ckt_inst

    if((seg_number > 1))
    then
    ((k=first_seg))
    sed -n ''$k',/^.ENDS/'p $cir_filegrep -i -n $node_level
    else
    pro_number=`sed -n '/^.SUBCKT '$ckt_inst'/;/^.ENDS/'p $cir_fileawk 'END{print NR}'`
    ((big_number=bg_number+pro_number))
    sed -n ''$bg_number','$big_number''p $cir_filegrep -i -n $node_level

    fi

    echo



    www.ic72.com 达普IC芯片交易网
  • 行业动态
  • 市场趋势
  • 政策法规
  • 新品发布
  • Baidu

    IC快速检索:abcdefghijklmnopqrstuvwxyz0123456789
    COPYRIGHT:(1998-2010) IC72 达普IC芯片交易网
    客户服务:service@IC72.com 库存上载:IC72@IC72.com
    (北京)联系方式: 在线QQ咨询:点击这里给我发消息 联系电话:010-82614113 传真:010-82614123
    京ICP备06008810号-21 京公网安备 11010802032910 号 企业资质