제품 설명

주로 반도체 공정의 마스킹이나 검사장비에 사용되는 데이터 형식인 GDSII 나 OASIS 또는 MEBES 데이터 파일의 내용을 검색. 편집. 벡터 이미지(raster image)로의 변환 등에 사용되는 라이브러리로서 파일의 용량이 과다하여 컴퓨터에 로딩하거나 사용함에 있어서 엄청난 시간 지연으로 작업성을 찾을 수 없습니다. 이때 Artwork Conversion사의 GDSII, OASIS 라이브러리를 사용하여 해결할 수 있습니다.

GDSII & OASIS 파일에서 원하는 데이터를 추출하기 위한 라이브러리 제품입니다.

대용량 파일인 GDSII (또는 OASIS) 파일로부터 지오메트리(gemometry) 데이터를 추출하고자 한다면 내부적으로 새로운 엔지니어을 채용하여 관련 라이브러리를 개발하는 대신에 이미 준비가 되어있는 Artwork사의 QisMLib 라이브러리를 사용할 수 있습니다.

flow-chart
왜 Artwork사의 QisMLib 를 선택해야 하는지 ?

숙련된 소프트웨어 엔지니어들이 GDSII 리더(reader) 프로그램을 코딩하여 직접 데이터를 읽거나 추출할 수도 있습니다. QisMLib의 장점은 대단히 최적화 된 아키텍쳐를 통해 극단적인 사이즈의 파일들을 엄청난 속도로 원하는 데이터를 추출할 수 있도록 도와 주기 때문입니다. QisMLib는 GDSII/OASIS 데이터를 위한 라이브러리 제품으로 사용자로 하여금 함수 호출(function call) 세트를 이용하여 GDSII/OASIS 데이터를 디스플레이 하거나 다양한 형태로 사용 가능하도록 합니다. 여기에서 M 버전(Multi-thread)은 수년 간의 개발 노력의 산물이며 고객의 소프트웨어 개발팀이 상당한 능력을 갖춘 의 프로그램 개발 팀이라고 하더라도 이러한 수준의 최적화 결과를 만들어 내려면 수년 간의 개발 시간이 필요하게 됩니다.

QisMLib의 최적화 방식 ?
계층적 공정(Hierarchical Processing)

첫째 우리가 알다시피 GDSII는 계층구조를 갖는 데이터베이스 입니다. 이 의미는 수 많은 구조적인 요소들이 하나의 “셀(cell)” 묶여 있으며 다른 셀에 의해 지속적으로 참조되고 배치가 됩니다. 각각의 배치에는 위치, 회전 및 스케일 정보가 연결되어 있습니다. ​

GDSII 파일에는 계층 관계를 표현해주는 테이블(table)이나 헤더(header) 정보가 포함되지 않으며 파일 내에서 순서(order)를 결정하는 어떠한 룰(rule)도 존재하지 않습니다. 그러므로 GDSII를 읽어 들여야 하는 프로그램들은 모두 계층 구조를 분류하기 위해서 전체 파일을 완벽하게 스캐닝 하여야 합니다. 물론 관련 영역을 교차하여 지나가고 있는 모든 지오메트리를 계산할 수 있도록 내부적인 테이블(또는 tree)이 만들어져야 합니다.

능력이 있는 프로그램 개발 팀이라면 계층구조를 결정하기 위한 루틴을 코딩할 수 있겠습니다만 오늘날의 GDSII 파일의 사이즈는 수백 기가바이트(GByte)에 이르며 50만개의 다른 셀 정보(cell definition)를 갖게 되고 1백만개 이상의 셀 참조(cell reference) 또한 필요하게 됩니다. 여기에서 의미하는 `참조`는 9단계 또는 그 이상의 깊이를 갖는다는 의미입니다.

그렇기 때문에 계층구조를 스캐닝하고 구축하는 작업을 최적화 할 수 있다면 그 솔루션은 상당한 가치를 갖게 됩니다. 일반적으로 GDSII 파일을 여는데 1시간 이상이 소요되는데 반하여 QisMLib에게는 단 1분 또는 2분 정도의 작업에 해당합니다.

특정 영역에서 빠르게 데이터 찾기

QisMLib 라이브러리의 대표적인 용도 가운데 그 목적이 검사(inspection) 이던 아니면 리소그래피(lithography) 이던 작은 영역에서 모든 지오메트리 데이터를 추출하는 역할입니다. 이러한 추출에 있어서 어쩔 수 없는 과제의 한가지는 셀 내의 모든 지오메트리를 테스트하여 해당 추출 영역을 교차하는지 결정하는 작업입니다.

