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

DESIGN RULE CHECK CODE [SVRF : POLYGON-DIRECTED]

by Utnapishtim 2023. 8. 29.
728x90

Siemens DRC language인 SVRF 중에서 Derived  Error Edge commend(INT/EXT/ENC)를 알아보았고,  이 commend는 다른 operation layer의 input으로 활용할 수 없다는 것을 알았습니다. 다른 layer의 input으로 활용하려면 대괄호[ ] 혹은 소괄호( ) 넣어서 output을 뽑을 수 있었습니다. 이 edge layer를 통해서 원하는 operation을 할 수 있는 polygon directed rule check을 알아보겠습니다.

AND는 두개 layer의 교집합인 영역을 선언해주는 명령어입니다. 즉, 두 layer가 겹쳐지는 영역에 대해서 알고 싶을 때 사용하는 명령어입니다.

 

NOT 명령어는 Polygon끼지 빼주는 명령어로서 기준 layer와 빼주는 layer의 순서가 중요합니다. 앞에 선언해준 layer가 기준 target layer이고 뒤에 선언해준 layer는 빼주는 layer입니다. 

 

OR 명령어는 말그대로 더해주는 명령어로 두개 혹은 여러개 layer를 합해줄 때 사용합니다. E = OR A B C D 로 써주면 A, B, C, D layer가 하나의 layer E로 합쳐진 결과로 나오게 됩니다. 

 

XOR는 두 개의 layer의 차이점을 찾아내고 싶을 때 사용하는 명령어 입니다. 두 개 layer의 서로 다른 부분 즉 차이나는 부분을 layer를 뽑아줍니다.

 

DONUT 명령어는 Polygon에서 가운데 구멍을 포함하는 layer를 선언하고 싶을 때 사용하는 명령어 입니다. 하기와 같이 선언해주면 L1은 Hole을 2개 포함한 polgon을 찾아라 하는 뜻입니다. 하기와 같이 intersecting point는 hole로 선언되지 않아서 count에서 제외됩니다. 그래서 정사각형 2개만 hole로 인식되어 1개 polygon만 검출되었습니다.

 

Hole은 말그대로 Polygon 영역에서 Hole을 찾는 명령어입니다. DONUT과는 달리 intersecting point도 hole로 인식하기 때문에 count에 포함됩니다.

 

Enclose 명령어는 기준 target layer가 찾고 싶은 layer를 원하는 갯수를 포함하고 있는지 확인할 때 사용하는 명령어 입니다. 하기와 같이 L1 layer가 L2 layer를 3개 포함하고 있는 polygon을 찾고 싶을 때 L1 ENCLOSE L2 == L3 로 사용합니다. 걸쳐 있는 것은 count 되지 않고 온전히 edge까지 포함하고 있는 경우 count되어 뽑아주게 됩니다. 

Outside 명령어는 특정 기준 target layer 바깥에 존재하는 모든 layer를 찾을 때 사용합니다. 기준 layer와 edge끼리 맞닿거나, intersecting point여도 바깥에만 존재한다면 outside에 있는 것으로 간주하여 count 합니다.

 

Inside는 outside와 반대로 특정 기준 layer의 안쪽에 존재하는 polygon을 찾고 싶을 때, 사용하는 명령어입니다. outside와 마찬가지로 edge가 맞닿거나, intersecting point가 존재하더라도 count 됩니다.

 

CUT 명령어는 기준 layer를 cut했을 때 남은 영역이 있는지 찾아 낼 때 사용합니다. L2 기준 layer에 L1이 닿고 있는 L2의 layer를 찾아주는 기능입니다. 하기와 같이 2개의 polygon이 L2를 L1이 cut했을 때 잘라지기 때문에 L2의 polygon 2개가 검출되었습니다.

Touch는 기준 target layer와 특정 layer의 edge가 서로 touch하고 있을 때, touch하는 기준 target layer를 찾아주는 layer 입니다.

Touch의 다른 용법으로는 기준 target layer와 특정 layer와 특정 touch되는 갯수를 지정하여 뽑아줄 수 있습니다. 하기처럼 SHORT_GATE = GATE TOUCH SD < 2 로 지정했을 경우, GATE와 만나는 SD touch가 2개 미만일 경우 찾아내라는 명령어입니다. 하기 그림에는 1개 edge만 touch되기 때문에 Bad GATE가 검출되었습니다. 

