티스토리 뷰
Synthesis(합성) 총정리 | RTL→Netlist 입력·출력, SDC 제약, 결과 확인 [ASIC 설계]
혜숑(hyeshong) 2022. 10. 22. 16:24목차
한 줄 요약
Synthesis(합성)는 사람이 쓴 RTL을 공정 라이브러리의 표준 셀로 이루어진 게이트 수준 Netlist로 바꾸면서, 제약 조건(SDC)을 만족하도록 PPA(전력·성능·면적)를 최적화하는 단계입니다. 아래 본문은 실무 흐름 중심의 노트이고, 맨 아래에 전체 흐름 표와 SDC 제약 예시, 결과 확인 방법, FAQ를 정리했습니다.
+ 생각나는 대로 정리해보는 Synthesis +
우선 Synthesis란 무엇일까요?
- high level의 RTL을 구현 가능한 low level의 netlist로 바꾸는 과정입니다.
- ASIC 설계에서 가장 중요한 PPA (Power, Performance, Area)를 최적화하는 프로세스입니다.
- Input : RTL, Technology libraries, Constraints (Environment, clocks, IO delays 등), UPF(Power intent for power aware synthesis) 가 있음
- Output : Netlist, SDC, Reports, UPF(Unified Power Format) 등
- Synthesis할 때 쓰는 대표적인 tool : Cadence의 RTL Compiler , Synopsys의 Design Compiler
- Synthesis = Translation + Logic Optimization + Mapping
- translation은 file을 읽는 동안 실행되고, logic optimization과 mapping은 command를 compile하는 것에 의해서 실행 됨.
⭐Synthesis 목표
- Gate-level Netlist를 얻기 위함.
- Clock Gates를 inserting
- Logic Optimization
- DFT Logic을 inserting
- RTL과 Netlist 사이의 Logic Equivalence를 유지 시키기 위함.
- HDL file generation & library setup
- HDL input file은 VHDL이나 Verilog나 SystemVerilog에서 작성 됨.
- HDL partitioning 및 코딩 스타일은 synthesis와 최적화 과정에 직접적인 영향을 미침.
- Libraries는 사용된 반도체 기술을 기반으로 함.
- 정의가 다른 여러가지 유형의 library가 있음.
- link library
- target library
- symbol library
- synthetic library
- etc.
- DC로 파일을 읽는 방법에는 두 가지가 있음 -> elaborate 명령이랑 read_file
1) elaborate command는 design을 GTECH 표현으로 변환하고 코드의 HDL 산술 연산자를 design ware 구성 요소로 변환합니다. 또한, link를 자동으로 수행하고, source code에 정의된 매개변수 값을 변경할 수 있습니다.
2) read_file command는 VHDL에 대한 중간 파일을 저장합니다.
- Design environment Constraints
- 디자인을 읽은 후에는 디자인 환경과 constraint를 정의해야 합니다.
- design environment : operating conditions, Wire Load Models, Interface requirements
- operating conditions: process, voltage, temperature requirements로 구성이 되며, 이것들 각각이 칩에 미칠 수 있는 영향은 합성 및 타이밍 분석 중에 고려해야 합니다.
- set_operating_condition 명령을 사용하여 작동 조건을 명시적으로 지정할 수도 있습니다. 작동 조건은 set_operating_condition 명령을 사용하여 dc_setip.tcl 파일에 저장됩니다.
- wire load models: DC는 와이어 길이와 팬아웃이 저항, 커패시턴스 및 네트 면적에 미치는 영향을 추정할 수 있습니다. DC는 이러한 값을 사용하여 와이어 delay를 계산합니다. DC를 이용하여 합성을 마치면 0WLM을 사용합니다.
- system interface: 외부 논리 구동 및 ASIC에서 신호 수신에 관한 정보는 이러한 constraint를 통해 캡쳐됩니다. input drive strength (set_driving_cell), capacitive load (set_load), output fan out load 등으로 구성됩니다.
- report_lib, report_design은 load된 environment constraints를 확인하는 몇 가지 command입니다.
- operating conditions: process, voltage, temperature requirements로 구성이 되며, 이것들 각각이 칩에 미칠 수 있는 영향은 합성 및 타이밍 분석 중에 고려해야 합니다.
- Timing Paths
- timing analysis tool은 디자인의 모든 timing path를 찾고 분석합니다. 각 timing path에는 startpoint와 endpoint이 있습니다.
- path의 startpoint는 sequential element의 clock pin 또는 디자인의 input port입니다.
static timing analysis는 worst-case condition에서 timing violation에 대한 가능한 모든 path를 확인하여 디자인의 timing 성능을 검증하는 방법입니다. setup 및 hold는 수행되는 가장 중요한 timing check입니다.
- setup : clock의 active edge 전에 데이터가 안정되어야 하는 시간을 setup time이라 합니다.
- hold : clock의 active edge 후에 데이터가 안정되어야 하는 시간을 hold time이라 합니다.
- 모든 timing path에 대해 setup 및 hold timing check를 수행하는 동안 slack이 계산됩니다.
⭐Design Compiler의 목표는 모든 constraints를 충족하는 것입니다.
- Timing Constraints
- Clocks, IO Timing requirements, combinational path delay requirements, timing exceptions를 지정해야 합니다.
- create_clock : clock를 정의함.
- create_generated_clock : 내부적으로 생성된 clock을 정의함.
- clock networt effects: 정의된 clock에 대해 지정해야 합니다. clock latency, uncertainty, transition time은 clock networt effects의 일부입니다.
- clock latency: latency는 clock signal이 원래 clock source에서 design의 순차 요소로 전파되는 데 걸리는 시간입니다. source latency과 network latency의 두 가지 구성됩니다. source latency는 원래 clock source에서 design의 clock definition point까지의 delay입니다. network latency는 clock definition point에서 register clock pin 까지의delay입니다.
- uncertainty: register에 clock signal이 도착하는 것 사이의 최대 차이입니다. 이건 skew라고도 부릅니다. skew가 클수록 timing constraint를 충족하기 어렵습니다.
- transition time: signal이 logic low(하강 시간)로 변경되는 데 걸리는 시간입니다. cell의 입력에서 signal의 transition time은 cell의 output에 대한 delay와 output signal의 transition time에 영향을 줍니다.
- get_clock : current design에 정의된 clock 목록을 제공합니다.
- report_clocks : current design에 정의된 clock의 세부 정보를 제공합니다.
합성 흐름 한눈에 보기
| 단계 | 하는 일 | 대표 명령(Design Compiler 기준 예시) |
|---|---|---|
| 1. 라이브러리 설정 | target/link library 지정 | set target_library, set link_library |
| 2. 설계 읽기 | RTL 읽고 연결 확인(translation) | read_verilog, elaborate, link |
| 3. 제약 조건 지정 | 클럭, 입출력 지연, 구동·부하, 동작 조건 | create_clock, set_input_delay 등 |
| 4. 합성 실행 | logic optimization과 mapping | compile |
| 5. 결과 확인 | 타이밍, 면적, 전력, QoR 리포트 | report_timing, report_area, report_power, report_qor |
| 6. 결과물 저장 | Netlist와 SDC 출력 | write -format verilog, write_sdc |
툴과 버전에 따라 명령과 옵션은 다릅니다. 위 표는 개념 이해용 예시입니다.
SDC 제약 조건 예시
합성 툴은 제약이 있어야 어디까지 최적화할지 알 수 있습니다. 가장 기본적인 제약은 다음과 같습니다.
create_clock -name clk -period 10 [get_ports clk] set_input_delay 2 -clock clk [get_ports din] set_output_delay 2 -clock clk [get_ports dout] set_driving_cell -lib_cell BUFX2 [get_ports din] set_load 0.1 [get_ports dout]
- create_clock: 클럭 주기를 정의합니다. 이 값이 setup 여유를 결정합니다.
- set_input_delay / set_output_delay: 칩 밖의 회로가 쓰는 시간을 반영합니다.
- set_driving_cell / set_load: 입력을 구동하는 셀과 출력 부하를 지정합니다.
시간 단위와 부하 단위는 사용하는 라이브러리에 따라 다릅니다. 위 숫자와 셀 이름(BUFX2)은 예시입니다.
합성 결과는 이렇게 확인합니다
- report_timing: 가장 느린 경로와 slack 확인. slack이 음수이면 setup violation입니다. 개념은 Setup Time과 Hold Time 총정리를 참고하세요.
- report_area: 셀 면적 합계
- report_power: 전력 추정치
- report_qor: 타이밍·면적 등 결과 품질 요약
PPA는 함께 움직이는 trade-off
클럭 주기를 짧게(성능↑) 요구하면 툴이 더 큰 셀과 더 많은 로직 복제를 쓰게 되어 면적과 전력이 늘어나는 경향이 있습니다. 반대로 면적을 우선하면 속도가 희생됩니다. 그래서 제약을 현실적으로 설정하는 것이 중요합니다.
합성 다음에는 무엇을 하나요?
- Logic Equivalence Check: RTL과 Netlist가 논리적으로 같은지 확인(본문의 equivalence 유지 목적)
- DFT 삽입과 확인
- Place & Route: Netlist를 물리적으로 배치·배선. 입력으로 쓰이는 파일은 DEF·LEF 차이와 RTL·Netlist 차이 총정리에서 정리했습니다.
자주 묻는 질문
Q. 합성과 Place & Route는 뭐가 다른가요?
합성은 논리 단계에서 RTL을 셀 단위 Netlist로 바꾸고, P&R은 그 Netlist를 칩 위에 실제 위치와 배선으로 구현합니다. 합성 때는 배선 지연을 추정(WLM 등)하고, P&R 이후에야 실제 배선 지연이 정해집니다.
Q. Wire Load Model과 Topographical 모드는 어떻게 다른가요?
WLM은 팬아웃에 따른 통계적 배선 지연을 쓰는 방식이고, Topographical 모드는 대략적인 물리 정보를 활용해 배선 지연 예측을 실제에 더 가깝게 하려는 방식입니다. 사용할 방식은 공정과 팀의 플로우에 따라 다릅니다.
Q. 본문의 RTL Compiler는 지금도 쓰나요?
Cadence의 RTL Compiler는 후속 합성 툴인 Genus로 이어졌습니다. 개념과 흐름은 거의 같습니다.
Q. 제약(SDC)이 없거나 느슨하면 어떻게 되나요?
툴이 목표 속도를 알 수 없어서 실제로 필요한 만큼 최적화하지 않거나, 반대로 비현실적으로 빡빡하면 면적과 전력만 크게 늘어납니다.
'반도체 공정 및 설계 > ASIC 설계' 카테고리의 다른 글
| Clock Jitter 총정리 | Period·Cycle-to-cycle·TIE 차이와 Skew와의 비교 (0) | 2022.12.08 |
|---|---|
| ESD [Electro Static Discharge] (2) | 2022.12.07 |
| 자동 배치 배선 및 기생 성분 추출 [레이아웃 설계] (1) | 2022.10.21 |
| 자동 배치 배선하기 [레이아웃 설계] (0) | 2022.10.21 |
| 설계 가이드의 이해와 레이아웃 적용 [레이아웃 설계] (0) | 2022.10.20 |