网站首页
IC库存
IC展台
电子资讯
技术资料
PDF文档
我的博客
IC72论坛
ic72 logo
资料首页最新产品 技术参数 电路图 设计应用 解决方案 代理商查询 IC替换 IC厂商 电子辞典
关键字: 技术文章 PDF资料 IC价格 电路图 代理商查询 IC替换 IC厂商 电子辞典

从netlist中查找subckt

从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


热门搜索:TLP602 PS-615-HG 2839376 01B1002JF DRV8313PWPR 2920120 SBB400 B10-8000-PCB UL603CB-6 ADC128S102CIMTX B40-8000-PCB 2817958 2838254 2866666 2858043 8300SB1 LS606M LC1800 2320089 02M5000JF 01C5001JF TLP725 ADS1013IDGSR 2839570 SS7619-15
COPYRIGHT:(1998-2010) IC72 达普IC芯片交易网
客户服务:service@IC72.com 库存上载:IC72@IC72.com
(北京)联系方式: 在线QQ咨询:点击这里给我发消息 联系电话:010-82614113 传真:010-82614123
京ICP备06008810号-21 京公网安备 11010802032910 号 企业资质