아래와 같은 Layer정보를 가진 MOS가 있는데, 이 모든 Shape정보를 빼서 다른 재사용이 가능한 다른 SKILL파일을 만든다.
Virtusoso는 해당 화면을 하이라이트 시키면 아래와 인터프리터도 해당 창에 대해서 반응한다.
고로 위 MOS창을 하이라이트 시키고 아래 db id를 뽑으면 위 MOS에 관한 db id가 나온다.
위 MOS가 갖고 있는 shape을 모두 추출하여 새로운 .il 파일로 저장하는 코드
procedure(mos_info()
let(()
out_file = outfile("myReport.il" "w") ; result.il 파일 쓰기모드 열기
cv=geGetEditCellView() ; db id생성
fprintf(out_file "procedure(mos_info()\n")
fprintf(out_file "let(()\n")
fprintf(out_file "cv=geGetEditCellView()\n")
tot_shape=cv~>shapes ; shapes의 db를 tot_shape에 넣기
foreach(one_shape tot_shape ; foreach로 하나씩 접근
layer_box=one_shape~>bBox ; 좌표데이터 뽑기
layer_name=one_shape~>layerName ; layer이름 데이터 뽑기
x1_pos=xCoord(xCoord(layer_box)) ; (x1, y1), (x2, y2) 각 값 추출
x2_pos=yCoord(xCoord(layer_box))
y1_pos=xCoord(yCoord(layer_box))
y2_pos=yCoord(yCoord(layer_box))
fprintf(out_file "dbCreateRect(cv \"%s\" list(%.2f:%.2f %.2f:%.2f)) \n" layer_name x1_pos x2_pos y1_pos y2_pos)
;printf("dbCreateRect(cv %s list(%.2f:%.2f %.2f:%.2f)) \n" layer_name x1_pos x2_pos y1_pos y2_pos) ;디버깅용
);foreach
);let
fprintf(out_file ")\n")
fprintf(out_file ")\n")
close(out_file) ; 반드시 open한 파일은 close하기
);procedure
결과로 아래와 같은 .il 파일이 만들어진다.
이 myReport.il SKILL파일을 빈 layout에 생성해본다.
1. Library Manager
2.
3. 새 라이브러리를 만들고 새 layout 열기
4.
5. load("myReport.il")을 하여 스킬파일을 로드함.
6. 함수명 mos_info를 쳐서 실행
'Cadence SKILL language > IC SKILL' 카테고리의 다른 글
[Cadence IC SKILL] IC SKILL 예제 MOS의 좌표(x, y),width, length, finger 를 받아 새로 생성 (0) | 2020.07.07 |
---|---|
[Cadence IC SKILL] Virtuoso IC SKILL 유저 폼 만들기 (User form) / UI 만들기 (0) | 2020.07.07 |
[Cadence IC SKILL] IC SKILL DB에 접근해서 항목 추출하기 (0) | 2020.07.06 |
[Cadence IC SKILL] IC SKILL 함수 만들 때 기본 포맷 (3) | 2020.07.06 |