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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7076|回复: 11

[求助] contact/via数+1/-1的skill程序

[复制链接]
发表于 2018-5-25 13:35:55 | 显示全部楼层 |阅读模式
150资产
virtuoso作图时,大片区域内可以auto打孔(contact/via),有哪位大神有skill程序可以通过快捷键使得contact/via数+1/-1

最佳答案

查看完整内容

有问题的话 可以私信我 hiSetBindKey("Layout" "AltUp" "CtAsUp()") hiSetBindKey("Layout" "AltDown" "CtAsDown()") hiSetBindKey("Layout" "AltRight" "CtAsRight()") hiSetBindKey("Layout" "AltLeft" "CtAsLeft()") procedure(CtAsUp() prog(() CtAsMain("1") ); ); procedure(CtAsDown() prog(() CtAsMain("2") ); ); procedure(CtAsRight() prog(() CtAsMain("3") ); ); procedure(CtAsLeft() prog(() CtAsMain("4") ); ); p ...
发表于 2018-5-25 13:35:56 | 显示全部楼层
有问题的话 可以私信我
hiSetBindKey("Layout" "Alt<Key>Up" "CtAsUp()")
hiSetBindKey("Layout" "Alt<Key>Down" "CtAsDown()")
hiSetBindKey("Layout" "Alt<Key>Right" "CtAsRight()")
hiSetBindKey("Layout" "Alt<Key>Left" "CtAsLeft()")
procedure(CtAsUp()
prog(()
CtAsMain("1")
);
);
procedure(CtAsDown()
prog(()
CtAsMain("2")
);
);
procedure(CtAsRight()
prog(()
CtAsMain("3")
);
);
procedure(CtAsLeft()
prog(()
CtAsMain("4")
);
);
procedure(CtAsMain(mode)
prog((cv curwin groupId tfId obj objType mode1 objType obj_origin px1 py1 techFile rota conviaName contVia orParams refParams cutRows cutColumns rows_n cols_n select_new contViaParams1 contViaParams)
mode1=mode
cv=geGetEditCellView()
curwin=hiGetCurrentWindow()
groupId=leGetEditFigGroup(curwin)
tfId = techGetTechFile(cv)
obj=geGetSelectedSet()
objType=car(obj~>objType)
cond(
((mode1=="1") detR=1 detC=0)
((mode1=="2") detR=-1 detC=0)
((mode1=="3") detR=0 detC=1)
((mode1=="4") detR=0 detC=-1)
   )
if(objType!="stdVia"

then

warn("obj need to be stdvia")

else

obj_origin=car(obj~>origin)

px1=xCoord(obj_origin)

py1=yCoord(obj_origin)

techFile = techGetTechFile(cv)

rota=car(obj~>orient)

conViaName=car(obj~>viaHeader~>viaDefName)

contVia=techFindViaDefByName(tfId conViaName)

orParams=car(obj~>viaHeader~>overrideParams)

orParams=car(obj~>viaHeader~>overrideParams)

refParams=setof(i orParams car(i) != "cutRows" && car(i) != "cutColumns" )

;i=nth(0 orParams)

cutRows=1

cutColumns=1
foreach(i orParams

if(car(i)=="cutRows"

then

cutRows=car(cdr(i))

);eng_id

if(car(i)=="cutColumns"

then

cutColumns=car(cdr(i))

);eng_id

);end_foreach

rows_n=cutRows+detR

cols_n=cutColumns+detC

if(rows_n<=0

rows_n=1

)

if(cols_n<=0

cols_n=1

)


contViaParams1=list(list("cutRows" rows_n) list("cutColumns" cols_n))

contViaParams=append(refParams contViaParams1)

select_new=dbCreateVia(cv contVia px1:py1 rota contViaParams)

if(groupId!=nil

then

dbAddFigToFigGroup(groupId select_new)

);end-if
    dbDeleteObject(car(obj))
    geSelectFig(select_new)

);warn-if
);end-prog
);end-procedure
发表于 2018-5-25 17:47:37 | 显示全部楼层
本帖最后由 艹天道 于 2018-5-25 17:48 编辑

xn=fix((W-d*2+s)/(s+len));d为AA enclose CT的长度,s为CTs 间距,len为CT边长,W、L为AA宽长
yn=fix((L-d*2+s)/(s+len))

