Layout을 하다 보면 Path, Rectangular의 Center좌표를 알아야 하는 경우가 생기게 된다. 언제부터 추가되었는지 몰라도 지금은 Smart Snap Option 이 생겨서 특정 Object, Shape의 Edge, Center 부분을 쉽게 찾을 수 있게 되었지만, 그거랑 별개로 특정 위치를 산정해서 ruler를 생성시키는 기능은 알아두면 편리할 수 있다. 사실 어떠한 규칙성만 있으면 Skill로 작성할 수 있다. 복잡한 기능, 여러 가지 변수를 가질수록 어렵지만 이 처럼 단순한 규칙성을 가질 때는 오히려 작성하기 쉽다.
procedure(p_center()
prog(()
cv=hiGetCurrentWindow()->cellView
foreach(inst geGetSelSet()
if(inst->objType=="path" then
lpp=list((car(car(inst->points))+car(cadr(inst->points)))/2.000 (cadr(car(inst->points))+cadr(cadr(inst->points)))/2.000)
if(car(car(inst->points))==car(cadr(inst->points)) then
leCreateRuler(cv list(list(car(lpp)-inst->width cadr(lpp)) list(car(lpp)+inst->width cadr(lpp))))
else
leCreateRuler(cv list(list(car(lpp) cadr(lpp)-inst->width) list(car(lpp) cadr(lpp)+inst->width)))
)
)
if(inst->objType=="rect" then
x1(car(car(inst->bBox))
x2(car(cadr(inst->bBox))
y1(cadr(car(inst->bBox))
y2(cadr(cadr(inst->bBox))
leCreateRuler(cv list(list(x1-0.1 (y1+y2)/2.000) list(x2+0.1 (y1+y2)/2.000)))
leCreateRuler(cv list(list((x1+x2)/2.000 y1-0.1) list((x1+x2)/2.000 y2+0.1)))
)
)
)
)
결과는 잘 동작한다. 사용하는 grid에 따라서 나누고 곱하는 값을 좀 변경하거나 grid에 안 맞는 중간값을 가질 경우 경고창을 띄우는 옵션도 넣을 수 있지만, 그렇게 복잡한 기능을 생각한 것은 아니었다. 대신 지금은 앞서 말한 Smart Snap 기능 때문에 사용할 일이 없어진 듯하다. 해당 기능이 없는 ICAD 버전이라면 아직도 유용하게 사용할 수 있을 것 같다.
'Programming 언어 > Skill' 카테고리의 다른 글
[SKILL] 원클릭으로 LPE를 추출해보자 (1) | 2017.01.09 |
---|---|
[SKILL] 원클릭으로 LVS 돌리기 (0) | 2017.01.07 |
[SKILL] 원클릭으로 DRC 돌리기 (2) | 2017.01.05 |
[SKILL] 원클릭으로 export_gds 하기 (0) | 2017.01.04 |
[SKILL] Bindkey 가져오기, 불러오기 (6) | 2017.01.03 |