GDSII 파일 사이즈가 작은 경우에는 이러한 방법에 특별한 문제가 없습니다만 오늘 날의 일반적인 GDSII 사이즈를 감안할 때는 소요시간이 엄청나기 때문에 실제로 사용 가능한 공정으로 인식되어 있지 않습니다.

그렇다면 티웨이브가 공급하고 있는 Artwork사의 최적화 솔루션은 어떨까요 ? 해당 계층구조를 계산한 이후에 두번째 경로를 만들고 각 셀의 내용을 계산합니다. 접근이 가능해진 이 정보를 통해 어떤 셀이 해당 영역을 교차하게 되는지 빠르게 그 범위를 좁혀 나가게 됩니다. Artwork사의 솔루션은 해당 영역을 교차하지 않는 셀의 지오메트리는 아예 테스트하지 않도록 할 수가 있기 때문입니다.

쿼드 트리(Quad Trees)

우리는 또한 quad tree를 많이 사용합니다. 이 것은 추출 과정에서 생성되는 데이터 베이스로서 공간적인 구조를 가지며 특정 영역을 교차하는 셀 또는 지오메트리를 구분하는 내용입니다.

Quad tree의 생성, 사이즈 및 밀도(density) 등을 최적화하여 우리의 프로그램에서 어떤 지오메트리가 특정 추출 영역을 교차하는지 아주 빠른 시간 내에 결정해 주게 됩니다

Quad tree – Quad 내에 element 숫자에 따라 크기가 조정된다.

멀티 쓰레드(Multi-Threaded) Exploder

일반적으로 quad tree와 관련한 지오메트리 데이터는 (압축된 형태로) 모두 메모리에 보관하게 되는데 그 이유는 하드디스크 내에 보관된 엔티티 데이터(entity data)의 검색은 아주 느리기 때문입니다. 또한 레이아웃 파일의 크기가 대단히 크기 때문에 quad tree와 지오메트리 데이터가 자체도 메모리 내에서 많은 공간을 차지하게 됩니다.

Quad tree와 지오메트리 데이터를 탐색하는 작업은 근본적으로 한 개의 쓰레드(thread)만을 이용하여 작업이 가능합니다. 가속(acceleration)을 위해 프로세서의 레벨을 높이는 것 자체는 문제가 되지 않습니다.

그러나 추출 작업은 여러 개의 프로세서를 사용하여 여러 개의 작업을 동시에 할 수 있어야 합니다. 공정에 사용되는 프로그램 중에는 많은 수량의 아주 작은 영역들을 추출하는 방법을 필요로 하며 QisMLib는 각각의 영역 추출에 각기 다른 쓰레드를 할당하여 속도를 개선할 수 있습니다.

멀티 레이아웃 파일

RAM 메모리가 충분하다면 여러 개의 필요한 GDSII 파일을 열 수가 있으며 열려 있는 파일에서 동시에 지오메트리 추출이 가능하게 됩니다. QisMLib의 아주 간단한 API를 통해 이런 작업을 할 수 있습니다. 사용자는 자신의 응용프로그램에서 두개의 유사한 파일 간에 단지 차이점만 찾아내면 됩니다.

긴밀한 통합 Post Processing 작업

QisMLib를 통해 원하는 지오메트리를 추출하여 메모리에 저장하였습니다 – 그 다음 작업은 무엇일가요? 통상적인 추가 작업이 진행이 됩니다. 추가적인 작업으로는 이미지 작업(rasterization) 이거나 또는 몇가지 벡터 작업이 될 것 입니다. 여기에는 Boolean 연산 작업이 필요합니다.

Artwork사는 QisMLib와 연계되는 많은 라이브러리 들을 보유하고 있으며 이러한 많은 추가적인 컴퓨팅 작업을 수행하도록 합니다. 후반 공정(post processing)에 필요한 라이브러리로는 아래와 같은 것들이 있습니다.

Rasterizer (multi-threaded) – 벡터 이미지 작업
Boolean (multi-threaded) - boolean연산: AND, OR, …
Net Tracing – 네트 추적 작업
Clip Extractions – 클리핑(추출) 작업
Drawing (to screen) – 디스플레이
Two File Comparison – 파일 비교
Pattern Matching – 특정 패턴 또는 형상 매칭(검색)

컴퓨팅 환경

모든 라이브러리는 Linux 및 Windows 64 bit 환경에서 사용 가능.

최신 C++ 인터페이스

API는 객체지향(object oriented) 구조이며 최신의 C++ 코딩 기법을 적용하고 있습니다.

QisMLib의 구조

이미지를 클릭하면 Artwork사의 QisMLib 페이지로 이동합니다.

클릭하면 Artwork사의 QisMLib 페이지로 이동됩니다.

#gdsii, #GDSII, #conversion, #변환, #tiff, #반도체, #추출, #multi, #thread