在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2707|回复: 10

[求助] 脚本两条金属划线连接求助

[复制链接]
发表于 2021-8-25 14:16:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

procedure( ContInOrder()
prog( ( OBJ1 OBJ2 obj1 obj2 Vline Hline HW VW HBP VBP xHBP yHBP xHEP yHEP xVBPyVBP xVEP yVEP
      Space1 Space2 Space3 Space4LeftDown LeftUp RightUp RightDown TechFile CGroupId
      MyViaOptions Window Num1 Num2BigNum SmallNum NEWVIAS)

OBJ1 = geGetSortedSelectByLine()
OBJ2 = geGetSortedSelectByLine()
Setlist = mapcar('list OBJ1 OBJ2)
F1=car(OBJ1) L1=cadr(OBJ1)
F2=car(OBJ2) L2=cadr(OBJ2)
foreach(Set Setlist
if(caar(Set)~>objType == "pathSeg"
then obj1 = car(leConvertShapeToPathSeg(leConvertShapeToPolygon( caar(Set))))
     dbDeleteObject(caar(Set))
else obj1 = car(leConvertShapeToPathSeg(leConvertShapeToPolygon( caar(Set))))
);
if(caadr(Set)~>objType == "pathSeg"
then obj2 = car(leConvertShapeToPathSeg(leConvertShapeToPolygon(caadr(Set))))
     dbDeleteObject(caadr(Set))
else obj2 = car(leConvertShapeToPathSeg(leConvertShapeToPolygon(caadr(Set))))
);if   ***IC617 SKILL BUG.Delete extrapathSeg ***
if(xCoord(obj1~>beginPt)==xCoord(obj1~>endPt) &&yCoord(obj2~>beginPt)==yCoord(obj2~>endPt)
then  Vline = obj1 Hline = obj2);if
if(xCoord(obj2~>beginPt)==xCoord(obj2~>endPt) &&yCoord(obj1~>beginPt)==yCoord(obj1~>endPt)
then  Vline = obj2 Hline = obj1);if

HW  = Hline~>width/2  VW  =Vline~>width/2
HBP = Hline~>beginPt  HEP = Hline~>endPt
VBP = Vline~>beginPt  VEP =Vline~>endPt

xHBP=xCoord(HBP) yHBP=yCoord(HBP)
xHEP=xCoord(HEP) yHEP=yCoord(HEP)
xVBP=xCoord(VBP) yVBP=yCoord(VBP)
xVEP=xCoord(VEP) yVEP=yCoord(VEP)
Space1 = expt((xHBP-xVBP) 2) + expt((yHBP - yVBP) 2)
Space2 = expt((xHBP-xVEP) 2) + expt((yHBP - yVEP) 2)
Space3 = expt((xHEP-xVBP) 2) + expt((yHEP - yVBP) 2)
Space4 = expt((xHEP-xVEP) 2) + expt((yHEP - yVEP) 2)

cond(
(min(Space1 Space2 Space3 Space4) == Space1
dbSetPathSegPoints(Hline list(xVBP-VWyHBP) HEP)
dbSetPathSegPoints(Vline list(xVBPyHBP-HW) VEP)
; println("1")  shape  L
);
(min(Space1 Space2 Space3 Space4) == Space2
dbSetPathSegPoints(Hline list(xVBP-VWyHBP) HEP)
dbSetPathSegPoints(Vline VBP list(xVEPyHEP+HW))
; println("2")  shape  F
);
(min(Space1 Space2 Space3 Space4) == Space3
dbSetPathSegPoints(Hline HBPlist(xVBP+VW yHEP))
dbSetPathSegPoints(Vline list(xVBPyHBP-HW) VEP)
; println("3")  shape _|
);
(min(Space1 Space2 Space3 Space4) == Space4
dbSetPathSegPoints(Hline HBPlist(xVBP+VW yHEP))
dbSetPathSegPoints(Vline VBP list(xVEPyHEP+HW))
; println("4")  shape  7
);
);cond
;CorePoint = list(xVBP yHBP)
LeftDown =list(xVBP-VW yHBP-HW)  LeftUp =list(xVBP-VW yHBP+HW)  
RightDown=list(xVBP+VW yHBP-HW)  RightUp=list(xVBP+VW yHBP+HW)

TechFile = techGetTechFile(geGetEditRep())
CGroupId = cstFindConstraintGroupIn(TechFile"virtuosoDefaultSetup")
MyViaOptions = viaGetViaOptions(CGroupId)
Window = deGetCellView()
NEWVIAS = viaGenerateViasInArea(Window list(LeftDown LeftUp RightUp RightDown)MyViaOptions)
/*************Delete extra Vias***********/
  BigNum =max(MetalLayerNumber(obj1~>layerName)MetalLayerNumber(obj2~>layerName))
SmallNum = min(MetalLayerNumber(obj1~>layerName)MetalLayerNumber(obj2~>layerName))

for(j 0 j=length(NEWVIAS)
;println(nth(j NEWVIAS)~>viaHeader~>master~>shapes~>layerName)
if(setof(x nth(jNEWVIAS)~>viaHeader~>master~>shapes~>layerName
        MetalLayerNumber(x)<SmallNum-1||MetalLayerNumber(x)>BigNum+1);setof
then dbDeleteObject(nth(j NEWVIAS))
);if
);for
/***********Delete extra Vias************/
);foreach
);let
);procedure

/**********Number***********/
procedure(MetalLayerNumber( MetalLayerName )
let((MetalList MetalNum)
MetalList=list("GT" "CT" "M1" "V1" "M2" "V2" "M3" "V3" "M4" "V4" "M5")
for(i 1 length(MetalList)
if(nth(i-1 MetalList)== MetalLayerName
then
MetalNum=i);if
);for
MetalNum
);let
);proc


错误提示:
dbGetq: object is a purged/freed object - db:0x2321c9a0
dbGetq: object is a purged/freed object - db:0x2321c9a0
dbGetq: object is a purged/freed object - db:0x2321c9a0
dbGetq: object is a purged/freed object - db:0x2321c99e
dbGetq: object is a purged/freed object - db:0x2321c99e
dbGetq: object is a purged/freed object - db:0x2321c99e
*Error* quotient: can't handle (nil / 2)


麻烦大家看看怎么解决谢谢了

 楼主| 发表于 2021-8-25 14:25:48 | 显示全部楼层
麻烦大家看看,谢谢了
发表于 2021-8-28 11:16:26 | 显示全部楼层
Vline~>width/2 ?
感觉应该是(Vline~>width)/2
 楼主| 发表于 2021-8-28 13:35:57 | 显示全部楼层


loongsky 发表于 2021-8-28 11:16
Vline~>width/2 ?
感觉应该是(Vline~>width)/2


问题倒是解决了,但是里面有一个viaGetViaOptions函数没有定义,尴尬了。
 楼主| 发表于 2021-8-28 13:54:15 | 显示全部楼层


数字后端的小白 发表于 2021-8-28 13:35
问题倒是解决了,但是里面有一个viaGetViaOptions函数没有定义,尴尬了。


谢谢
发表于 2023-7-25 11:55:59 | 显示全部楼层
能用了吗
发表于 2023-7-25 12:26:43 | 显示全部楼层
能用,两个函数要同时load,byname 调用了byorder里的那个函数
发表于 2023-7-25 13:41:45 | 显示全部楼层
我只load了byorder报错
 楼主| 发表于 2023-7-25 13:48:43 | 显示全部楼层


wangxu19950704 发表于 2023-7-25 13:41
我只load了byorder报错


我最后面没有用这个脚本,没有解决
发表于 2023-7-25 14:27:36 | 显示全部楼层


ljh065216 发表于 2023-7-25 12:26
能用,两个函数要同时load,byname 调用了byorder里的那个函数


我用byorder这个只能练一根线
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-26 13:04 , Processed in 0.028769 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表