Decoupling 용 MOSCAP 레이아웃
CMOS 회로에서 Decoupling Capacitor(디커플링 커패시터)는 전원 노이즈를 줄이고 안정적인 전압을 공급하는 역할을 하며 주요 기능은 다음과 같다.
1. 전원 노이즈 감소
CMOS 회로에서 스위칭이 발생하면 순간적으로 전류가 급격히 변화하면서 전원 노이즈(리플, 스파이크)가 발생할 수 있다. 디커플링 커패시터는 이러한 노이즈를 억제하여 전원 공급이 깨끗하게 유지되도록 도와준다.
2. 전압 안정화
전원과 ground 사이에 커패시터를 배치하면, 순간적인 전류 요구량이 커질 때(예: clock 엣지에서 switching) capacitor가 저장된 전하를 공급하여 전압 강하를 방지하는데 이를 통해 전원 핀에 안정적인 전압을 공급할 수 있다.
3. 전원 임피던스 낮춤
커패시터는 고주파에서 저임피던스를 가지므로, 전원 노드의 임피던스를 낮춰 불필요한 전압 변동을 최소화하는 역할을 하는데, 특히 고속 신호가 많은 디지털 회로에서는 필수적인 요소이다.
4. EMI(Electromagnetic Interference) 감소
전류 변화가 급격할 경우 전자기 간섭(EMI)이 증가할 수 있는데, 디커플링 커패시터는 이를 완화하여 시스템이 더 안정적으로 동작하도록 돕는다.
즉, CMOS 회로에서 decoupling capacitor는 switching 시 발생하는 전원 노이즈를 줄이고, 전압 변동을 억제하여 안정적인 동작을 보장하는 필수적인 소자이므로 적절한 용량과 배치를 통해 효과적으로 활용할 수 있다.
보통 레이아웃 시 디바이스 배치와 라우팅 공간을 제외한 남는 영역에는 decoupling capacitor를 채우게 되는데, 이를 위하여 각 공정에 대한 레이아웃 시작 시점에서 decoupling capacitor unit cell을 미리 그려두는 것이 좋다.
남는 공간에 채워넣게 되는 decoupling capacitor는 NMOS capacitor나 MOM capacitor 를 조합하여 그려넣게 되는데, NMOS를 capacitor로 사용할 때는 poly 아래의 얇은 gate oxide 구조를 활용하게 되므로 gate는 power에, source,drain,bulk는 ground에 연결한 아래 그림과 같이 사용한다.
Decoupling capacitor 용량은 크면 클수록 좋기 때문에 최대한 뚱뚱한 모습이 된다.
보통 5X5, 10X10um 와 같은 식으로 unit width,length를 정해서 그리게 된다.
NMOS capacitor의 vertical 구조의 이해를 돕기 위해 이전 capacitor 포스팅에서 다뤘던 그림을 다시 한 번 가져와본다.
이를 실제 레이아웃으로 그려보자.
위의 그림을 보면 알 수 있듯이 NMOS capacitor는 poly와 P-sub 사이에 형성되기 때문에 뚱뚱한 NMOS를 P-sub 가드링이 둘러싼 모양으로 그리게 된다.
이렇게 NMOS unlit capacitor를 그려 보았다.
이를 실제 레이아웃의 빈 공간에 채워줄 때는 아래 그림과 같이 가드링을 공유하면서 가로 세로 면적에 맞도록 쭈욱 배치를 해주게 된다.
그렇다면 이제 가로, 세로로 배열된 모든 cell들의 poly gate 와 p-sub을 각각 VDD, GND로 routing이 연결될 수 있도록 고민을 해 보아야겠다. 동시에 이렇게 가드링을 공유 할 때 DRC 에러가 발생하지 않도록 신경도 써야 한다.
일단 배열을 하였을 때 아래 그림5의 1번 화살표가 표시하는 부분의 contact 위치가 가드링의 정중앙에 맞지 않으면 가드링을 겹쳤을 때 DRC 에러가 발생할 것이고, 2번 화살표가 표시하는 부분은 사방으로 둘러싸고 있는 가드링에 막혀있기 때문에 연결을 위해서는 M2로 건너뛰는 방법밖에 없게 된다.
일단 가드링 모서리의 contact은 그냥 지워 주기만 해도 간단히 DRC 문제는 해결이 될 수 있다.
그런데 poly 라우팅을 위해서는 먼저 메탈의 방향을 정하는 것이 좋다.
필자는메탈 층수가 하나씩 올라갈 때 마다 항상 가로-세로-가로-세로 이렇게 방향을 바꾸면서 자동으로 라우팅이 연결되게 레이아웃을 한다.
이렇게 하면 나중에 탑 메탈에서 각 VDD,GND 라인에 via 연결만 해주면 아래 메탈은 신경쓰지 않아도 된다.
일단 아래 그림 7과 8은 M1을 세로 및 가로로 정했을 때 레이아웃 모양이 어떻게 달라지는지 보여준다.
이제 그림7, 8의 unit cell들을 여러개로 배치해 보기로 한다.
여기까지 레이아웃이 되었고 DRC 에러가 없다면 이제 거의 다 된 것이나 마찬가지.
다만 이렇게 array로 놓고 검증할 때는 가로 세로 각각 100um이상 배치가 되도록 많이 배치해 놓고 DRC를 돌려보도록 한다.
이렇게 뚱뚱한 poly를 사용하게 되면 density rule이 좋지 않은 일부 공정에서는 maximum poly density가 발생 할 수 있으니 미리 확인하는 것이 나중에 고생할 일을 줄여주게 된다.
이제 M2 라우팅을 해 보자.
간단히 아래 그림과 같이 VDD, GND 신호를 TOP/BOTTOM으로 표시하여 두 라인을 M1과 가로/세로가 반대가 되도록 깔아주고 via로 M1에 연결해 주면 끝난다.
이 때도 역시 array로 연결했을 때 via space error나, via 개수에 따른 rule에 error가 나지는 않는지 확인하면 되겠다.
(=꼭 array로 늘어놓고 DRC를 돌려보라는 말)
이번에는 M3로 라우팅을 올려보자.
M2와 가로 세로 반대 방향이 되도록 같은 방법으로 M3와 via2를 그려주면 된다.
이런식으로 내가 사용하는 metal option으로 사용가능한 metal까지 routing을 쭉 올려주면 되는데, top metal까지 routing 연결을 완료한 레이아웃 하나만 저장하지 말고 각 metal 단계별로 cell name을 별도로 저장해 놓거나 pcell로 만들어서 metal option만 바꿔주면 레이아웃이 자동으로 바뀔 수 있도록 하는 것이 좋다.
보통 cell이름으로 저장할 때는,
NMOSCAP_5x5_M1
NMOSCAP_5x5_M2
NMOSCAP_5x5_M3
NMOSCAP_5x5_M4
이와 같은 식으로 저장해 놓는다.
이렇게 하는 이유는 decoupling capacitor는 용량이 클수록 noise 영향을 줄여주기 때문에 M2로 라우팅이 지나가는 아래에는 M1 라우팅까지 된 cell로 채워주고, M3로 라우팅이 지나가는 영역에는 M2까지 라우팅 된 cell로 채워주는 식으로 최대한 시그널 라우팅이 되어 있는 영역에도 decoupling capacitor를 그려주기 위한 목적이 있다.
또 한가지, 메탈을 하나씩 올릴 때마다 가로 세로 방향을 바꾸지 말고 그냥 한 방향으로 똑같이 쌓으면 안되나요?(그럼 더 쉬울텐데) 하는 의문이 생길수도 있는데, 역시 decoupling capacitor 용량을 늘려주기 위한 방법으로 위,아래 메탈의 TOP, BOTTOM 이 겹쳐지는 부분을 최대화하기 위해서 (parasitic capacitance) 각 메탈이 쌓일 때 마다 가로 세로 방향을 바꾸어 주는 것이 기본이다. 이렇게 power, ground metal을 가로 세로로 겹쳐지면서 교차가 반복되도록 레이아웃 하는 것을 현업에서는 "power, ground mesh를 깐다" 라고 표현한다.
꼭 decoupling capacitance용도의 레이아웃이 아니더라도 power, ground 신호 공급을 위해 라우팅을 할 때는 VDD-GND-VDD-GND 와 같이 교차되는 방식으로 위아래 메탈이 가로 세로 방향이엇갈리게 레이아웃 하는 것이 불문율처럼 여겨지고 있는데, 이렇게 power mesh를 깔아주는 것도 알고보면 decoupling capacitance 를 늘려주기 위한 레이아웃 전략이라고 할 수 있겠다.
이렇게 위에서 설명한 것과 같이 power, ground routing을 mesh 형태로 레이아웃 해도 되는데, 여기서 capacitor 용량을 더 늘리기 위해서 NMOSCAP 위에 MOM capacitor를 얹어서 레이아웃 하기도 한다.
아래 그림과 같이 M1까지 레이아웃 된 NMOS capacitor 위에 M2 MOM capacitor를 올려보기로 하자.
일단은빨간 화살표로 표시된 NMOS capacitor의 poly 에 연결되는 M1과 파란색으로 표시된 p-sub에 연결되는 M1이 M2 MOM capacitor의 TOP, BOTTOM에 via로 연결될 수 있도록 위치를 잘 맞춰주는 것이 중요하다.
위의 그림14에서 NMOS capacitor와 MOM capacitor 각 pin routing을 위한 레이아웃 예를 그림15에 나타내 보았다.
(잘 보이게 하기 위해 M1, M2만 표시)
이렇게 M1, M2 각 pin 연결이 되었다면 이를 array로 사용할 때 자동으로 라우팅이 되도록 빨간 점선으로 표시된 MOM capacitor 양쪽 부분을 cell 가장자리까지 확장해 주도록 한다.
이번에는 M3 MOM capacitor 도 올려보도록 하자.
M2 MOM capacitor는 가로로 자동 연결이 되도록 했으니 M3는 세로로 자동 연결되도록 하는 것이 좋겠다.
아래 그림을 잘 살펴보고 참고하기로 한다.
실제 업무 시에는 사용하는 공정에 따라 MOM PDK 모양이 다를 수 있으니 기본 개념만 기억하면 되겠다.
이렇게 M2, M3 각각의 MOM capacitor을 합치면 아래 그림과 같이 된다.
자, 이번에는 poly layer부터 M3 MOM 까지 전체 layer를 모두 보이게 해 보자.
이정도만 겹쳐 있어도 벌써 TOP, Bottom 신호가 poly나 p-sub 가드링에 제대로 연결되었는지 눈으로 확인하기에 어려움이 있을 정도가 되었다.
그러니 M10 이상으로 올라가게 되는 레이아웃을 할 때는 눈으로 연결상태를 확인하는 것은 거의 불가능해 진다.
하지만 이번 포스팅에서 가이드 한 대로 메탈을 가로 세로로 교차하면서 array를 배치했을 때 각 메탈 레이어들이 자동으로 연결되게 잘 준비해 놓았다면 TOP 메탈에 via만 잘 연결해 주면 그 아래 메탈들은 신경쓸 필요가 없어진다.
이 때 TOP에서 decoupling capacitor에 라우팅 할 때 특히 주의해야 할 점은 decoupling capacitor의 최상위 메탈의 연결할 수 있는 모든 라인에 via을 꼼꼼히 연결해 주어야 한다는 점이다.
간혹 이렇게 unit cell을 잘 만들어 놓고는 TOP에서 넒게 깔려있는 power, ground metal 중 하나씩에만 via을 연결해 놓는 사람들도 있다. 이러면 DRC,LVS도 통과하기 때문에 모르고 지나가는 경우가 생길 수도 있으니 레이아웃 할 때는 빨리 끝내려는 급한 마음보다 꺼진불도 다시 본다는 마음으로 세심하게 확인하는 습관을 들여야 하겠다.
사실 눈으로 확인한다고 해도 놓치는 경우도 꽤나 많기 때문에 실제로 위,아래 메탈이 같은 net인데 via가 빠져있는지 체크하는 design rule을 별도로 만들어서 돌려보는 방법을 많이 쓰고 있다.
극복하고자 하는 의지는 언제나 방법을 만들어 내는 것 같다.