Design Compiler를 이용하여 RTL을 합성하는 과정은 다읍과 같다.


1. Specify libraries
Design Compiler가 사용할 library를 지정해준다. 이 과정에서 target library, link library, symbol library를 선언해 준다.

2. Read design
User가 synthesis할 design을 올리는 과정이다. Design Compiler는 RTL, gate-level netlist 등 다양한 형태로 올릴수 있다.

3. Define design environment
Operating condition(Process, Voltage, Temperature), wire load model, system interface 등을 지정해준다.

4. Select compile strategy
전체적인 합성을 top-down 방식, bottom-up 방식 또는 customized 방식 중 어떠한 방식으로 할 것인지를 지정한다.

5. Set design constraints
Design synthesis에 필요한 constraints를 지정해주는 단계이다. Constraints는 크게 design rule constrains와 optimization constraints로 나뉜다.
먼저 design rule constraints는 transition time, fanout load, capacitance와 같이 chip의 원할한 동작을 위해 foundary에서 제공하는 minimum requirement라고 생각하면 된다.
이와 달리 optimization constraints는 timing, area와 같이 user가 optimized chip을 만들기위해 지정해야하는 constraints이다. clock의 정보, port의 timing, combinational path, maximum area 등을 여기에서 지정해준다.

6. Optimize the design
Compile command를 사용하여 Design Compiler가 library와 constaints를 기반으로 synthesis를 수행하는 단계이다.

7. Analyze and debug the design
Synthesis가 끝나면 report를 보고 timing이나 area violators를 확인하고 debugging하는 단계이다.

8. Save the design database
Synthesis가 끝난 design을 write 명령어를 사용하여 저장한다.


위의 과정을 수행하는 command들을 간략히 적으면 다음과 같다.


먼저 specify libraries에 해당하는 부분은 이전 포스팅(링크)에서 .synopsys_dc.setup파일로 설정해 놓았다면 위와 같이 따로 명시해줄 필요가 없다.

그리고 read design에서 A.v, B.v, TOP.v를 read_verilog command를 사용하여 read한다. 보통 read_verilog command를 사용하여 verilog 파일을 읽어들일 경우 가장 첫파일(위의 예에서는 A.v파일)을 자동적으로 design의 top module로 인식하게 된다.
만약 우리가 synthesis하는 design의 hierarchy가
TOP.v --- A.v
           └ B.v
라고 한다면, current_design command를 이용하여 TOP.v이 top module이라는 것을 Design Compiler에 알려주어야 한다.
Current design 설정을 끝낸다음 link command를 사용하여 design 내의 reference를 link library를 참조하여 resolve한다.

그 다음단계에서 TOP.con을 수행하는데 TOP.con에는 현재 design의 design environment, compile strategy, design constraints가 포함되어 있는데 이를 작성하는 방법은 다음 포스팅에서 설명하도록 하겠다.

Compile command를 수행하면 Design Compiler는 design을 optimization한다. 이 과정이 실제로 synthesis가 진행되는 과정이다.

Compile이 끝나면 report_constraint를 통해 design synthesis에서 error가 발생하진 않았는지, constraint를 violate한 부분은 없는지 check하고 만약 잘못된 곳이 있다면 debugging을 한다.

만약 synthesis가 성공적으로 되었다면 write command를 사용하여 synthesis가 끝난 design을 저장한다. 여기서 -hier option은 TOP.v가 포함한 모든 sub-design까지 하나의 파일로 저장하라는 뜻이다. 만약 -hier을 생략한다면 Design Compiler는 current design만을 저장하게 된다.


Posted by sunshowers
,