블로그에 글을 포스팅한 지 반년이 지났다.
필자가 예전에 작성한 자료를 타인이 그대로 도용하여 강의에 사용한 경우를 발견한 관계로 처음에는 기존에 작성해 놓았던 교육자료를 빨리 업로드하기 위한 목적이 강했는데, 최근 조금씩 방문하는 이들이 생기면서 레이아웃 자체에 대한 질문들이 늘어나고 있다.
댓글로는 설명해주기 어려운 질문들이 있기 때문에 잠시 레이아웃이라는 업무 자체에 대한 포스팅을 추가하기로 한다.
질문 중에는 "배치하는 것이 힘들어요" 내지는 "배치를 잘 하는 방법이 있을까요" 와 같이 배치와 관련된 질문 비중이 꽤 많은 편인데, 사실 배치는 어느 정도 공간감각을 가지고 하는 일이기도 하고 블럭이나 IP의 용도에 따라 달라지기도 하기 때문에 잘 하는 법을 알려주는 것이 막연하게 느껴진다.
쉽게 생각해 볼 수 있는 방법은
1) EDA tool의 자동화 기능 활용하기
2) 기존의 레이아웃 참고하기
가 있겠지만 EDA tool의 자동화 기능은 라이센스를 별도로 사야 한다거나(이런 라이센스...드럽게 비싸다),
자동화 기능을 사용하는 법을 배우는 것이 배치 잘 하는 것을 익히는 것만큼이나 어렵기도 하다.
(필자조차 기존 EDA tool에 있는 메뉴도 다 활용 못하는 수준인데 거기에 메뉴를 더 추가하면 머리 아프다...)
그리고 기존에 참고할 만한 레이아웃이 없으면 그야 말로 막막함을 느낄 수도 있겠다.
실제는 기존의 레이아웃이 이상한 경우도 많으니 너무 막막해 하지는 않았으면 좋겠다.(이상하게 배치해도 웬만큼 SPEC이 빡세지 않은 이상 잘 동작하는 것이 보통이다. 이상한 레이아웃들을 보면 본의 아니게 용기를 얻는 경우도 있다.)
사실 배치는 그야말로 case by case 라서, 회로도 간단하고 디바이스도 몇 개 안되지만 이상하게 배치가 안되는 때도 있고, 복잡해 보이지만 전체 공간에 잘 들어맞아서 금방 배치가 되는 경우도 있다.
이상하게 안되는 블럭은 몇 날 며칠을 디바이스를 옮기고 또 옮기고 하다가 시간만 흘러버리기도 하니 적당한 선에서 포기 할 줄도 알아야 한다. 다만 내 마음의 찝찝함이 남을 뿐....
배치로 고민하고 있는 이들이 있다면 너무 걱정 안해도 된다는 말을 전해주고 싶다.
필자도 사실 레이아웃 업무를 하면서 마음에 쏙 드는 배치를 한 적은 사실 별로 없다.
항상 시간과 공간에 쫒겨서 어쩔 수 없는 모양으로 레이아웃을 완성하는 것이 대부분이고, 어쩌다 마음에 들게 레이아웃이 되었다 하더라도 회로가 변경되어 뜯어고치면서 모양이 망가지는 일이 비일비재하기 때문이다.
무엇보다 모든 hierarchy 레벨에서 반듯반듯한 모양으로 완성하고자 하는 생각을 버리고, 전체 TOP 블럭의 모양을 기준으로 배치하는 습관을 가지는 것이 중요하다.
완성된 회로를 전달받았는데 보고 그릴 레이아웃이 없다면 어떻게 해야 할까?
일단 인버터나 amp부터 그린다? 그러면 왕초보 티를 내는 것이라고 이전 포스팅에서 언급 한 바 있다.
일단은 회로 설계자와 몇 가지 항목들을 먼저 체크해 보아야 한다.
너무 심하게 세세한 것 까지 체크를 하여도 설계자들은 짜증이 난다. 그 분들도 SPEC 결정부터 설계, simulation, DK 제작이나 test에 이르기까지 커버해야 하는 일들이 레이아웃 담당자보다 훨씬 광범위하기 때문에 몹시 바쁘다.
꼭 필요한 것이 아니면 알아서 레이아웃을 할 수 있어야 한다.
하지만 꼭 필요한 몇가지는 체크하는 것이 서로에게 도움이 되므로 아래의 몇 가지는 꼭 체크하도록 하자.
사실 레이아웃 엔지니어가 체크하지 않더라도 일반적으로는 설계 담당자가 미리 가이드를 주는 항목이기도 하지만 사람에 따라 회로만 던져주는 설계자가 있을 수도 있으니 그럴 때는 먼저 물어보는게 좋다.
1) 전체 레이아웃 사이즈와 모양 ( 전체 면적 또는 가로/세로 target size)
2) input, output 신호의 방향
3) Power/ground 의 연결방향
4) 블럭에서 metal 사용 범위 및 metal의 가로 세로 방향성
5) I/O PAD에 직접적으로 연결되는 회로가 있는지 여부
6) 전류가 많이 흐르는 부분이 있는지?
7) 특성과 관련하여 특히 중요한 가이드가 있는지?
8) post simulation 진행을 위해 먼저 완성해야 하는 블럭이 있는지?
그럼 위의 항목들을 좀 더 자세히 설명해 보기로 한다.
전체 레이아웃 사이즈와 모양 ( 전체 면적 또는 가로/세로 target size)
맨땅에 레이아웃 할 때 가장 중요한 체크 사항이라 할 수 있겠다.
레이아웃 의뢰를 받으면 제일 먼저 전체 블럭 사이즈 target이 얼마인지 확인하는데, 가능하면 가로,세로를 어느정도 크기로 할 지 알아야 한다.
아주 작은 블럭이라면 적당히, 또는 최대한 작게 이런식으로 답변이 있을 것이고, 상당히 큰 IP일 경우에는 대부분 target size가 있을 것이다.
일단 전체 블럭을 모두 배치해 보고 원하는 크기에 레이아웃이 불가능 할 때는 설계자와 의논을 해야 하며, 목표 크기보다 많이 작을 경우에는공간이 남는다고 레이아웃을 널널하게 배치하지 말고 남는 공간을 어떻게 활용할 것인지 의논해도 된다.
예를 들어 옆사람이 레이아웃 하고 있는 블럭이 내가 하는 블럭 바로 옆에 놓이는데 그 쪽은 공간이 부족한 것 같다 하면, 내 블럭의 남는 공간만큼 옆사람이 더 가져가세요 이런 식으로 주변도 좀 챙겨줄 수 있다.
input, output 신호의 방향
디바이스 배치를 할 때는 신호의 방향이 아주 중요하다. 레이아웃 하고자 하는 블럭의 신호가 어느 쪽에서 어느 쪽으로 연결되는지 미리 확인을 해야 그 신호 진행 방향을 따라서 디바이스 배치를 하면 되기 때문이다.
처음 레이아웃 해 보는 회로라면 아날로그 블럭의 main signal이 어떤 것인지도 이 때 확인하면 좋다.
혹시 디지털 PnR 블럭과 연결되는 신호들이 있는지, 그 디지털 블럭은 어느 쪽에 위치하게 될 지 확인하거나
I/O PAD 로 연결되어야 하는 신호가 있는지, PAD는 어느쪽인지 확인한다.
Power/ground 의 연결방향 및 metal 사용 범위, metal의 가로 세로 방향성
Power/ground metal이 어느 쪽으로 연결되는지 확인하는 것도 중요하다.
특히 power,ground 가 PAD에서 바로 연결되어야 한다면 해당 power,ground PAD가 어느쪽에 위치하는지, metal은 몇 번 metal까지 올려서 검증해야 할 지 반드시 확인한다.
블럭과 블럭을 모아서 검증하는 TOP level에서는 대체적인 metal 가로 세로 방향이 정해져 있기 때문에 이와 반대방향으로 metal을 사용해 버리면 TOP 레이아웃 할 때 routing이 아주 어려워지기 때문에 보통은 블럭에서 어느 metal까지 쓸 지, 블럭의 top metal은 가로,세로 중 어느 방향으로 그릴 지 미리 정해주는 경우도 많이 있다.
특히 FINFET 공정을 사용할 때는 signal pin의 방향 및 width, pitch도 미리 정해지는 경우가 대부분이기 때문에 더 꼼꼼히 확인해 본다. 조금 규모있는 chip의 블럭 레이아웃을 해 본 이들은 알겠지만 요즘은 대부분 digital TOP으로 레이아웃이 진행되는데, 조금이라도 이런 규칙이 안맞으면(물론 블럭 DRC,LVS에는 문제가 없어도) 바로 불려가서 혼나게 될 수도 있다.
필자같은 사람은 워낙에 매일같이 혼나는 것을 몇 년 겪어봤기 때문에 맷집이 생겼지만 마음여린 이들은 상처를 받을 수도....(TOP 하는 사람들은 본의 아니게 짜증 대마왕으로 변신하게 됨. 직접 chip top을 해 보니 나도 어느 새 짜증내고 있더라는.,,)
I/O PAD에 직접적으로 연결되는 회로가 있는지 여부
회로적으로는 power,ground를 제외하고 I/O PAD에 직접 연결되는 신호가 있는지 반드시 확인해야 한다.
I/O PAD에 바로 연결되게 되면 I/O, ESD special DRC rule이 적용되는데, 블럭 레벨에서 DRC를 돌리면 이 부분이 체크되지 않고 I/O PAD에 routing이 연결되어야 체크되는 경우가 많다.
따라서 사전에 이를 모르고 레이아웃 검증 후 DB를 전달하게 되면 chip level 검증 시에 ESD, latch-up error가 발생하게 되어 맨붕이 오는 경우가 많으니 꼭! 사전에 확인해야겠다.
ESD, latch-up rule에 맞게 수정하려면 공간이 더 필요하므로 chip level에서 에러가 발생하게 되면 수정하는 일이 몹시 어려워진다.
PAD에 직접 연결되는 신호를 미리 확인하였다면 DRC rule file에서 option을 조절하여 해당신호의 label을 PAD로 인식하게 검증할 수 있으니 미리 rule file도 수정해 놓으면 된다.
전류가 많이 흐르는 부분이 있는지?
대부분은 회로에 표시가 되어 있겠지만 특별히 전류가 많이 흐르는 부분은 있는지 확인해 보는 습관을 들이는 것도 중요하다. 전류가 많이 흐르는 부분이 있다고 한다면 가능한 schematic에 표시해 달라고 요청하도록 한다.
회로에 수백 uA 이상, 혹은 mA의 전류가 표시되어 있으면 metal 1um width에 얼마의 전류 구동이 가능한 지 확인 해 보고 해당 신호 routing 시에 metal width가 충분히 확보될 수 있도록 한다.
특성과 관련하여 특히 중요한 가이드가 있는지?
필자가 레이아웃 할 때 꼭 체크하는 항목 중에 하나이다.
레이아웃 엔지니어는 어떤 회로를 전달받을 지 모른다. 오늘은 ADC를 했다가 내일은 PLL, 그 다음에는 LDO를 해야 할 수 도 있다. 회로 특성을 잘 알면 좋겠지만 일반적으로 회로설계자들도 converter 전문가, power-IC 전문가, interface 전문가 등으로 세부적으로 나누어져 있는데 레이아웃 엔지니어가 모든 회로 특성을 다 아는 것은 애초에 불가능하다.
다만 경험으로 converter 레이아웃 할 때는 어떤 점에 주의해야 하고, LDO 는 어떤 점에 주의해야 하는 지 아는 것일 뿐.
그러므로 처음 보는 낯선 회로에 대해 레이아웃을 할 때는 특별히 주의해야 하는 점이 있는지를 반드시 확인한다.
보통은 레이아웃 의뢰하는 시점에서 회로설계자가 레이아웃 담당자에게 자세히 설명해 준다.
(만약 이렇게 하지 않고 회로만 던져주는 설계자라면 반성해야 함)
post simulation 진행을 위해 먼저 완성해야 하는 블럭이 있는지?
이 역시 대부분의 경우 회로 설계자가 먼저 어떤 블럭부터 해주세요 라고 요청이 있겠지만 그렇지 않을 경우 혹시 모르니 확인해 본다. 대부분 중요한 블럭부터 완성해 달라는 요청을 할 것이다.
맨땅에 레이아웃 시작하기 전에 체크해야 할 내용을 짚어보았다.
말로 물어보기 어렵다면 여기에 본인이 체크하고 싶은 내용은 더해서 (예들 들면 virtuoso library 정보, DB path 등) 엑셀 파일로 체크리스트처럼 만든 후 메일이나 Jira 로 공유하면 좀 더 official 한 느낌을 줄 수 있을 것 같다.
사전체크만 잘 되어 있어도 배치에 많은 도움이 된다.
다음 포스팅에서 필자가 레이아웃 하는 전반적인 과정을 간단히 소개해 볼 텐데 ......(명절이 코앞이다 흑흑)
'IC레이아웃' 카테고리의 다른 글
Decoupling 용 MOSCAP 레이아웃 (0) | 2025.03.01 |
---|---|
GDSII와 OASIS 파일에 대하여 (2) | 2024.10.27 |
Abstract view (또는 phantom이라고도 부름) , LEF file 만들기 (0) | 2024.08.24 |
Capacitor matching technique (0) | 2024.08.13 |
Capacitor 종류와 구조 (2) | 2024.08.03 |