본문 바로가기

Digital Design

CMOS gate의 static delay (1) - Propagation delay

#delay시리즈
#DegitalDesign





디지털 회로 설계에서 회로의 기능 구현 (Function) 뿐만 아니라 Delay(Timing)와 Power 또한 Digital System의 스펙이다.
 
예를 들어 Adder를 설계한다고 하면,
Output 은 두 input의 Sum이라는 기능적인 스펙은 반드시 갖춰야 할 뿐만 아니라
 

아웃풋이 1ns내에 stable 해져야 한다<- 같은 delay 조건이나
각 add 연산은 2pJ 를 넘으면 안된다 <- 와 같은 power 조건 또한
 

디자인의 스펙이다.
 
 

delay시리즈에서는 CMOS logic circuit의 delay를 추정하기 위한 여러 방법들을 유도할 것이다.
 
 

그 여정의 첫번째 포스팅!!
함께 하시죠!!



Propagation Delay

우선 우리는 logic path(쉽게 말해 로직 연산을 수행하는 signal path)의 delay에 관해서 다룰 것이므로,
 

여러 delay 모델 중에서 propagation delay를 가장 먼저 살펴보도록 하자.




디지털 회로에서 propagation delay는 다른 말로 "gate delay"이다.
 
"gate에 (유효한) 인풋이 인가되고 나서 안정적인 아웃풋이 나오기까지의 딜레이"
 
라고 생각하면 된다.




이런 딜레이가 왜 생길까?
CMOS Gate의 transistor level schematic 을 본 적이 있습니까?





안정된 신호가 입력으로 인가되고
출력 로드 커패시터가 완전히 충전되고
혹은 완전히 방전되기까지 걸리는 딜레이가
바로 propagation delay입니다.
 
 
출력 로드 커패시터가 충전될 때는 Pull Up Network가 연결되어 Vdd가 output 노드를 충전시킵니다.
출력 로드 커패시터가 방전될 때는 Pull Down Network가 연결되어 Gnd가 output 노드를 방전시킵니다. 
 
 

전자공학과 학생이라면 살면서 한 번쯤은 들어봤을 RC delay..

여기선 gate의 input resistance와
Gate output node의 load capacitance로
propagation delay를 모델링할 수 있겠네요.



Propagation Delay의 계산

 
 

 logic gate의 propagation delay는 
입력 전압이 변할 때, 그 전압이 입력전압 범위의 1/2 지점이 된 시점과
출력 전압이 변할 때, 그 전압이 출력전압 범위의 1/2 지점이 된 시점 사이의 시간차이다.
 
위 그림을 보면 이해가 쉽게 되는데, 
a가 0에서 1로 변한다고 할 때, 0.5가 되는 시점과
인버터의 출력인 bN이 a 입력의 영향을 받아서 1에서 0으로 변하는 도중에 0.5가 되는 시점
그 두 시점 사이의 시간 차이가 바로 propagation delay이다.
 
출력 전압이 1에서 0으로 갈 때는 falling propagation delay이고,
출력 전압이 0에서 1로 변할 때는 rising propagation delay이다. 
 


cf ) CMOS가 왜 CMOS인지는 아십니까??
 


CMOS의 C는 complementary의 C인데,
PMOS와 NMOS 두 종류의 MOS Transistor를 사용해서 구현을 하기 때문이에요.
이 두 종류의 트랜지스터는 서로 상호보완적으로 동작하고요.

아웃풋 노드의 충전은 PMOS로 구성된 pull-up network가 담당하고요
아웃풋 노드의 방전은 NMOS로 구성된 pull-down network가 담당합니다.
pull-up network가 켜져 있을 땐, pull-down network가 차단됩니다.
반대도 마찬가지입니다.
complementary의 뜻이 와닿으시나요??


 
 
 
 
 
 

falling propagation delay vs. rising propagation delay


