반응형

아래와 같은 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를 쳐서 실행

반응형

+ Recent posts