Coincident Edge, Coincident Inside Edge, Coincident Outside Edge는 두번째 layer의 edge와 일치하는 edge를 찾는다. layer1의 corner와 layer2의 edge가 교차하는 경우는 찾지 못한다. 즉 corner가 접하는 경우는 찾지 못 한다. inside는 interior 방향이 같은 경우이고 outside는 interior 방향이 다른 경우 이다.
선택 된 1, 4, 5, 8, 9, 10, 11, 12,17, 20, 21, 24 edge중 edge의 length가 2.5인 edge만 선택
Detailed syntax
basic syntax에서는 convex endpoint의 각도와 관계없이 endpoint_constraint에 따라 edge를 선택 함. 그러나 detailed syntax에서는 사용자가 원하는 각도로 연결 되어 있는 edge를 선택함. angle은 두개를 지정 해야함.
왜? edge는 항상 두 개의 endpoint를 가지니까. ^^
CONVEX EDGE M2dg ANGLE1 == 90 ANGLE2 == 90
1, 4, 5, 8, 9, 10, 11, 12,20, 24 edge가 선택 됨.
CONVEX EDGE M2dg ANGLE1 >= 90 ANGLE2 == 90
1~8,9~12, 17, 19, 20, 21, 23, 24 edge가 선택 됨.
위 두 예제의 차이점에서 angle에 대한 이해를 할 수 있음.
7번 edge를 예로 들면, 7번과 8번 edge의 각도는 90도이고 6번과 7번의 각도는 270도 이다. (참고. convex edge에서 angle을 측정하는 방법은 붙어있는 edge의 안쪽(interior-facing) 즉 shape의 안쪽의 각도를 측정한다).
첫번째 예제에서는 abutting edge의 두 개의 angle이 모두 90도 이어야 한다. 그래서 7/8 edge는 조건에 맞지만 6/7은 조건에 맞지 않아 선택 되지 않는 것이다.
두번째 예제에서는 abutting edge의 angle이 한쪽은 90도이고 다른 한쪽은 90도와 같거나 크면 되므로 7/8 edge도 조건에 맞고(==90) 6/7 edge도 조건에 맞다(>=90) .
또 다른 예로 18번 edge가 선택 안 된 이유는 붙은 edge의 각도가 모두 90도 보다 크기 때문이다. 만약 18번 edge와 22번 edge를 선택하고 싶으면 다음과 같이 사용하면 된다.
connectivity를 가진 layer에 대해서만 동작함. 즉 CONNECT에 입력 layer가 정의 되어 있어야 한다. 분자와 분모 layer의 area ratio통해 원하는 layer를 찾는 일을 수행함.
- Antenna check - Floating layer check
NET AREA RATIO L1 D1 == 0 L1 : 분자, D1 : 분모, L1/D1의 값이 0인 L1을 출력. L1과 D1의 연결이 없는 L1 출력
NET AREA RATIO L1 L2 D1 == 1 AREA(L1)+AREA(L2) / AREA(D1)의 결과가 1인 경우. layer를 연속으로 여러개 사용한 경우 OVER keyword가 없다면 항상 마지막 layer를 분모 layer로 인식. 출력은 L1 layer.
NET AREA RATIO L1 OVER D1 D2 == 1 NET AREA RATIO L1 D1 D2 == 1 [AREA(L1) / (AREA(D1)+AREA(D2))] AREA(L1) / AREA(D1) + AREA(D2)의 결과가 1인 경우. 이 때 D1 layer가 연결 안되어 있어도 L1과 D2의 ratio가 1이면 L1출력한다.
NET AREA RATIO L1 L2 L3 == 5 [AREA(L3)] [AREA(L3)] => expression. expression을 사용하면 사용자가 지정한 방식대로 area ratio를 계산하고 그 결과를 constraint와 비교 한다. L1과 연결 된 L3 layer의 area가 5인 경우에만 L1을 출력
< 예제 >
// from mentor
Floating_metal1 {
// select gate pins
ngpin = poly INTERACT ngate
pgpin = poly INTERACT pgate
// find all metal1 not connected to at
NET AREA RATIO metal1 ngpin pgpin nsd psd == 0 [COUNT(nsd) + COUNT(psd) + COUNT(ngpin) + COUNT(pgpin) ]
}
An alternate, faster, NET AREA RATIO uses the !!AREA:
NET AREA RATIO metal1 ngpin pgpin nsd psd == 0 [!!AREA(nsd) + !!AREA(psd) + !!AREA(ngpin) + !!AREA(pgpin) ]