I have one more question, relating to via cutSpacing, please let me know if I should start a new thread.
The goal of my code is to create a bindkey such that I can grow and shrink via on the fly and adjust viaSpacing accordingly.
Basically since 2x2 and 3x3 vias in the newer technology node have different via spacing requirements, I am using the code below to extract these infomation for the 3x3 vias. Two by two cutSpacing can be easily obtained using via->viaHeader->viaDef->params.
The problem I am running into is that lxGetValidViaDefs is extremely slow and this is especially true when multiple vias are selected. So I am wondering if there is any other way to retrieve the "spacings" information inside the tech files without using lxGetValidViaDefs and lxComputeViaParams?
I guess one way to bypass all these is to only retrieve via spacing info when via is either 2x2 or 3x3(right now my code does this calculation everytime the bindkey is hit) but I am curious to know if there is a more clean way of doing this.
;get via spcaing parameters for 3x3 via
layer1=fig->viaHeader->viaDef->layer1->name
layer2=fig->viaHeader->viaDef->layer2->name
cellViewId=geGetEditCellView()
viaId=caar(lxGetValidViaDefs(cellViewId nil layer1 layer2))
viaParams=list(list("cutRows" 3) list("cutColumns" 3))
viaParams=lxComputeViaParams(viaId cellViewId nil viaParams)
threeX=caadr(assoc("cutSpacing" viaParams))
threeY=cadadr(assoc("cutSpacing" viaParams))
Thanks again,
Andy