필자의 경우 Digital Logic Design Eng’r였기 때문에
알고 있는 지식도 이에 준하는 경우였다. System / RTL / Simulation / Synthesis /
Timing Analysis 정도.. 그러다가 우연찮게 이 회사에 와서 Mixed IC 설계의 Digital Part를 담당하게 되었다. 이런 이야기를 먼저 꺼낸 이유는 Digital Logic Design Eng’r라면
절대 하지 않았을 오늘 기술할 작업 내용 때문이다.
철저하게Mixed-IC 개발 엔지니어 정도나 알아두면 좋을 Tip이다. 미리 언급하자면 좀 더
Smart한 방법이 있을 것이나 일정 상의 문제와 User Guide 및 Web-Surfing을 통해서도 답을 찾지 못해 무식하게 처리한 부분도 있으니 이를 감안해주길. 그리고 최대한 초보자도 알 수 있게 기술하려고 한다. 하여 내용이
좀 길어질 것이다. 현업 1년차만 되더라도 이 글이 지루하게
느껴질 것이니 그래도 필요하다면 띄엄띄엄 읽으시길.
예전처럼 Analog Circuit이 Main이고 이를 단순 Control해주는 수준의 Digital Circuit 식의 IC라면 굳이 Logic 부분을 RTL 설계할 필요없이 Analog Design Flow와 같이 Schematic Editor에서
직접 회로를 구성하면 된다. 하나 세상이 어찌 그렇게 되나.
Digital 전용 IC들은 몇 천만 Gate를
넘나드는 세상인데 Mixed-IC도 Analog 자체만으로는( High-End급이 아니라면) Customer에 Appeal할 수 없다. 하여
Analog Circuit을 Smart하게 Control해주는 Digital Circuit도 나름 Complexity를 가지게 되고 TAT( Turn-Around Time ; 개발 일정)을 감안하게
되면 RTL -> Synthesis -> STA -> Schematic -> Layout의 Flow로 진행하는 게 유리한 면이 존재하게 된다.
그런데 이 Flow를 쉽게 따라갈 수 있도록 DK( Design Kit)가 지원되고 있느냐? 아쉽게도, NO!다. 현재 필자는
SK-Hynix Fab.을 이용한 Project를 진행 중인데, 이들이 제공하는 DK에는 간단하게 살펴보면 “CDL( Circuit Description Language) / GDS( Unit Cell Layout DB) / DB
/ LIB / Verilog Model( Simulation용)” 정도가 있다. 사실 이것도 감지덕지긴 하지만… ^^; 어쨌든 이들로는 필자가 원하는 RTL >>> Schematic으로의 진행 과정은 그리 쉽지 않다.
각설하고, 이제 본격적으로 시작해보자.
우선적으로 Logic Eng’r라면 누구나 익숙한 RTL( 한국에서 VHDL 이용하는 곳은 학교 말곤 못 봤다.ㅋ)로 Digital Circuit을 구현할 것이고 이를 가지고 Synthesis / ( Not Interconnect Delay) Timing Analysis까지 할 것이다. 이 때까지의 과정에 필요한 것들이 SK-Hynix에서 제공하는 DK 중에 “DB / LIB / Verilog Model”일 것이고. 그래 그렇다. 여기까진 Logic Eng'r라면 기본적으로 매우 쉽다.
문제는 이렇게 합성되어 Timing Analysis까지 잘 통과한 놈을 어떻게 Schematic으로 바꿀 것이냐다! ( Synopsys에서 제공하는 Design-Vision을 언급하지는 말자. 그거 그대로 다시 Schematic Editor에 베끼자고?? 몇 천 Gate 베끼는데도 시간은 시간대로, 눈은 눈대로, 허리는 허리대로, 다 망가질 것이다. 사실 그게 이 Flow를 획득한 궁극적 이유이기도 하다.)
어쨌든 내가 Schematic Editor로 사용할 Tool은 Cadence사의 Virtuoso( 여담이지만 Cadence사는 Synopsys사에 비해 Naming 정말 못 한다.ㅋ)이다. 현재 내가 가지고 있는 건 Virtuoso( IC514 Version)가 자체 제공하는 Schematics( basic / sample ..)과 SK-Hynix DK에서 제공된 *.cdl 그리고 RTL에서 뽑아낸 Netlist가 전부다.
가장 좋은 건 RTL에서 뽑아낸 Netlist를 Virtuoso가 호환성을 가지고 읽어내는 것이겠지만.. 안되니까.. ^^;;
이 Netlist를 Virtuoso가 읽을 수 있도록 만드는 게 이번 포스트의 목적이다.
1. cdl( 간단히 설명하자면, AND / OR Gate같은 Unit Cell들을 PMOS/NMOS 등으로 표현한 파일이다.)을 Virtuoso가 Import하여 새로운 Lib.를 만들도록 할 것이다.
> icfb &( Virtuoso 실행)
> FILE -> Import -> Cdl… 클릭
> CDL Netlist File ; Fab.에서 제공받은 *.cdl 입력( 실제 SK-Hynix.cdl이란 이름은 당연히 아니다.ㅋ)
> Output Library ; 본인이 만들고픈 Library Name( 아무거나 정해줘도 된다. 이왕이면 기존 Lib.와 겹치지 않게 새로운 명명을 하는 게 좋다. 필자의 경우는 그냥 tip이라고 명명)
> Reference Library List ; basic / sample은 Virtuoso 자체 제공하는 Lib.임.
> Device-Map File ; Fab.의 c을 지원하는 dev.map 파일이 있으면 이 부분에 첨부하면 되는데.. 난 확보하지 못했다.( 사실 이 파일이 있으면 Schematic의 MOS를 일일이 변경할 필요없을 것 같은데.. 필자는 아직 해결하지 못했다. 실력없는 게 드러나네..ㅠㅠ 암튼추후 이 부분은 방법을 찾아내면 수정하여 보완할 것임.)
> icfb Window에 CDL In is running…이라는 상태 메시지가 뜰 것이다.
2. 이제 tip이라 명명한 새로운 Library에 만들어진 Cell에 Layout( DK에서 제공된 GDS를 말함.) / Symbol을 추가할 것이다.
> icfb &
> FILE -> Import -> Stream…
> Input File ; Fab.에서 받은 GDS 입력.
> Library Name ; cdl이 저장된 Library를 그대로 입력. 이렇게 하면 같은 아래 그림처럼 Library의 Unit Cell의 View에서 보듯 Schematic / Layout 이 같이 존재하게 됨.
3. 이제 Symbol을 만들어야 한다. 문제는 이 Symbol을 자동으로 연결하는 방법을 필자도 아직 찾지 못했다. 혹시 아시는 분은 도와주시면… Help me!!! 암튼 난 Manual 작업( 노가다!ㅋ)
> icfb &
> Cadence에서 자체 제공하는 놈 중에 sample이라는 Library가 있는데 여기 Symbol을 copy해서 필자가 만든 tip Library의 schematic과 연결.( 각 Unit Cell마다 직접 작업..ㅠ)
> 참고로, 합성 시 사용할 놈들만 미리 선별해서 작업하면 작업량을 좀 줄일 수 있음.
> 암튼 이런 식으로 작업하면 위의 그림처럼 Layout / Schematic / Symbol이 완성됨.
4. 어쨌든 Layout / Schematic / Symbol이 다 갖춰진 Library가 만들어졌다. 그런데 제대로 만들어졌는가는 확인해봐야지 않겠나? 그래서 해야 할 것이 하나 있다. Logic Eng’r라면 알고는 있되 생소한 그것! 바로 LVS( Layout versus Schematic)이다. 내가 DK를 통해 불러온 Schematic과 Layout이 정말 제대로 Match가 되는지 봐야 할 것이다. 하지만 이 부분을 이 포스트에는 따로 기술하지 않을 것이다. LVS를 할 줄 아는 팀 동료에게 물어보라! Analog Eng’r든, Layout Eng’r든, 대학원의 석사 과정이든, 누구나 쉽게 할 수 있다.
5. 마지막으로 LVS까지 통과한 이 Library를 가지고 합성한 Netlist를 schematic으로 구현해보자!( 와!!! 다 왔다!!!!)
> icfb &
> FILE -> Import -> Verilog…
> Target Library Name ; 역시 이 부분도 만들었던 Library를 입력.
> Reference Libraries ; Layout / Schematic / Symbol이 모두 저장된, 만들었던 Library를 그대로 입력.
> Verilog Files To Import ; 여기에는 본인이 합성한 Netlist를 기술.
이제 끝났다. 그럼 간단히 결과물을 보자.( sample.v가 아니라 실제 본인이 진행 중인 프로젝트의 결과물이다.)
하나의 Module에 대한 Schematic인데 and/or/ff 등의 Unit Cell이 사용됨을 알 수 있다.
이건 Digital Logic Top Schematic인데 이런 식으로 기술됨을 알 수 있다. 편하지 않나?
자, 수고했다. 이제 Schematic을 가지고 Layout을 하라! 본 게임 시작이다.ㅋ( 으아아아아악!!!!)
암튼 이 모든 것을 감안해봐도 그냥 이 정도 규모의 Logic이라면 Auto-P&R을 시도하는 게 더 이익이라고 생각한다. Pre-Place와 Constraints Control만 잘 한다면...