(4) Auto Place & Routing을 해보자 - project_setup & read design
Design compiler의 library setup tcl을 완료하였다.
그리고 위와같이 Verilog로 설계한 디자인 내용들을 설정한다.
이렇게 Library setup tcl 파일과 project setup tcl파일이 완료되었다면 이제 본격적으로 합성을 위한 스크립트를 작성할 차례다.
위 명령어로 일단 RTL_LIST로 선언한 RTL 코드 분석을 실시한다. vivado에서는 문제없이 되었을지라도 non blocking 관련된 문제와 같은 일들이 빈번하게 일어난다. 합성 가능한 코드임이 확인이 된다면 데이터베이스에 저장된다.
아마 예제코드에서 한가지 issue가 발생할것이다. 이를 수정해야 다음단계로 넘어 갈 수 있다.
현재 예제코드의 경우는 한가지 verilog파일로 구성되어있지만 일반적으로 설계 편의성을 위해 여러 모듈을 따로 설계하고 탑에서 합치는 방식이 추후 수정에 편리하다. 이때 elaborate 명령어는 TOP_MODULE로 선언된 모듈을 최상위 모듈로 판단하고 계층 구조를 생선한다.
위 명령어는 활성화할 디자인을 지정하는것이다.
여기까지 코드가 정상적으로 동작하는지 확인해보자.
design compiler를 실행시키는 방법은 dc_shell이다. 일단 처음 작성한 각각 스크립트는한줄씩 검증하는것이 디버깅에 편리하여 나는 보통 gui로 프로그램을 실행하여 한줄씩 입력한다.
dc_shell -gui를 치면 design compiler의 gui가 켜진다.
프로그램이 제대로 설치되지 않았거나 올바른 라이센스 및 라이센스 매니저가 사용되지 않았거나 환경변수가 잘못 설정되었다면 프로그램이 안켜질수 있다.
일단 여기 까지 켰다면 밑에 dc_shell>에 코드를 한줄씩 작성하거나 File-Excute Script로 가서 .tcl파일을 한번에 실행시킬수도있다.
하지만 처음 작성한 tcl은 하나씩 작성해보길 추천한다.
Deisgn setup script를 실행하였다.
library setup tcl을 실행하였다. 여기까지는 사실 문제가 발생하여도 알기 어렵다.
analyze -format verilog $RTL_LIST
실행결과
elaborate ${TOP_MODULE}
의 실행결과
위 elaborate가 정상적으로 완료되었다면 design compiler가 PDK가 아닌 기본 라이브러리를 이용하여 회로를 합성한다.
마지막 스크립트가 정상적으로 실행되었다.
여기까지 진행을 하면 verilog를 기본 cell을 이용해 합성에 성공한것이다.
이후에는 PDK를 이용해 위의 cell들을 바꿔치기 하며 load에 따라 회로를 변경하는 과정을 거치게된다.
계속,