答疑 | 如何指定每次调用VIA时的类型和个数 - 附Skill脚本

我们可以使用快捷键 “O” 调用VIA通孔,随后弹出Create Via选项卡:

兔二思
兔二思
技术博主

问题描述(一)

我们可以使用快捷键 “O” 调用VIA通孔,随后弹出Create Via选项卡:

图片

其中 Rows/Columns 的默认值一般设置的都是<1>

但是,在实际的版图绘制中,由于考虑到良率的问题,我们一般使用<2>个通孔。所以,在这里需手动将值改成<2>

修改过一次后,在当次Virtuoso程序中能够记住此设置,一旦退出程序重新启动,又将恢复<1>的默认值

所以,如何实现每次调用VIA,始终默认是两个通孔呢 ?

解决方案

解决的方法有几种,比如可以通过修改工艺文件中的viaDef定义部分,但工艺文件一般是没有权限修改的,也不建议修改它

下面介绍 在不更改工艺文件的情况下,如何把viaRows或viaColumns的默认值设置为两个

操作步骤:

1、打开 .cdsenv 文件,输入以下内容

layout viaUseRowColDefault boolean nil

layout viaRows int 2

layout viaColumns int 1

2、或者打开 .cdsinit 文件,输入以下内容:

envSetVal(“layout” “viaUseRowColDefault” ‘boolean nil)

envSetVal(“layout” “viaRows” ‘int 2)

envSetVal(“layout” “viaColumns” ‘int1)

问题描述(二)

除了通孔数值的需求外,有时还想将常用的通孔类型(“Via Definition”),设置成默认的:

图片

这样也就不需要再频繁的点击下拉菜单进行选择,以方便于VIA的调用

解决方案

比如:指定”M2_M1”通孔为默认的VIA类型

操作步骤:

1、将下面的代码保存成 .il 文件,例如 ChangeViaDef.il

procedure(CCSRegProc(args)
hiRegTimer(
"CCSSetDefVia(args->window)"
 5)
leHiCreateVia()
) ;proc
procedure(CCSSetDefVia(window)
let((cv cstG currCG techId validVias)
cancelEnterFun('le0ViaForm)
cv=geGetWindowCellView(window)
if(envGetVal(
"layout"

"viaConstraintGroup"
)==
"Same as Wire"
 then
currCG=envGetVal(
"layout"

"wireConstraintGroup"
)
else
currCG=envGetVal(
"layout"

"viaConstraintGroup"
)
) ;if
techId=techGetTechFile(cv)
cstG=cstFindConstraintGroupIn(techId currCG)
validVias=car(setof(x cstG~>objects x~>defName==
"validVias"
))~>value
if(member(
"M2_M1"
 validVias) then
le0ViaForm->viaSingleModeScrollView->viaDefName->value=
"M2_M1"
) ;if
) ;let
) ;procedure
deRegUserTriggers(
"maskLayout"
 nil nil 'CCSRegProc)
deRegUserTriggers(
"maskLayoutXL"
 nil nil 'CCSRegProc)
hiSetBindKey(
"Layout"

"<Key>o"

"CCSSetDefVia(hiGetCurrentWindow()) leHiCreateVia()"
)

(向右滑动查看完整代码 /后台回复「VIA」直接获取代码文本)

2、将代码中第17、18行中的 “M2_M1”,替换成指定的通孔类型名称

3、打开 .cdsinit 文件,添加load命令以用来加载上面的文件:

load(“/home/xxx/ChangeViaDef.il”)

注:引号内的内容修改成 .il 文件所在的地址

完成以上步骤后,启动Virtuoso程序使用快捷键“O”或者菜单栏,就可以看到效果啦~

- End -

#Virtuoso#答疑分享