정적 CMOS 게이트
4장의 인버터는 pMOS 하나와 nMOS 하나로 된, 가장 작은 정적 CMOS 게이트였다. 이제 트랜지스터를 더 늘려 본다. 스위치를 직렬로 이으면 AND, 병렬로 이으면 OR가 된다. 이 규칙 하나와 "풀업과 풀다운은 서로의 거울상"이라는 원칙 하나만 있으면 NAND, NOR, 그리고 AOI·OAI 같은 복합 게이트를 기계적으로 설계할 수 있다. 하지만 기계적으로 만든 회로가 곧 좋은 회로는 아니다. 직렬로 쌓인 트랜지스터는 느리고, 입력 순서에 따라 지연이 달라지며, 실리콘 위에 어떤 순서로 늘어놓느냐에 따라 면적이 바뀐다. 이 장에서는 스위치를 눌러 보는 데서 출발해, 식 하나를 넣으면 트랜지스터 회로와 레이아웃이 튀어나오는 도구까지 직접 만져 본다.
- 직렬·병렬 스위치로 논리를 만들고, 풀다운 네트워크(PDN)와 풀업 네트워크(PUN)가 쌍대여야 출력이 언제나 정확히 하나로 정해지는 이유를 설명한다.
- 임의의 반전 함수 \(\overline{F}\)를 한 단짜리 복합 게이트로 바꾸고, 정적 CMOS 게이트가 반전형일 수밖에 없는 이유를 안다.
- 직렬 스택을 넓혀 단위 인버터와 같은 구동력을 맞추고, 팬인이 늘면 지연이 제곱으로 늘어나는 이유와 입력 순서·스택 효과를 엘모어 모델로 이해한다.
- 스틱 다이어그램과 공통 오일러 경로로 확산 영역이 끊기지 않는 셀 레이아웃을 찾고, 표준 셀 라이브러리의 크기·논리적 노력 감각을 익힌다.
직렬은 AND, 병렬은 OR
3장에서 우리는 MOSFET을 전압으로 여닫는 스위치로 보기로 했다. nMOS는 게이트가 1일 때 닫히고(통하고), pMOS는 게이트가 0일 때 닫힌다. 스위치 여러 개를 엮으면 두 단자 사이가 통하는지가 입력의 논리 함수가 된다. 규칙은 두 가지뿐이다.
- 직렬(Series): 모든 스위치가 닫혀야 통한다 → AND.
- 병렬(Parallel): 하나라도 닫히면 통한다 → OR.
이 두 규칙을 겹겹이 쓰면 직렬 안에 병렬, 병렬 안에 직렬이 들어간 직병렬 네트워크(Series-parallel network)가 된다. 이런 네트워크가 통하는 조건은 언제나 AND와 OR만으로 된 식, 즉 괄호 구조가 회로 구조와 똑같은 식으로 쓸 수 있다. 1938년 섀넌(Claude Shannon)이 석사 논문에서 계전기 회로와 불 대수가 같은 것임을 보인 바로 그 관찰이다.
스위치 네트워크 하나는 "통한다/안 통한다"만 알려 준다. 하지만 논리 게이트의 출력은 1 또는 0이라는 전압이어야 한다. 그래서 CMOS 게이트는 네트워크를 두 개 쓴다. 하나는 출력을 \(V_{DD}\)로 끌어올리고, 다른 하나는 GND로 끌어내린다. 둘이 언제 통하는지를 잘 맞춰 주는 것이 이 장 전체의 주제다.
여기서는 트랜지스터를 이상적인 스위치로 본다. 켜지면 저항 \(R\), 꺼지면 무한대. 이 모델로 논리 기능과 대략의 지연(6장)까지 설명할 수 있다. 정확한 전압 파형은 3장의 알파 전력 법칙이나 SPICE가 필요하다. 그리고 nMOS는 0을 잘 전달하지만 1은 \(V_{DD}-V_t\)까지만 전달하고, pMOS는 반대라는 점(3장)이 곧 중요해진다.
풀업·풀다운 네트워크의 쌍대성
정적 CMOS 게이트는 출력 노드 하나에 두 네트워크를 매단다.
- 풀다운 네트워크(Pull-down network, PDN): 출력과 GND 사이의 nMOS 묶음. nMOS는 0을 강하게 전달하므로 내려 끌기에 알맞다.
- 풀업 네트워크(Pull-up network, PUN): \(V_{DD}\)와 출력 사이의 pMOS 묶음. pMOS는 1을 강하게 전달한다.
원하는 출력이 \(Y = \overline{F}\)라고 하자. 출력이 0이어야 하는 조건이 \(F=1\)이므로 PDN은 \(F\)가 1일 때 통해야 한다. nMOS는 입력이 1일 때 켜지므로 \(F\)의 식을 그대로 직렬(AND)·병렬(OR)로 옮기면 된다. 반대로 PUN은 \(F=0\), 즉 \(\overline{F}=1\)일 때 통해야 한다. pMOS는 입력이 0일 때 켜지므로 PUN이 통하는 조건은 반전된 입력들의 식이다. 드모르간 법칙을 쓰면 이것은 같은 식에서 AND와 OR를 맞바꾼 것이 된다.
그러니 규칙은 단순하다. PDN을 \(F\)대로 짓고, PUN은 그 직렬·병렬을 맞바꿔 pMOS로 짓는다. NAND2는 \(F = A\cdot B\)이므로 nMOS 둘이 직렬, pMOS 둘이 병렬이다. NOR2는 \(F=A+B\)이므로 그 반대다. 아래 그림에서 입력을 바꾸며 어느 쪽 네트워크가 출력을 붙잡는지 보자.
쌍대 구조가 주는 선물은 두 가지다. 첫째, 어느 입력 조합에서도 두 네트워크 중 정확히 하나만 통한다. 둘 다 통하면 \(V_{DD}\)에서 GND로 곧장 전류가 흐르는 단락이 생기고 출력은 중간 어딘가(X)가 된다. 둘 다 안 통하면 출력은 아무 데도 연결되지 않고 떠 있는(Z) 상태가 되어, 커패시터에 남은 전하에 기대 값을 겨우 유지하다가 누설로 흐려진다. 쌍대 구조는 수학적으로 \(F\)와 \(\overline{F}\)를 나눠 갖으므로 이 두 사고가 원천적으로 생기지 않는다. 둘째, 정지 상태에서 \(V_{DD}\)–GND 사이에 길이 없으므로 정적 전력이 (누설을 빼면) 0이다. 출력은 항상 레일 하나에 낮은 저항으로 묶여 있어 잡음에 강하고, 4장의 인버터처럼 매 단마다 신호를 0 V와 \(V_{DD}\)로 되살린다. 이것이 "정적"(Static) CMOS라는 이름의 뜻이다.
NAND3의 PUN은 pMOS 세 개가 병렬이다. 입력 A에 달린 pMOS가 끊겼다(늘 꺼짐). 진리표의 어느 행에서 문제가 생기고, 출력은 어떻게 될까?
답 보기
A=0이고 B=C=1인 한 행에서만 문제가 생긴다. 이때 PDN은 A가 꺼져 있어 안 통하고, PUN에서 켜져야 할 pMOS는 A의 것 하나뿐인데 끊겨 있으니 PUN도 안 통한다. 출력은 떠 있는 Z가 되어 직전 값을 잠시 기억한다. 직전에 0이었다면 0이 남아 틀린 값이 나온다. 조합 회로가 기억을 갖게 되는 이 고장을 고착 개방 고장(Stuck-open fault)이라 하며, 두 패턴을 연달아 넣어야 잡을 수 있어 테스트가 까다롭다(16장).
복합 게이트: 식 하나에서 트랜지스터 회로로
쌍대 규칙은 NAND·NOR에서 멈출 이유가 없다. \(F\)가 AND와 OR의 어떤 조합이든 PDN을 그 모양대로, PUN을 직렬·병렬을 맞바꾼 모양대로 지으면 한 단짜리 게이트가 된다. 이런 게이트를 복합 게이트(Complex gate)라 하고, 특히 AND들의 OR를 반전하는 것을 AOI(AND-OR-Invert), OR들의 AND를 반전하는 것을 OAI(OR-AND-Invert)라 부른다. 이름 뒤 숫자는 각 묶음의 입력 수다. AOI21은 \(\overline{A\cdot B + C}\), OAI22는 \(\overline{(A+B)\cdot(C+D)}\)다.
AOI21을 NAND·NOR로 따로 만들면 AND2(6개) + NOR2(4개) = 트랜지스터 10개에 두 단이지만, 복합 게이트로는 6개에 한 단이다. 아래 시뮬레이터에 프리셋을 고르거나 식을 직접 써 넣으면 PDN과 PUN이 자동으로 지어진다. 식에서 AND는 ·, *, & 또는 붙여 쓰기, OR는 +나 |, 입력 이름은 A~F다. 식은 반전 전의 \(F\)이고, 출력은 언제나 \(Y=\overline{F}\)다.
복합 게이트 생성기: \(Y=\overline{F}\)의 PDN·PUN
시뮬레이터에서 확인할 수 있는 성질을 정리해 보자.
- 트랜지스터 수는 언제나 입력 리터럴 수의 2배다. 식에 변수가 \(k\)번 나오면 nMOS \(k\)개, pMOS \(k\)개. 반전 캐리처럼 같은 입력이 두 번 나오면 그 입력은 트랜지스터 네 개의 게이트를 구동하고, 그만큼 논리적 노력이 커진다.
- PDN에서 직렬로 깊은 쪽은 PUN에서 병렬로 넓다. AOI21의 A·B는 PDN에서 2단 직렬, C는 1단. PUN에서는 (A‖B)와 C가 직렬이라 pMOS 쪽 최장 직렬은 2다.
- "같은 구조"의 실수를 고르면 NAND2에서는 A≠B인 두 행에서 아무 네트워크도 통하지 않아 Z가 되고, AOI21에서는 A=B=1, C=0일 때 두 네트워크가 동시에 통해 X(단락)가 된다. 쌍대 구조는 모든 \(2^n\)행에서 X와 Z가 0개임을 시뮬레이터가 직접 세어 준다.
\(Y=\overline{A\cdot\overline{B}}\)처럼 입력 리터럴 자체가 반전되어 있으면, 그 반전을 만들 인버터가 앞에 필요하다. 한 단짜리 정적 CMOS 게이트는 모든 입력에 대해 단조 감소(Negative unate)한다. 입력 하나를 0→1로 올리면 nMOS는 켜지기만 하고 pMOS는 꺼지기만 하므로 출력은 내려가거나 그대로일 뿐 올라갈 수 없다. XOR처럼 단조가 아닌 함수는 그래서 한 단 정적 CMOS로 바로 만들 수 없고, 반전 입력을 함께 받거나(트랜지스터 12개 정도) 7장의 전송 게이트를 쓴다. 시뮬레이터에 !나 '를 넣으면 이 이유로 거절한다.
왜 CMOS 게이트는 반전형인가
앞 절의 성질을 뒤집어 말하면, 한 단 정적 CMOS 게이트는 반전형이다. NAND와 NOR는 트랜지스터 4개로 한 단에 되지만, AND와 OR는 NAND·NOR 뒤에 인버터를 붙여 6개, 두 단이 된다. 그렇다면 nMOS를 위에, pMOS를 아래에 두어 반전 없이 AND를 바로 만들 수는 없을까? 회로로는 그릴 수 있다. 위쪽에 nMOS 직렬(A·B일 때 통함), 아래쪽에 pMOS 병렬(A나 B가 0이면 통함). 논리는 맞다. 문제는 전압이다.
nMOS가 1을 넘기려 하면, 출력이 \(V_{DD}-V_t\)에 이르는 순간 \(V_{GS}\)가 \(V_t\)로 줄어 스스로 꺼진다. 그래서 nMOS는 약한 1, pMOS는 약한 0만 전달한다(3장). DG-7에서 그 값은 0.45 V와 0.30 V로, 0.75 V의 60%와 40%다. 다음 단 인버터는 이 애매한 전압을 받아 pMOS와 nMOS가 함께 반쯤 켜진 채로 정적 전류를 흘리고, 몇 단을 거치면 논리값이 사라진다. 이것이 nMOS를 풀다운에만, pMOS를 풀업에만 쓰는 이유이고, 그 결과 입력이 오르면 출력이 내리는 반전이 피할 수 없게 된다.
그래서 설계자는 반전을 적이 아니라 재료로 쓴다. 합성 도구는 AND-OR 식을 NAND-NAND로 바꾸고(드모르간), 두 단마다 반전이 상쇄되게 짝을 맞춘다. 11장의 덧셈기는 캐리 사슬에서 단마다 극성을 번갈아 뒤집어 인버터를 아예 없앤다. 표준 셀 라이브러리에 AND2가 있어도, 그 안을 열어 보면 NAND2와 인버터가 들어 있다.
nMOS와 pMOS를 나란히 붙인 전송 게이트(Transmission gate)는 양쪽이 약한 값을 서로 보완해 0과 1을 모두 온전히 전달한다. 그래서 MUX나 XOR는 전송 게이트로 비반전 구조를 만들 수 있다. 다만 신호를 되살리지(재생하지) 않아 여러 단을 이어 붙이면 지연이 길이의 제곱으로 늘어난다. 7장에서 다룬다.
크기 조절: 스택을 넓혀 구동력 맞추기
트랜지스터는 켜졌을 때 저항이다. 폭이 \(W\)인 nMOS의 저항은 \(R/W\)이고, 같은 폭 pMOS는 정공 이동도가 낮아 \(\mu R/W\)다. DG-7에서 \(\mu \approx 1.6\)이다(오래된 평면 공정에서는 2~3, 핀펫에서는 1에 가까워지는 추세). 4장의 단위 인버터는 nMOS 폭 1, pMOS 폭 \(\mu\)로 위아래 저항을 모두 \(R\)로 맞췄다. 게이트의 지연을 예측 가능하게 하려면, 모든 게이트가 최악의 입력 조합에서도 단위 인버터만큼의 구동력을 내도록 크기를 정하는 것이 출발점이다.
직렬로 \(k\)개가 쌓이면 저항이 \(k\)배가 된다. 그러니 각 트랜지스터를 \(k\)배 넓힌다. 병렬은 최악의 경우 하나만 켜지므로 넓힐 필요가 없다.
결과는 교과서의 유명한 숫자들이다. μ=2일 때 NAND2는 nMOS 2·pMOS 2로 \(g=4/3\), NOR2는 nMOS 1·pMOS 4로 \(g=5/3\)이다. DG-7(μ=1.6)에서는 NAND2가 nMOS 2·pMOS 1.6으로 \(g\approx1.38\), NOR2는 nMOS 1·pMOS 3.2로 \(g\approx1.62\)다. 같은 일을 하는데 NOR가 더 비싸다. pMOS가 약한데 그 pMOS를 직렬로 쌓기 때문이다. 그래서 회로 설계자와 합성 도구는 NAND를 NOR보다 선호하고, 4입력 이상의 NOR는 라이브러리에 아예 없는 경우가 많다.
위 크기는 "상승과 하강이 똑같이 단위 인버터만큼"이라는 기준이다. 실제로는 pMOS를 조금 덜 넓혀 면적과 입력 커패시턴스를 아끼는 편이 평균 지연에 유리한 경우가 많다(인버터에서 \(W_p/W_n\approx\sqrt{\mu}\)가 평균 지연 최소). 또 핀펫 공정에서는 폭이 핀 개수로 양자화되어 1.6배 같은 값을 정확히 만들 수 없다. 이런 미세 조정과 경로 전체의 최적화는 6장의 논리적 노력에서 다룬다.
스택 효과와 팬인
앞 절의 크기 조절은 직렬 스택의 저항을 보상했다. 하지만 스택에는 공짜로 생기는 것이 또 있다. 트랜지스터 사이의 내부 노드다. 각 내부 노드에는 위아래 트랜지스터의 확산 영역 커패시턴스가 달려 있고, 출력이 내려갈 때 이 노드들도 함께 방전되어야 한다. 6장에서 자세히 다룰 엘모어 지연(Elmore delay)을 미리 써 보자. RC 사다리의 지연은 각 커패시터에 "그 노드에서 접지까지의 저항"을 곱해 더한 것이다.
팬인(Fan-in) \(N\)을 늘리면 세 가지가 함께 나빠진다. 내부 노드 항이 \(N^2\)으로 늘고, 출력 노드에 붙는 병렬 pMOS의 드레인이 \(N\)으로 늘고, 각 입력이 보는 커패시턴스 \(N+\mu\)도 늘어 앞 단을 느리게 한다. 그래서 큰 팬인 게이트는 작은 게이트의 트리로 쪼개는 것이 빠르다. NAND8 하나 대신 NAND2→NOR2→NAND2 세 단으로 만드는 식이다.
교육용 모델로는 N=3~4 근처에서 트리가 단일 게이트를 따라잡는다. 실제 라이브러리도 비슷해서 NAND는 4입력, NOR는 3입력 정도에서 멈춘다(NOR는 pMOS 스택 때문에 더 일찍). 더 큰 팬인은 합성 도구가 알아서 트리로 쪼갠다.
NAND4는 트랜지스터 8개다. (A·B)와 (C·D)를 NAND2로 만들고, 두 결과를 NOR2로 합치면 무엇이 나오고, 트랜지스터는 몇 개가 될까?
답 보기
NOR2(\(\overline{AB}, \overline{CD}\)) \(= AB\cdot CD\), 즉 AND4가 나온다. NAND4를 원하면 인버터 하나(2개)를 더 붙여야 한다. 4+4+4+2 = 14개로 단일 NAND4(8개)보다 많다. 대신 단마다 스택이 2로 짧아 큰 부하를 구동할 때 더 빠르다. 극성이 AND로 충분한 곳이라면 12개 두 단으로 끝난다. 면적과 속도를 맞바꾸는 전형적인 예다.
스택에는 좋은 면도 있다. 직렬로 쌓인 트랜지스터가 모두 꺼져 있으면, 누설 전류가 흐르면서 중간 노드 전압이 살짝 올라간다. 그러면 위쪽 트랜지스터는 \(V_{GS}\)가 음수가 되고 \(V_{DS}\)가 줄어 DIBL(Drain-induced barrier lowering)까지 약해지므로, 누설이 단일 트랜지스터보다 몇 배에서 열 배 이상 줄어든다. 이것을 스택 효과(Stack effect)라 한다.
스택 효과는 누설 전력 관리의 중요한 도구다. 대기 상태에서 NAND 게이트의 입력을 모두 0으로 만드는 입력 벡터 제어, 일부러 트랜지스터를 둘로 나눠 쌓는 스택 강제(Stack forcing), 그리고 극단적으로는 전원 자체에 큰 트랜지스터를 직렬로 넣는 전원 게이팅이 모두 같은 원리다. 15장에서 다시 만난다.
입력 순서와 패턴 의존 지연
논리적으로 NAND3의 세 입력은 완전히 대칭이다. A·B·C = C·B·A. 하지만 회로에서 스택의 어느 자리에 있느냐에 따라 지연이 다르다. 출력이 1에서 0으로 떨어지는 순간을 생각해 보자. 마지막으로 도착한 입력이 켜지기 전에, 나머지 두 트랜지스터는 이미 켜져 있다.
- 늦은 입력이 맨 위(출력 쪽)에 있으면, 그 아래 내부 노드들은 이미 켜진 트랜지스터를 통해 GND로 방전되어 있다. 마지막 입력이 켜지면 출력 노드만 방전하면 된다.
- 늦은 입력이 맨 아래(GND 쪽)에 있으면, 그 위의 내부 노드들은 출력과 연결되어 \(V_{DD}-V_t\) 가까이 충전되어 있다. 이제 출력과 내부 노드 전부를 한꺼번에 방전해야 한다.
그러니 설계 규칙은 가장 늦게 도착하는 임계 신호를 출력에 가장 가까운 트랜지스터에 연결하는 것이다. 표준 셀 라이브러리는 같은 NAND3라도 핀마다 지연 표를 따로 갖고 있고(A 핀이 보통 출력 쪽), 정적 타이밍 분석은 핀별 지연을 쓴다. 합성·배치 도구는 논리적으로 대칭인 핀을 서로 바꿔 임계 경로를 빠른 핀에 다는 핀 교환(Pin swapping)을 한다.
같은 게이트의 지연이 다른 입력들의 과거 값에 따라서도 달라진다는 점에 주의하자. 출력이 올라갈 때도 마찬가지다. NAND의 pMOS 병렬에서 입력 하나만 0으로 떨어지면 pMOS 하나가 출력을 끌어올리지만, 둘 다 떨어지면 두 개가 함께 끌어올려 더 빠르다. 이렇게 입력 패턴에 따라 달라지는 지연을 패턴 의존 지연(Data-dependent delay)이라 하고, 타이밍 분석은 그중 최악을 가정한다.
레이아웃: 스틱 다이어그램과 오일러 경로
회로도는 연결만 말해 준다. 실리콘 위에서는 트랜지스터를 어떤 순서로 늘어놓느냐가 면적을 정한다. 표준 셀의 전형적인 배치는 이렇다. 위에 \(V_{DD}\) 레일, 아래에 GND 레일, 그 사이에 pMOS가 놓일 p형 확산 띠 하나와 nMOS가 놓일 n형 확산 띠 하나를 가로로 깔고, 폴리실리콘 게이트를 세로로 지나가게 한다. 세로 폴리 하나가 p 띠와 n 띠를 동시에 가로지르면, 같은 입력을 받는 pMOS와 nMOS가 한 번에 만들어진다. 이렇게 층을 선으로만 그린 그림을 스틱 다이어그램(Stick diagram)이라 한다.
이웃한 두 트랜지스터가 노드 하나를 공유하면, 그 사이 확산 영역을 끊지 않고 이어 쓸 수 있다. 끊으면 확산 간격 규칙 때문에 폴리 피치 하나만큼 폭이 늘고 커패시턴스도 커진다. 그래서 질문은 이렇게 바뀐다. 모든 트랜지스터를 한 번씩 지나가면서, 지나가는 순서마다 이웃끼리 노드를 공유하는 길이 있는가? 네트워크를 노드는 꼭짓점, 트랜지스터는 변인 그래프로 보면, 이것은 모든 변을 한 번씩 지나는 오일러 경로(Euler path) 문제다. 그리고 폴리가 위아래를 함께 지나가므로 PUN과 PDN 그래프에서 입력 순서가 같은 오일러 경로를 찾아야 한다.
오일러 경로로 셀 레이아웃 짓기
AOI22를 "식에 쓴 순서 그대로"(A, B, C, D)로 놓으면 PDN에서 B 다음의 GND와 C의 OUT이 이어지지 않아 n 띠가 끊긴다. A, B, D, C로 바꾸면 PDN은 OUT–A–B–GND–D–C–OUT, PUN은 같은 순서로 한 줄에 이어져 끊김이 사라진다. 반면 AOI221(\(\overline{AB+CD+E}\))은 도구가 모든 순서를 시도해도 한 번은 끊긴다. PUN 그래프에서 OUT의 차수가 1이라 E가 반드시 경로의 한쪽 끝에 와야 하고, 홀수 차수인 다른 꼭짓점이 반대쪽 끝을 정해 버린다. 각 그래프에 오일러 경로는 따로 있지만, 이 제약을 만족하는 순서가 PDN 쪽에서는 이어지지 않는다. 이럴 때는 끊김을 받아들이거나, 트랜지스터를 둘로 나누거나, 식을 다른 등가형으로 바꾼다.
표준 셀은 모두 높이가 같아서 한 줄로 이어 붙이면 전원 레일이 저절로 이어진다. 높이는 가로 금속(보통 M2) 배선 피치의 배수로 재며 "7.5트랙 셀", "6트랙 셀"처럼 부른다. 7 nm급에서 M2 피치가 약 36~40 nm이면 7.5트랙 셀의 높이는 약 0.27 µm다. 폭은 폴리 피치(CPP, 약 54~57 nm, 2018년경)의 배수로 정해진다. 트랙 수를 줄이면 셀은 작아지지만 핀 수(트랜지스터 폭)가 줄고 셀 안 배선 자원이 모자라 배선이 어려워진다. 이 위에 셀을 배치하고 배선하는 흐름은 DesignBook에서 다룬다.
실제 수치: 표준 셀 라이브러리 들여다보기
표준 셀 라이브러리에는 이 장에서 만든 게이트들이 여러 구동 세기(×1, ×2, ×4 …)로 들어 있다. 아래 표는 각 게이트의 트랜지스터 수, 7 nm급 공개 교육용 라이브러리(ASAP7 계열, 2016년~)에서의 대략적인 셀 폭(폴리 피치 수), 그리고 이 장의 크기 규칙으로 계산한 논리적 노력이다. DG-7 열은 \(\mu=\)1.6으로 스크립트가 직접 계산한 값이다.
| 셀 | 기능 Y | 트랜지스터 | 셀 폭 (CPP, 약) | g (μ=2) | g (DG-7) | 기생 p (μ=2, 대략) |
|---|---|---|---|---|---|---|
| INV | \(\overline{A}\) | 2 | 3 | 1 | 1 | |
| NAND2 | \(\overline{AB}\) | 4 | 4 | 4/3 | 2 | |
| NAND3 | \(\overline{ABC}\) | 6 | 5 | 5/3 | 3 | |
| NAND4 | \(\overline{ABCD}\) | 8 | 6 | 2 | 4 | |
| NOR2 | \(\overline{A+B}\) | 4 | 4 | 5/3 | 2 | |
| NOR3 | \(\overline{A+B+C}\) | 6 | 5 | 7/3 | 3 | |
| AOI21 | \(\overline{AB+C}\) | 6 | 5 | A,B: 2 · C: 5/3 | 7/3 | |
| OAI21 | \(\overline{(A+B)C}\) | 6 | 5 | A,B: 2 · C: 4/3 | 7/3 | |
| AOI22 | \(\overline{AB+CD}\) | 8 | 6 | 2 | 4 | |
| XOR2 | \(A\oplus B\) | 8~12 | 8~10 | ≈4 | — | 4~6 |
| MUX2 | \(S?B:A\) | 10~12 | 8~10 | ≈2 | — | 4 |
| D 플립플롭 | \(Q\leftarrow D\) | ≈20~24 | ≈18~22 | — | — | — |
표에서 읽을 감각은 세 가지다. 첫째, 셀 폭은 트랜지스터 수보다 천천히 는다. 오일러 경로 덕분에 트랜지스터 한 쌍이 폴리 피치 하나를 차지하고, 셀 경계와 출력 접점 몫만 더해진다. 둘째, NOR는 같은 팬인의 NAND보다 논리적 노력이 크고, 그 차이는 μ가 클수록 벌어진다. 핀펫으로 μ가 1에 가까워지면서 NOR의 불리함이 다소 줄었다. 셋째, XOR·MUX·플립플롭처럼 한 단 정적 CMOS로 바로 안 되는 셀은 트랜지스터가 훨씬 많다. 이 g와 p 값이 6장의 논리적 노력 계산의 재료다.
셀 폭은 라이브러리와 구동 세기, 트랙 높이에 따라 크게 다르고, 실제 라이브러리는 핀 접근성 때문에 일부러 폭을 늘리기도 한다. 기생 지연 p는 확산 공유 여부와 배치에 따라 달라 교과서는 보통 "입력 수 × 인버터 기생" 정도로 근사한다(Weste & Harris). 실제 설계에서는 라이브러리의 Liberty 타이밍 표를 쓴다.
핵심 정리
- 스위치를 직렬로 이으면 AND, 병렬로 이으면 OR다. 정적 CMOS 게이트는 nMOS 풀다운 네트워크와 pMOS 풀업 네트워크 두 개로 출력을 정한다.
- \(Y=\overline{F}\)를 만들려면 PDN을 \(F\)대로, PUN을 직렬·병렬을 맞바꾼 쌍대로 짓는다. 그러면 모든 입력 조합에서 정확히 한 네트워크만 통해 단락(X)도 떠 있는 출력(Z)도 없고, 정적 전력은 누설뿐이다.
- nMOS는 약한 1, pMOS는 약한 0을 전달하므로 한 단 정적 CMOS 게이트는 반전형(단조 감소)이다. NAND·NOR는 4개 한 단, AND·OR는 6개 두 단이며, AOI·OAI 복합 게이트는 한 단에 여러 논리를 담는다.
- 직렬 \(k\)개는 폭을 \(k\)배로 넓혀 단위 인버터의 구동력을 맞춘다(pMOS는 추가로 μ배). 그 결과 논리적 노력은 NAND2 \((2+\mu)/(1+\mu)\), NOR2 \((1+2\mu)/(1+\mu)\)로 NAND가 유리하다.
- 팬인이 늘면 내부 노드 방전 때문에 지연이 \(N^2\)으로 늘어 큰 팬인은 트리로 쪼갠다. 직렬로 모두 꺼진 스택은 누설이 몇~수십 배 줄어든다(스택 효과).
- 임계(가장 늦은) 입력은 출력에 가장 가까운 트랜지스터에 단다. 지연은 핀과 입력 패턴에 따라 다르다.
- PUN과 PDN 그래프의 공통 오일러 경로 순서로 폴리를 늘어놓으면 확산이 끊기지 않아 셀 폭이 최소가 된다. 표준 셀은 높이(트랙 수)가 같고 폭은 폴리 피치의 배수다.
확인 퀴즈
Q1. \(Y=\overline{(A+B)\cdot C}\)인 OAI21의 풀업 네트워크(pMOS)는 어떤 구조인가?
Q2. 한 단 정적 CMOS 게이트로 바로 만들 수 없는 함수는?
Q3. μ=2인 공정에서 단위 인버터(nMOS 1, pMOS 2)와 같은 구동력을 내도록 NOR3의 크기를 정하면 각 pMOS의 폭은?
Q4. NAND3에서 가장 늦게 도착하는 신호는 어느 트랜지스터에 연결해야 출력 하강 지연이 가장 짧은가?
Q5. 팬인 N인 NAND의 지연에서 N²에 비례해 늘어나는 항은 주로 무엇에서 오는가?
Q6. 레이아웃에서 PUN과 PDN 그래프의 공통 오일러 경로를 찾는 목적은?