앞서 설명했던 inverter, buffer, nand, nor, flip-flop까지의 레이아웃을 각 로직 셀들이 가로,세로 만나는 부분에서 DRC 에러가 발생하지 않도록 모두 잘 마무리했다면, 이제 이 로직 셀들의 집합인 로직 회로의 레이아웃을 해야 할 것이다.
전체 로직회로가 10개 이하의 작은 회로라면 별로 신경 쓸 것 없이 빈 공간에 적당히 넣으면 되겠지만, 아래의 배치 예와 같이 약간의 면적을 차지하게 된다면 power, ground plan부터 신경써야 한다.
이게 생각만큼 간단히 설명하기 힘든 이유는 레이아웃마다 사용가능한 메탈 종류와 레이아웃 가능한 면적이 너무 다양하기 때문이다.
따라서 이번 포스팅에서는 라우팅 메탈 M3까지를 예로 들어 보겠다.
그림1과 같이 가드링을 공유하여 배치함으로써 로직 레이아웃 면적이 최소화되었다고 가정하자.
로직 라우팅을 할 때에는 먼저 라우팅의 가로,세로 방향을 어떤 메탈로 사용할 것인지 결정하는 것이 아주 중요하다.
보통은 로직 셀 내부의 MOS의 M1 소스,드레인 라우팅이 세로 방향으로 되어 있기 때문에 M2를 가로로 사용하지만, 사용 가능한 메탈이 너무 없을 때는 부득이하게 M2를 세로로 활용하기도 한다.
이유야 어찌 되었던 일단 M1으로 파워,그라운드 라인을 뽑아달라고 요청을 받는다면 아래 그림 2와 같이 해야 할 것이다.
여기서 중요하게 보아야 하는 것은 양 쪽 width가 큰 M1에서 노란 점선으로 표시한 부분과 같이 실제 로직으로 연결되는 M1이 너무 얇지 않은지 신경써야 한다. 위의 예 정도만 되어도 너무 얇다.
이 블럭이 거의 DC 신호 수준이 되어서 한 번 세팅되면 거의 변화가 없는 로직회로라면 괜찮겠지만 만약 clock 신호들이라면 이렇게 연결을 하면 큰일이다.
극단적으로는 가로로 너무 길게 늘려서 파워,그라운드 라인을 1um width로 100um 이상 달리도록 레이아웃 해 놓은 예도 볼 수 있다. (쥴리의 혈압을 올리는 방법)
아래 그림2-1 과 같이 M1 파워,그라운드 라인을 아주 길고 얇게 라우팅해 놓은 레이아웃도 실전에서 의외로 많이 볼 수 있는데, 이러한 레이아웃은 하지 않도록 조심해야겠다.
위의 M1 파워,그라운드 연결을 M2로만 바꾸어도 마찬가지.
이 때는 M2와 M1 사이에 VIA 연결 개수가 얼마되지 않게 되므로 오히려 그림2보다 더 안좋아질 수 있다.
이렇게 그림1, 그림3과 같이 파워,그라운드 메탈을 사용해야 할 때는 할 수 있으면 아래 그림4와 같이 세로로 길쭉하게 로직 셀들을 쌓아 주는 것이 얇게 달리는 M1의 길이를 줄여줄 수 있기 때문에 오히려 낫다.
아니면 위,아래 로직 셀들의 가드링을 공유하지 않고 조금씩 띄워서(노란 화살표로 표시된 부분) 그림 5와 같이 가로로 달리는 M1 라인들의 두께를 늘려주도록 한다.
그럼 이번에는 가로 라우팅을 M2로 선택했을 때의 예를 보자.
위의 그림6과 같은 형태가 실제 레이아웃 시 많이 볼 수 있는 예가 되겠다.
M1을 사용한 레이아웃과 마찬가지로, M2로 파워, 그라운드를 공급해 줄 때에도 신호 라우팅에 꼭 필요한 영역을 제외하고는 최대한 M2를 두껍게 그려 주어야 한다.
아래의 그림 7이 위의 그림6을 개선한 레이아웃이 되겠다.
위의 그림1 ~ 7의 예들은 한쪽에 파워, 다른쪽에 그라운드 라인이 연결되는 레이아웃인데, 이런 경우 왼쪽이나 오른쪽 끝에 위치한 로직 셀들은 파워나 그라운드 중 하나는 긴 메탈을 달려와서 공급이 되기 때문에 IR-drop 이 커지게 된다.
그렇기 때문에 가능한 아래 그림8과 같이 파워, 그라운드 라인을 양쪽에서 공급할 수 있게 하는 것이 좋다.
자, 이번에는 M3를 사용가능한 경우의 파워,그라운드 배선을 보기로 한다.
간단히 생각하면 위의 M1을 사용하여 파워,그라운드 라인을 세로로 연결한 예에서 M1만 그대로 M3로 바꾸어 주면 될 것이다.
M1을 사용하여 파워,그라운드 라인을 연결하였을 때는 로직 셀 내부에 M1으로 라우팅이 가득 차 있었기 때문에 어쩔 수 없이 M1을 블럭 바깥쪽으로 놓을 수 밖에 없었지만, M3를 사용할 수 있다면 레이아웃 사이즈를 줄이기 위해 아래와 같이 M3 세로 라우팅은 블럭 안쪽으로 옮기는 게 유리하다.
위의 그림 10에서 세로로 연결하여야 하는 신호가 많지 않다면 가능한 아래와 같이 세로로 공급되는 파워, 그라운드 라인을 늘려 주면 더욱 좋겠다.
이런식으로 가능한 파워, 그라운드 라인이 충분하도록 신경을 써 주면 된다.
물론 각 로직 셀들의 신호 연결이 너무 꼬이지 않도록 배치를 잘 해 주어야 신호 라우팅 공간이 줄어들게 되므로 파워, 그라운드 공급을 위한 공간에 여유가 생길 것이다.
실제로 필자가 M3까지 사용하여 로직 레이아웃을 할 때는 아래 그림과 같은 느낌으로 레이아웃이 완성이 된다.
위의 그림에서 M2 라우팅을 잘 볼 수 있도록 M3를 걷어 내 보면 아래와 같다.
신호 연결에 필요한 공간을 제외하고 최대한 M2를 두껍게 라우팅한 것을 알 수 있을 것이다.
M3만 따로 보기로 하자.
전체적으로 파워,그라운드를 촘촘하게 깔아주고 세로로 신호를 연결하여야 하는 부분들은 특정 공간으로 모아 주면 된다.
이렇게 M3까지 사용하여 파워, 그라운드 라인을 라우팅하는 것을 살펴보았다.
만약 M4이상 사용할 수 있으면 좀 더 다양한 라우팅 선택을 할 수 있을 것인데, 잊지 말아야 할 점은 최대한 파워,그라운드를 충분이 공급할 수 있도록 신경써야 한다는 점이다.
특히 FINFET 공정으로 레이아웃을 한다거나 clock driver 레이아웃이라면 블럭 내부에서 전류가 상당히 많이 흐르기 때문에 최대한 파워,그라운드 메탈을 두껍게 그려줄 수 있도록 한다.
간혹 디지털은 파워,그라운드에 연결만 되면 다 동작하는거 아닌가요? 하면서 로직 블럭에 공급되는 전체 파워,그라운드 라인을 minimum width로 그려 놓거나 VIA 서너개만 사용하여 파워,그라운드 소스에 연결해 놓는 이들도 있는데, 그렇게 레이아웃을 해 놓으면 크게 혼이 나거나, 다음부터는 레이아웃 의뢰가 아예 안들어 올 수도 있다.
필자 개인적으로는 일단 파워,그라운드 라인을 잡아놓는 것을 보면 레이아웃 엔지니어가 본인의 레이아웃에 임하는 마음가짐을 느낄 수 있기 때문에 레이아웃 리뷰를 할 때마다 주의깊게 보는 항목이기도 하다.
'Logic 레이아웃' 카테고리의 다른 글
그대로 따라 그리는 로직 레이아웃 - edge triggered D flip-flop (4) | 2025.01.10 |
---|---|
그대로 따라 그리는 로직 레이아웃 - transmission gate (또는 switch) (2) | 2024.11.24 |
그대로 따라 그리는 로직 레이아웃 - schmitt trigger buffer (2) | 2024.11.18 |
그대로 따라 그리는 로직 레이아웃 - buffer,nand,nor (0) | 2024.11.12 |
그대로 따라 그리는 로직 레이아웃- 레이아웃의 시작, 인버터 (7) | 2024.10.17 |