EDA365电子工程师网
标题:
Skill中的继承结构,向高手请教
[打印本页]
作者:
y175813652
时间:
2008-10-14 16:47
标题:
Skill中的继承结构,向高手请教
Skill中的继承结构是什么
它的功能是什么
?在什么情况下用它?
积分不够
,高手
见亮!
回答好,我恳求版主给你加分
狠D!~
作者:
cmos
时间:
2008-10-15 04:42
如果你2个月前问我,因为那个时候我刚看了2周的skill语言的help,也许我能回答的好些.我也不知道什么叫继承结构.但我会尝试回答下,真正的高手继续啊
1:首先下面语句让你选中的目标信息保存在cpaths这个变量里面,目标信息可能是text ,器件, line,cline,via,shape等等.所有的目标信息都有一个编号,然后这个编号下面就有不同分类.
假设你选中的是shape,那会有layer,net name,是否填充等.如果选中的是text,那么就会有text size,text height ,width,坐标等信息.
cpaths=axlGetSeleSet()
2: foreach 语句会遍历cpaths的中所有的信息.并这些信息暂时放在path变量里面.
path->net的意思就是 ,想看一下path 下面net 分类这个变量具体是什么值,顾名思义,通过这个语句获得你选中的cline线的net name,如果是null的话,就可能没net name的线,自然那个if语句就不执行了.
3:当选中的线有netname的时候,这个时候就得到这个线layout的具体信息,比如这根线的起点在哪里,终点在哪里,线宽多少等等. segment->startEnd估计就是这个线头的具体XY坐标
4:所以最后一个语句的意思应该是列表出这段线的分段线长.
这段程序的大致思路就是, 在用户界面操作选中带net name的属性的cline,然后找到每个节点作为start end,计算这一段长度,然后把cline的分段线长列表出来.
楼主可以把这段程序运行下,估计就知道了.不过我从来没跑过,不知道会碰到什么问题.
作者:
y175813652
时间:
2008-10-15 12:03
标题:
回版主
首先谢谢版主
版主分析的很对,这段程序的大致思路就是, 在用户界面操作选中带net name的属性的cline,然后找到每个节点作为start end,计算这一段长度,然后把cline的分段线长列表出来.
我根据版主的分析,把程序重新调试了一遍得到结果如下:
segments: dbid:72873064 dbid:72873104 dbid:72873144 dbid:72872976
dbid:72872936
cpaths: dbid:72873016
box: ((566.25 1350.25) (595.0 1350.25))
lx: 566.25
ly: 1350.25
rx: 595.0
ry: 1350.25
上面的数据是分析板中的一个"Cline"所得到的,首先在选择这个"Cline"时"
cpaths
"为
dbid:72873016,
然后经过程序中的
if( path->net then
segments = path->segments(这个就是传说中的继承结构
)
得到"segments"的数据为
dbid:72873064 dbid:72873104 dbid:72873144 dbid:72872976
dbid:72872936
接着再由一个继承结构:
foreach(segment segments
box = segment->startEnd
就得到了"box"的数据:
((566.25 1350.25) (595.0 1350.25))
为"Cline"的一段线的端点坐标,问题就在这儿了:
这个数据是怎么转化到这儿的?
调试也调不出来了
,请教高手和版主
!~
作者:
cjf
时间:
2008-10-15 13:31
提示:
作者被禁止或删除 内容自动屏蔽
作者:
y175813652
时间:
2008-10-15 14:50
标题:
终于理解了,不知对否
看了两位的解说,终于有点小明白了,以下是个人愚见:
我现在对继承结构的理解是:打个比喻,相当于一个容器里的东西放到另一个容器里,但是在转移的时候,加了过滤器,只把你想要的东西放进去,比如上面的box = segment->startEnd是只把segment里每一个线段的端点坐标放进去,然后赋予box,其中startEnd相当于一个过滤器.不知我说的对否,请高手指点
然后我又按照版主cif的把上面的
lx = caar(box) lxy = car(box);lx = caar(box)
ly = cadar(box) 改成了 rxy = nth(1 box);rx = caadr(box)
rx = caadr(box)
ry = cadadr(box)
pathlen = pathlen + sqrt( (lx-rx)**2+(ly-ry)**2 ) pathlen = pathlen + axlDistance(lxy rxy)
效果是好了 很多,精度也高了
,真是受教了,谢谢了
cif
作者:
dzyhym@126.com
时间:
2009-1-9 21:55
好贴,顶。谢谢!还不熟悉SKILL,学习中。。。
作者:
ansonjimli
时间:
2010-10-2 16:54
不错哟,支持一下,嘿嘿。
欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/)
Powered by Discuz! X3.2