그런데 output node가 rising(충전)일 때와 falling(방전)일 때의 delay는 다릅니다.
이유는 pmos와 nmos의 driving strength가 다르기 때문이에요.
transistor를 같은 size로 만들어도 nmos와 pmos가 흘리는 전류가 달라요.
nmos가 좀더 전류를 잘 흘려요.
이유는 말이죠..
 

nmos의 캐리어(채널을 구성하는 전하)는 전자이고 pmos의 캐리어는 홀(정공)인데,  
전자의 운동성(mobility)이 홀보다 좋습니다.
 
따라서 전류를 더 잘 흘림
( 죽을 때 까지 우리를 괴롭히는 반도체공학… )
 
 


아무튼….
여기까지 정리해보면
같은 width로 ( length는 공정 최소라고 가정 ) pull up network와 pull down network를 만들었을 때, pull down network의 falling propagation delay가 더 작겠네요.
 
쉽게 말해  인버터의 nmos와 pmos width를 같게 그리면 
1->0으로 갈 때 delay가 0->1로 갈때 delay보다 짧음 ㅋㅅㅋ
 
 
 



잠깐만요 !! 더 많은 전류를 흘린다는 것은 모스의 입력 저항이 작다고 볼 수 있겠네요
V=IR
게이트 입력 전압 = (tr에 흐르는 전류) x (게이트 출력 저항)
(앞으로 자주 등장할 게이트 출력 저항은 실제 저항(물리적 소자)이라고 생각하지 마시고,
입력 전압과 모스펫 드레인 전류 사이의 관계정도로만 생각해주세요.
추상적인 개념 (전압전류비)을 저항으로서 모델링 한 것입니다.
내가 입력전압을 얼마 주었더니, 얼마만큼의 전류가 흐르더라? 이걸 V=IR에 대입하면?
게이트 출력저항이 나오네??? 라고 생각해보세용 ~~~~~~ )  




RC time constant로써 propagation delay.

Mos Transistor의 propagation delay는 다음 회로모델의 RC delay로 표현할 수 있는데,
여기서 R은 (위에서 설명한 것처럼) driving gate의 출력저항이고,
C는 연결된 load들의 입력 커패시턴스입니다.
( 출력 노드에 연결된  또다른 게이트들의 input capacitance를 충/방전 시켜야 하니까 ) 
 
 
따라서 gate delay를 계산할 때, gate 자체만으로 delay를 구하는 것은 불가능합니다.
output load를 알아야 합니다. 
gate delay는 output load의 함수입니다.
 
 
 
 

falling propagation delay와 rising propagation delay의 계산


따라서 다음 계산에서는 아래와 같은 가정을 하고 delay를 계산할거에요.
 
 
- pull-up network의 pmos width는 Wp이다.
    - Wp는 TR의 width가 공정 최소 width인 Wmin = 8Lmin (Lmin은 공정 최소 Length)의 몇 배인지를 뜻함.  
- pull-down network의 nmos width는 Wn이다.
    - Wn은 TR의 width가 공정 최소 width인 Wmin의 몇 배인지를 뜻함. 
- 위와 같은 사이즈로 만든 inverter가 나란히 연결되어 있다.
- 첫번째 inverter가 두번째 inverter를 구동한다.

 
 

 
 
 
이제 falling과 rising일때의 RC delay를 계산해봅시다. 계산이 복잡하니까 잘 따라오세요...
 
 

 
 
1. RC Delay 계산을 위해 필요한 출력 로드의 input cap "C"
 
- 출력 노드의 input cap은 fallin / rising delay에서 공통 성분임. (falling rising은 저항만 달라짐 )
두번째 inverter(load)의 input capacitance는 nmos와 pmos의 병렬 연결이므로, 
Cinv = (Wp + Wn) C_G 로 나타낼 수 있다.
    - C_G는 Wmin Lmin일 때 gate capacitance를 뜻함. 
 
