그래서 필자가 큰 틀에서 나눠놓은 6가지의 Flow를 각각 6개의 Post로 정리하려고 한다.
이번 Post는 첫번째인 Environ. Setup이다.
1. Environ. Setup
1-1. 작업할 공간, 즉 Library를 만든다.( Tech File과 Milkyway DB)
1-2. TLU+( Mapping & RC-Table for Star-RC File) 연결
1-3. Netlist In -> Open Cell
1-4. Parastic Set-up
1-5. SDC Read
이미 언급했듯이 Astro에서 Library를 Generate한다는 것은 Working Directory를 정의한다고 봐야 한다. 해당된 Working Directory를 정의하고 여기에 각종 Fab.에서 제공한 PDK와 Eng'r가 설계한 Cell 정보들이 포함되는 것이다.
필자의 경우 SK-Hynix Fab.을 이용했다는 점을 참고하시라. 어쨌든 이제 시작하자.
Astro Tool을 실행한다.
초기 화면은 다음과 같다. 참고로 "Tools" 메뉴를 보면 "Data Prep / Astro" 항목이 있는데 Data Prep(aration)은 PnR 전의 사전 작업을 위한 메뉴를 볼 수 있으며 Astro는 실제 Place-CTS-Route 작업을 위한 메뉴를 볼 수 있다.
[ 1-1 ] 작업
"Library" 메뉴의 "Create" Click. ; Library Name에 원하는 Lib. Name( 보통은 Target Verilog Top Module Name을 적어주겠지.)을 적고, Technology File Name에는 Fab.에서 받은 Tech File( *.tf)를 절대 경로로 적어준다. 필자의 경우는 "SAMPLE"이라고 Lib. 명명.
"Library" 메뉴의 "Add Ref" Click 후 "Ref Library Name"에 Milkyway DB( 필자의 경우 정확히 이 정보는 모름. Milkyway DB가 아닐 수도 있겠지.. RC 정보가 저장된 DB일까?)의 위치를 물려준다. 참고로, Command Window의 길다란 붉은 점선을 보면 앞서 Open Library가 제대로 동작되었음을 확인할 수 있다. 이처럼 각 Flow를 진행할 때마다 Log 파일을 확인해야 Iteration을 줄일 수 있다.
[ 1-2 ] 작업 ; 위의 과정을 통해 기본적인 Lib. 제작은 끝났다. 이제 Layout답게 Parastics( R/C) 정보나 Mask 정보같은 것들도 Lib.에 담겨져 있어야 한다. 이를 처리해주는 게 [ 1-2 ]다.
"Tech File"의 "ITF To TLU+" Click ; LPE Model( RC-Table ; *.tluplus)는 Max/Typ/Min 모두 연결해줘야 하고 Mapping File도 물려줘야 한다. 물론 이 모든 파일들은 Fab.에서 제공한다. OK 버튼을 클릭하면 Command Window에 "ITF to TLU+ conversion successful!"이라는 log가 떠야 한다.
[ 1-3 ] 작업 ; 기본적인 Astro를 수행할 수 있는 환경은 다 만들어졌다. 이제 synthesized Verilog Netlist를 읽어야 한다.
"Netlist In" 메뉴의 "Verilog To CEL" Click ; Library Name은 항시 Working Dir.라는 것을 기억하고, Verilog File Name은 실제 netlist를, Output Cell Name/Top Module Name은 실제 Top Module Name을 적어주면 된다.
"Cell" 메뉴의 "Open" Click 후 녹색 점선의 Libraries를 선택하고 Cells에 뜬 Top Module Name( Output Cell Name)을 클릭하여 이를 읽어낸다.
읽어내면 다음과 같은 Cell들이 쭈욱- 그려진다.
[ 1-4 ] 작업 ; 먼저 "Tools" 메뉴에서 "Astro"로 변경한다. 이 Flow에서는 위에서 Path 잡아준 RC의 Detail Option을 변경 적용한다.
"Timing" 메뉴의 "Timing Setup" Click 후, "Parastics" 탭을 클릭하고 붉은 점선을 참조하여 설정한 후 Apply!
[ 1-5 ] 작업 ; 이제 [ 1-3 ] 과정에서 import한 Netlist의 SDC( Synopsys Design Constraints)를 적용해야 한다. Place & CTS & Route에 대한 조건들이 들어있으니까 미리 Tool에게 알려주는 것이다.
"Timing" 메뉴의 "Load SDC" Click하고 Design Compiler가 만들어준 SDC( 에 약간의 수정이 필요함.)의 절대경로를 기입한 후 OK! 당연히 Command Window에 Load SDC succeded.라는 log가 나타날 것이다.
이제 지금까지 한 과정을 저장해야 한다. 저장이야 너무 쉬우니 따로 캡쳐는 하지 않겠다.
"Cell" 메뉴의 "Save!"를 하면 현재의 Cell Name으로 바로 저장되고, "Save
As"를 하면 새로운 이름으로 Cell Name을 추가 저장할 수 있다. 필자는 둘 다 하는데 전자는 이 작업이 끝날 때까지
계속 할 것이고, 후자는 다음에 작업 수정이 있을 경우 해당 Flow에서 바로 시작할 수 있는 편의를 위해 저장하는 편이다.
개인적으로 둘 다 하는 걸 추천.
암튼 이로써 P&R을 위한 기본 사전작업은 종료되었다.
다음 Post에서는 Prototype Generate 과정에 대해 기술하겠다.( 이것도 정확히 말하면 사전 작업이지만.. ^^;;)