CT=dbCreateViaShapeArray(11个arguments)
起始点横、纵坐标可以这样写:(W-xn*len-s*(xn-1))/2+AA横坐标   (L-yn*len-s*(yn-1))/2+AA纵坐标

附上dbCreateViaShapeArray的用法
1.png
 楼主| 发表于 2018-5-28 14:44:28 | 显示全部楼层
回复 2# 艹天道


   我的意思是对已经存在的contact/via,如何通过skill来增加或减少
contact/via的个数
发表于 2018-6-21 22:09:24 | 显示全部楼层
*Error* eval: undefined function - leGetEditFigGroup
发表于 2018-6-22 17:29:31 | 显示全部楼层
回复 5# maomao198477


   你用的版本有点低~~  你把group的所有相关函数都干掉吧~~应该也可以
发表于 2018-6-22 17:33:00 | 显示全部楼层
如果是ic5141 或者613 之类的较低版本,可以用这个
hiSetBindKey("Layout" "Alt<Key>Up" "CtAsUp()")
hiSetBindKey("Layout" "Alt<Key>Down" "CtAsDown()")
hiSetBindKey("Layout" "Alt<Key>Right" "CtAsRight()")
hiSetBindKey("Layout" "Alt<Key>Left" "CtAsLeft()")
procedure(CtAsUp()
prog(()
CtAsMain("1")
);
);
procedure(CtAsDown()
prog(()
CtAsMain("2")
);
);
procedure(CtAsRight()
prog(()
CtAsMain("3")
);
);
procedure(CtAsLeft()
prog(()
CtAsMain("4")
);
);
procedure(CtAsMain(mode)
prog((cv curwin groupId tfId obj objType mode1 objType obj_origin px1 py1 techFile rota conviaName contVia orParams refParams cutRows cutColumns rows_n cols_n select_new contViaParams1 contViaParams)
mode1=mode
cv=geGetEditCellView()
curwin=hiGetCurrentWindow()
tfId = techGetTechFile(cv)
obj=geGetSelectedSet()
objType=car(obj~>objType)
cond(
((mode1=="1") detR=1 detC=0)
((mode1=="2") detR=-1 detC=0)
((mode1=="3") detR=0 detC=1)
((mode1=="4") detR=0 detC=-1)
   )
if(objType!="stdVia"
        then
        warn("obj need to be stdvia")
        else
        obj_origin=car(obj~>origin)
        px1=xCoord(obj_origin)
        py1=yCoord(obj_origin)
        techFile = techGetTechFile(cv)
        rota=car(obj~>orient)
        conViaName=car(obj~>viaHeader~>viaDefName)
        contVia=techFindViaDefByName(tfId conViaName)
        orParams=car(obj~>viaHeader~>overrideParams)
        orParams=car(obj~>viaHeader~>overrideParams)
        refParams=setof(i orParams car(i) != "cutRows" && car(i) != "cutColumns" )
        ;i=nth(0 orParams)
        cutRows=1
        cutColumns=1
foreach(i orParams
        if(car(i)=="cutRows"
        then
        cutRows=car(cdr(i))
        );eng_id
        if(car(i)=="cutColumns"
        then
        cutColumns=car(cdr(i))
        );eng_id
        );end_foreach
        rows_n=cutRows+detR
        cols_n=cutColumns+detC
        if(rows_n<=0
                rows_n=1
                )
        if(cols_n<=0
                cols_n=1
                )

        contViaParams1=list(list("cutRows" rows_n) list("cutColumns" cols_n))
        contViaParams=append(refParams contViaParams1)
        select_new=dbCreateVia(cv contVia px1:py1 rota contViaParams)
       
    dbDeleteObject(car(obj))
    geSelectFig(select_new)
        );warn-if
);end-prog
);end-procedure
发表于 2018-6-23 23:00:51 | 显示全部楼层
*WARNING* obj need to be stdvia
发表于 2018-6-24 20:23:03 | 显示全部楼层
回复 8# maomao198477


   东西是我再617下用的 615 616 都还可以用的。我没有5141环境调试~~ 简单看看写法吧
 楼主| 发表于 2018-6-25 12:41:26 | 显示全部楼层
回复 4# 3512596


    谢谢,试了一下,可以用的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-11-18 13:34 , Processed in 0.023580 second(s), 8 queries , Gzip On, Redis On.

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