2.  RC Delay 계산을 위해 필요한 Driving Inverter의 output resistance "C"
Pull-up Network 저항은 Rp = K_Rp / Wp = Kp * K_Rn / Wp 이다.
    * K_Rp , K_Rn : 단위 면적당 저항(ohms per square).  PMOS NMOS 저항이 다르므로 각각.  
    * Kp =  K_Rp / K_Rn ... 즉, NMOS에 비해 PMOS 저항이 얼마나 더 큰 지 ratio를 나타냄.
 
이해가 좀 어려울 수 있는데, PMOS width는 Wmin 보다 Wp배 더 길어짐
즉 저항은 단위 저항보다 Wp 배 작아짐.
저항은 length가 길면 커지고, width가 길면 더 작아지므로 ㅎㅎ 
 
1, 2에서 구한 내용을 RC circuit으로 그려서 나타내볼게요 ㅎㅎ 
 
 

 따라서 그림 c로부터 rising delay를 구하면
tpr = Rp * Cinv = ( Kp * K_Rn * (Wp+ Wn ) * C_G) / Wp
 
그림 d로부터 falling delay를 구하면
tpf = Rn * Cinv = (K_Rn * (Wp + Wn )* C_G) / WN
 
 

 
 
 
 
falling과 rising delay를 같게 하기 위한 조건

 
우리는 되도록이면 CMOS 설계를 할 때, falling delay와 rising delay를 같게 설계하길 원할거예요.
 
그러니까 위에서 구한 수식에서 tpr = tpf로 놓고 풀면
 
Wp = Kp * Wn 이라는 조건이 나옵니다.
 
즉 PMOS가 NMOS보다 저항이 큰 만큼, 딱 그만큼 넓게 그려줍니다.
 
( 그럼 Rn = Rp 가 됩니당 )  
 
 

Inverter의 Propagation Delay

Wp = Kp * Wn으로 설정하니까 
 
우리가 위에서 풀었던 문제가 훨씬 단순해졌어요.
 
인버터의 propagation delay를 구할 때 굳이 falling / rising 나누어 계산하지 않아도 돼요.
 
t_inv =  ( K_Rn / Wn )  * (Kp+1) * Wn* C_G = (Kp + 1)* K_Rn * C_G = (Kp + 1) Tn 
 
Tn 은 K_Rn * C_G로 NMOS의 단위면적당 resistivity 와 gate의 단위면적당 cap을 뜻함. 
 
이렇게 구한 t_inv는 소자의 width와 무관해지는데,
 
왜냐하면 Width가 증가하면 R은 감소하고 C는 커지기 때문. 따라서 서로 상쇄.
 
RC delay는 변하지 않는다.
 
Kp는 공정에 따라 달라짐
 
 
 
 

요약

1. propagation delay는 gate delay이다.
driving gate가 output load(fan-out)를 충방전 시키는데 걸리는 시간이다.
 
2.RC delay로 모델링 할 수 있으며, R은 driving gate의 output resistance, C는 output load의 input capacitance이다.

이는 다시말해, R은 입력으로 인가된 전압이 출력 전류로 전환되는 비율을 말한다.

C는 로드의 입력 커패시턴스, 즉 다음 게이트를 구동하기 위해 대전시켜야 하는 전하량을 의미한다. 
 
3. NMOS와 PMOS의 resistivity가 다르므로 falling과 rising delay는 다르다.
 
4. gate의 falling과 rising dely를 같게 만들어주기 위해서는 pmos를 Kp배 더 넓게 디자인해야한다. 
 
인버터에서는 PMOS를 Kp( pmos 저항/ nmos 저항 비 )만큼 넓게 설계하여 identical inv delay를 얻을 수 있다.
이때의 t_inv 는 (Kp + 1) * K_Rn * C_G = (Kp + 1) Tn 이다.
 
6. NMOS와 PMOS를 동일한 크기 비율만 유지한다면 (Wp = Kp * Wn), t_inv는 Width와 무관하다.