목차
한마디로,
RTL Design를 SDC와 UPF 그리고 실제 Fab에서 사용할 Standard Cell와 Hard Macro IP의 Liberty(DB로 변환해서 사용)까지 위 모든 input들을 기반으로 Gate-Level의 Net으로 바꾸는 과정입니다.
반도체 설계의 과정 중 하나인 합성(Synthesis)은 RTL 설계를 실제 하드웨어로 구현 가능한 게이트 수준(Gate-Level)의 회로로 변환하는 핵심 단계입니다.
합성이란 무엇인가?
합성은 HDL(Hardware Description Language)로 작성된 RTL 코드를 바탕으로, 논리 게이트 수준의 넷리스트(Netlist)를 생성하는 과정입니다. Register-Level에서 Gate-Level로 변환 합니다. Pre-Netlist라 흔히 부릅니다. 이후 배치 및 배선(Place & Route) 단계로 넘어가기 위한 기초가 됩니다
합성의 전체 흐름
합성은 다음과 같은 단계로 구성됩니다:
- RTL 설계 (Verilog/VHDL)
- 합성의 기본 재료입니다. 원하는 Spec에 맞게 하드웨어 언어로 설계된 코드덩어리 입니다.
- 합성 Tool를 통한 변환
- Design Compiler를 주로 사용했습니다. 요새들어 Fusion Compiler도 많이 사용합니다.
- 최적화 (Optimization)
- RTL 단계에서 사용하지 않는 logic이나. 실제로 Register-Level에서 설계된 내용이 그대로 Gate-Level로 넘어왔을때 필요 이상의 Gate가 사용될 경우가 있습니다. 같은 동작을 하는 더 작은 Gate로 구성하여 최적화 합니다.
- 과거에는 Tool들의 최적화 알고리즘이 좋지 않아서, RTL 설계에서 고려하면서 설계를 해야만 했습니다. 현재는 Tool의 최적화 알고리즘이 많이 발전해서 하드웨어 언어도 타인이 알기 쉽게 코드를 쓰는 엔지니어들이 늘어나고 있습니다.
- Netlist 생성
- 결과 리포트 출력
- Timing에 관련된 정보가 주입니다. 리포트의 결과를 보고 STA를 통해 net를 수정하게 됩니다. 불가피하게 다시 설계가 필요한 경우 RTL 설계부터 다시 진행하게 됩니다.
합성 도구와 입력/출력
항목 | 설명 |
---|---|
입력 | RTL 코드, SDC 파일, 기술 라이브러리(Liberty), UPF |
출력 | 게이트 수준 네트리스트, 타이밍/전력/면적 리포트 |
대표적인 합성 도구: Synopsys < Design Compiler >, < Fusion Compiler >, Cadence < Genus >
SDC(Synopsys Design Constraints)
SDC(Synopsys Design Constraints)는 합성 도구에 타이밍 제약을 전달하는 파일입니다.
주요 명령어 예시:
create_clock
: 클럭 정의set_input_delay
: 입력 지연 설정set_false_path
: 분석 제외 경로 지정set_max_delay
: 최대 지연 시간 설정
정확한 SDC 작성은 타이밍 최적화에 필수입니다. SDC를 잘못작성하면, Chip의 타이밍 문제로 원하는 Spec으로 동작하지 못할 수 있습니다.
UPF: 저전력 설계
UPF(Unified Power Format)는 전력 도메인, 전력 상태, 전압 레벨 등을 정의하는 표준입니다.
주요 기능:
- Power Domain 정의
- Power State 및 전력 스위칭 전략
- Isolation/Retention 셀 지정
- Level Shifter 삽입
UPF는 합성뿐 아니라 배치배선, 검증 단계에서도 일관된 전력 전략을 유지하게 해줍니다. UPF에 정의된 전력 도메인에 따라 합성 도구는 level shifter 나 Isolation Cells를 넣을 수 있습니다.
합성 이후의 검증
합성된 결과는 반드시 다음을 통해 검증되어야 합니다:
- Gate-Level Simulation: 타이밍 정확성과 동작검증
- Formal Verification: RTL과 Netlist 간의 논리 등가성 검증
- Static Timing Analysis (STA): 타이밍 위반 여부 분석
마무리
합성에 대한 기본적인 내용에 대해 다룬 글입니다. 실무로 들어가면, SDC나 UPF에 의해, RTL Design의 문제, Timing issue로 인해 RTL Design부터 Synthesis 이후 P&R까지 원하는 결과가 나오기까지 처음으로 돌아가서 수없이 반복하고 많은 엔지니어들이 투입됩니다. 숙지해야하는 Tool, 설계지식들이 방대합니다.
'Knowledge > Basic' 카테고리의 다른 글
[CAN] Cyclic redundancy check(CRC) (0) | 2024.11.09 |
---|---|
2차원 DCT(Discrete cosine transform), 이산 코사인 변환 (0) | 2023.07.23 |
SoC ASIC Flow(디지털 반도체 설계) (0) | 2023.07.20 |
bps란? (0) | 2023.07.17 |
컴파일(Compile)이란 무엇인가? (0) | 2023.07.08 |