With Edge는 기준 target layer(polygon)이 특정 derived edge layer를 포함하는 경우를 찾을 때 사용하는 명령어입니다. 결과물은 특정 derived edge layer와 touch하는 target layer의 polygon으로 나옵니다. 

Area는 기준 target layer의 찾고자 하는 면적을 가진 polygon을 찾을 때 사용합니다.

Interact 명령어에서 Singular Also 명령어와 Singular only 명령어의 구분을 살펴보겠습니다. Singular Also는 기준 target layer와 특정 layer간 intersecting point끼리 공유하고 있더라도 포함하는 명령어입니다. Singular Only는 intersecting point만 검출하는 명령어입니다. 

Rectangle 명령어는 말그대로 사각형의 X, Y 길이 및 X vs Y의 비율, 정사각형을 찾고 싶을 때 사용하는 명령어 입니다. 

 

Expand Edge는 선언된 특정 edge layer를 확장하거나 줄일 때 사용합니다. 특정 edge layer를 바깥쪽으로 늘리고 싶을 때는 expand edge A outside by x.xxx 로 입력하면 되고, 안쪽으로 edge를 보내고 싶을 때는 expand edge A inside by x.xxx로 입력을 해줍니다. 그리고, 기준 layer의 비유만큼 expand edge를 하고 싶으면 factor를 사용합니다. 이렇게 키운 layer의 corner를 채우고 싶을 때는 corner fill 명령어를 채워서 corner를 매끄럽게 해줍니다.

 

Size 는 기준 layer를 줄이거나, 키우고 싶을 때 사용하는 명령어 입니다. 혹은 특정 layer의 slit(small space)나 extra layer를 Clean up해서 제거하고 싶은 경우, overunder 나 underover를 해서 채워서 붙이거나, 제거할 수 있습니다. 또한 size의 corner 명령어를 써주면 corner rounding이 생긴 sized polygon을 만들어 낼 수 있습니다.

 

With Width는 기준 target layer가 특정 width size를 가진 polygon을 찾아내고 싶을 때 사용하는 명령어입니다.

Grow 명령어는 기준 target layer에 대해서 Top, Bottom, Right, Left를 각각 원하는 만큼 키우고 싶을 때 사용하는 명령어입니다. 아랫쪽만 x.xxx만큼 키우고 싶은 경우엔, B = Grow A Bottom By x.xxx 로 적어주면 됩니다. 

 

Shrink는 Grow의 반대 방향으로 줄이는 명령어입니다.

Extents 명령어는 기준 layer의 특정 space 만큼 떨어져 있을 때, merge 해버리는 명령어 입니다.  

Extent 명령어는 기준 target layer를 포함하는 전체 면적을 만들어주는 명령어입니다.

Density 명령어는 기준 target layer가 특정 Area에서 얼마만큼의 분포, 영역을 차지하고 있는지를 산출하고 싶을 때 사용하는 명령어입니다. Mask open ratio를 계산하거나, 특정 layer dummy의 density를 알고 싶을 때 사용합니다.

Coin Edge는 기준 target layer와 특정 layer 간의 edge가 서로 맞닿고 있을 때 기준 layer의 edge를 찾아주는 명령어입니다. 그래서 순서가 중요합니다. 

COIN OUTSIDE EDGE는 기준 target layer와 특정 layer와 edge가 맞닿고 있을 때 기준 target의 바깥에 존재하는 edge layer만 뽑아주는 명령어입니다. 

COIN INSIDE EDGE는 COIN OUTSIDE EDGE와 반대로 기준 target layer와 특정 layer의 맞닿는 edge layer가 있을 경우, 안쪽 edge만 찾을 때 사용하는 명령어 입니다. 

Touch Edge는 기준 target layer의 edge와 특정 layer의 edge가 touch하는 경우 기준 target의 Edge layer로 나타내는 명령어입니다. Touch Outside Edge와 Touch Inside Edge 명령어는 기준 target layer의 edge가 outside냐, inside냐에 따라 검출할 수 있는 명령어 입니다. 

Length 명령어는 특정 길이를 지정하여 edge를 찾고 싶을 때 사용하는 명령어 입니다. out layer는 edge base 입니다.

728x90