티스토리 뷰
목차
+ 생각나는 대로 정리해보는 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, coltage, 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), capactive load (set_load), output fan out load 등으로 구성됩니다.
- report_lib, report_design은 load된 environment constraints를 확인하는 몇 가지 command입니다.
- operating conditions: process, coltage, 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의 세부 정보를 제공합니다.
'반도체 공정 및 설계 > ASIC 설계' 카테고리의 다른 글
Jitter (0) | 2022.12.08 |
---|---|
ESD [Electro Static Discharge] (0) | 2022.12.07 |
자동 배치 배선 및 기생 성분 추출 [레이아웃 설계] (0) | 2022.10.21 |
자동 배치 배선하기 [레이아웃 설계] (0) | 2022.10.21 |
설계 가이드의 이해와 레이아웃 적용 [레이아웃 설계] (0) | 2022.10.20 |