CTS까지 끝났다. 이제 Route만 하면 필자가 그렇게 원하는 Layout 결과물이 나온다. ㅋㅋㅋ
5. Route
5-1. Check Design for Routing
5-2. Preroute Standard Cells( Power Routing)
5-3. Route
위와 같은 Step으로 진행할텐데 뭐 이것도 Tool이 알아서 해주는 거고 필자는 Goal에 맞는 Option을 설정해주었는지 제대로 확인하고 결과물의 Log를 분석한 후 이상없는지 철저하게 검증하면 되는 것이다.
[ 5-1 ] 작업 ; Route는 시간이 오래 걸린다. 그럼 지금껏 준비한 사전 작업들이 제대로 되었는지 검증을 미리 하고 Route를 해야 Iteration 단축에 유리하다.
"Route Setup" 메뉴의 "Check Design for Routing"을 선택한다. 붉은 점선의 부분은 default로 그대로 진행하면 된다( 의미는 Error에 대한 Log를 ***.err 파일에 만든다는 의미일 뿐. 나중에 Error가 발생하면 이 파일을 불러와서 Cell View Window에 Highlight해주거든. 이 부분은 기회되면 따로 Post하겠다.) 아래 그림의 파란 점선을 보면 필자의 경우엔 Error가 없다고 나온다.
보통 Pin Allocation이 잘못 되면 이 부분이 List된다.
[ 5-2 ] 작업 ; 이전 Place 작업에서 Power/Ground Poll과 각 Cell에 VDD/VSS를 선언하였었다. 이 Step에서는 이 선언된 VDD/VSS를 실제로 Route해주는 작업을 한다.
"PreRoute" 메뉴의 "Standard Cells"를 선택한다.( 필자의 경우 Metal-1만 Horizontally VDD/VSS 연결에 사용한다.) 아래 그림은 실행한 후, Cell View Window를 확대해본 것이다. Metal-1이 Power/Ground Poll과 연결됨을 알 수 있다.
[ 5-3 ] 작업 ; Tool이 자체 알고리즘(?)을 가지고 Route함.
필자는 Auto Route를 선택하지 않고 단계별 Route를 한다. 아직까지 이 둘의 차이는 잘 모르지만 그렇게 배웠다. ㅠ 이 부분도 알게 되면 Update하겠다.
"Route" 메뉴의 "Global Route"를 선택하고 그대로 실행한다.
"Route" 메뉴의 "Detail Route"를 선택하고 실행한다.
그러면 다음과 같은 Message들이 Command Window에 Display된다.
진행되는 과정들이 보이는데 현재 필자가 캡쳐한 이미지를 보면 무려 10,000개가 넘는 Violation이 생긴다.( 최종은 이것보다 많다.)
이렇게 1번의 Iteration으로 Route를 종료했는데( 사실 10,000개가 넘는 Violation이 나오면 Route 실패다..ㅋㅋ 하지만 Post 작성을 위해서 Loop 기능을 사용해본다.)
"Route" 메뉴의 "Detail Route Search & Repair"를 선택하여 Loop를 결정한 후 실행한다.( 이 Optimization 과정에서 일부 Violation은 remove된다)
아무튼 실패했다. 그렇다고 여기서 끝내면 안되지 않은가?ㅋㅋ 그래서 필자의 경우 그냥 완성를 위해 ( Target Project에 허용치 않은) Route-Blockage( Metal-3를 사용하지 않도록 했던.)를 제거한 후 다시 실행해볼 것이다. 이 과정에서 기존에 Place/Route되었던 것들도 날려버리는 과정도 기술할 것이다.( 그냥 덮어쓰는 방식으로 Iteration을 해도 무방한지 모르지만 필자는 그런 찝찝함은 별로 안 좋아해서 그냥 기존 과정 날릴 것이다. ^^)
일단 가장 먼저 Routed Element를 지우자.
"Route Utility" 메뉴의 "Delete Route by Type"을 선택한 후 아래 그림처럼 Option 체크하고 실행한다. VDD/VSS와의 연결을 위해 사용했던 Metal-1( 파란 점선 참조)부터 해서 싸그리 사라져있는 것을 알 수 있다.
이제는 Clock Tree를 날려야 한다.
"Clock" 메뉴의 "Delete Clock Tree"를 선택하고 Clock Source를 기입한 후, 삽입된 Buffer/Inverter도 삭제하도록 선택한 후 실행한다.
이제 Arranged Cell조차 초기화시키자. 기존 Prototype Flow에서 설명했던 "Set Up Floorplan"을 실행하면 된다. 단 이 때 I/O Pin들도 초기화되므로 기존 I/O Arrange 작업( 필자의 경우 Load했던.. 여러분들도 Load하기 위한 Dump 파일을 만들어놓으면 된다. 이처럼 Dump할 수 있는 것들은 Dump해놓은 게 좋다! 반복 작업이 많으므로.)을 해야 한다. 암튼 그 과정을 모두 처리하면 다음과 같은 그림으로 뜬다.( 앞서 말했듯이 Route-Blockage를 없앤다고 했으므로 파란 점선을 감안해서 보라.)
이제 다시 Place -> CTS -> Route 작업을 하겠다....( 이전에도 말했다시피 Power/Ground를 위한 선언은 하지 않아도 된다. 이미 했기 때문에...) Metal-3를 쓸 수 있는 영역이 많아졌기 때문에 될 것이다.. 결과는? 됐다!ㅋ
이로써 Route까지 완료되었다.
이제 마지막으로, Antenna 작업과 Filler 추가 작업 등의 Minor한 Work가 남았을 뿐.
Layout이 종료되었다고 해도 무방할 정도의 결과물을 얻었다.
마지막으로 다음 Post에서 Antenna / Filler / Verilog-Out / GDS-Out / SPEF-Out 등에 대해 기술하겠다.