본문 바로가기
3. OPTICAL PROXIMITY CORRECTION TECH/3. OPC WORK

DESIGN RULE CHECK CODE[SVRF : INT/EXT/ENC]

by Utnapishtim 2023. 8. 29.
728x90

설계가 끝난 후 PG out을 통해서 나온 polygon layer들을 Photo mask에 그려질 OPCed pattern으로 만드는 과정이 필요합니다. 그 과정은 TDLO/OPC step인데, 이 과정 전에 중요한 step이 있습니다. TDLO/OPC를 수행하기 전에 Design Rule Check 과정을 통해서 설계도 대로 그렸는지 확인하는 작업을 하고, 이를 위반하였을 경우 수정하도록 합니다. 그리고 나서 Original DB가 release됩니다. DR대로 그렸는지를 확인 할 때 사용하는 language가 mentor사의 SVRF code 입니다. SVRF command에 대해서 알아보겠습니다.

IC design and verification flow

SVRF code는 Standard Verification Rule Formate의 약자로 specification detection 및 Polygon operation을 수행할 수 있게 든 언어입니다. 다양한 operation이 가능한데, layer derivation, connectivity extraction, device recognition, text attachment 등이 수행 가능합니다. 

mentor의 rule은 rule compiled --> HDB reading --> HDB re-construction의 순서로 진행됩니다.

SVRF code의 특징으로는 소/대문자 구분이 없으며, text 쓰인 순서대로 operation이 되지 않고 정의된 순서대로 operation이 동작합니다. 최종적으로 operation을 하지 않는 layer는 연산 자체를 하지 않습니다.

comment 처리(주석 처리)는 한 줄의 경우엔 // 로 문단 첫 줄에 적어주면 주석 처리가 됩니다. 또한 여러 줄을 주석 처리 하고 싶을 때는 /*  ..... */ 을 적어주면 됩니다. 또한 DRC commend의 경우엔 @ 처리를 하면 주석 처리가 됩니다.

또한 변수 처리가 가능합니다. SVRF 안에서 변수 처리하는 것과 SVRF 밖에서 변수 처리 하는 것이 다릅니다. 내용은 하기와 같습니다.

Conditional commend도 사용이 가능합니다. 

layer input 받을 때 정의는 아래와 같이 적어줍니다.LAYOUT SYSTEM은 DB type이 OAS인지 GDSII인지를 적어주고, LAYOUT PATH는 DB PATH를 적어줍니다. 그리고 LAYOUT PRIMARY는 수행할 hierarchy structure cell을 적어줍니다. 보통은 TOP CELL을 적어주고 *를 적어주면 자동으로 TOP CELL로 수행합니다.

SVRF code를 활용해서 나오는 layer output은 크게 세 가지 종류인데, Derived Polygon, Derived Edge, Derived error로 나눌 수 있습니다.

DRC rule check을 사용하는 방법은 아래와 같습니다. 중괄호로 오픈하고 닫습니다. @ 처리로 주석 처리를 합니다.

rule을 작성할 때 제일 먼저 layer No를 지정해줘야 합니다. 각 layer는 다시 calibre rule layer와 matching을 해줍니다.

DRC output을 뽑을 때는 layer를 뽑을 지, rdb로 뽑을지, ASCII로 뽑을지 지정할 수 있습니다.

특정 영역만 operation을 하고 싶을 때, LAYOUT WINDOW CLIP 명령어를 사용합니다.

Edge를 정의할 때, INTERNAL, EXTERNAL, ENCLOSURE 명령어를 사용할 수 있으며, 바라보는 방법으로는 Euclidian, Square, Opposite 의 세 가지 방법이 있습니다. default가 Euclidian으로 check를 합니다. 이 명령어의 output은 derived error layer로 다른 layer operation input으로 사용할 수 없습니다. 사용하기 위해서는 대괄호[ ]를 사용(지정)하거나, 소괄호( ) 를 사용(지정 제외)하면 output edge를 다른 layer의 input으로 사용할 수 있습니다. 

INT 명령어 뒤에 OPPOSITE를 사용하면 서로 마주보는 edge들만 선택해서 output 합니다. SQUARE를 사용하게 되면 마주보는 edge들을 사각형으로 만든 뒤 그 사각형을 포함하는 edge만 뽑아줍니다. EUCLIDIAN을 사용하면 작도법 유클리디안으로 check해서 outupt을 해줍니다.

EXTERNAL 명령어 뒤에 Region을 지정할 경우, default로는 EUCLIDEAN으로 check되고, SQUARE를 적어준 경우엔 바깥쪽으로 사각형을 만든 Region을 만들어줍니다. OPPOSITE을 적어준 경우에는 바깥쪽으로 마주보는 방향으로만 Region이 생성됩니다.

728x90