Synopsys Reference
Synopsys Design Compiler/PrimeTime 레퍼런스
Synopsys Reference 소개
Synopsys EDA 레퍼런스는 디지털 설계 플로우의 5가지 핵심 도구인 Design Compiler(논리 합성), PrimeTime(정적 타이밍 분석), VCS(시뮬레이션), IC Compiler II(배치배선), 공통 Tcl 스크립팅 패턴을 다루는 실무 명령어 참조 가이드입니다. 각 항목에 실제 ASIC/FPGA 설계 워크플로를 반영한 Tcl 명령 구문과 사용 예제가 포함되어 있습니다.
Design Compiler 섹션은 read_file과 라이브러리 설정부터 클럭 제약(create_clock, set_clock_uncertainty), I/O 타이밍 제약(set_input_delay, set_output_delay, set_driving_cell), 고급 합성(compile_ultra의 리타이밍, 게이트 클럭, 면적 최적화), 리포트(타이밍, 면적, 전력, QoR), 넷리스트/SDC/SDF 출력까지 전체 RTL-to-gate 합성 플로우를 다룹니다. PrimeTime 섹션에서는 STA 셋업, 멀티코너 분석, CPPR, POCV/AOCV 변동 분석, ECO 타이밍 클로저를 설명합니다.
VCS 시뮬레이션 섹션에서는 SystemVerilog/UVM 테스트벤치 컴파일, 파형 덤프(VCD/FSDB), 코드 커버리지, Verdi 디버거 연동을 시연합니다. ICC2 섹션은 NDM 라이브러리 생성, 플로어플랜, 배치 최적화(place_opt), CTS(clock_opt), 자동배선, DRC/LVS 검증, GDSII 출력을 다룹니다. 공통 Tcl 패턴에는 get_cells/get_nets/get_pins 쿼리, 셀 최적화 제어(set_dont_touch, size_cell), SAIF 기반 전력 분석이 포함됩니다.
주요 기능
- RTL 읽기부터 compile_ultra, 게이트 레벨 넷리스트 출력까지 Design Compiler 합성 플로우 완비
- 생성 클럭, 클럭 불확실성, 트랜지션, 레이턴시 설정 등 클럭 제약 정의 방법 수록
- PrimeTime의 setup/hold 분석, CPPR, 크로스토크, POCV/AOCV 온칩 변동 분석 지원
- SystemVerilog, UVM, 커버리지, Verdi FSDB 파형 연동 등 VCS 컴파일 및 시뮬레이션 옵션
- NDM 셋업, 배치, CTS, 배선, 필러 삽입, GDS 출력까지 ICC2 배치배선 플로우 수록
- size_cell, insert_buffer, swap_cell 명령과 타이밍 업데이트를 통한 ECO 타이밍 클로저 워크플로
- SAIF 기반 스위칭 활동 전력 분석과 Design Compiler 전력 최적화 방법 포함
- get_cells, get_nets, get_pins 필터링과 foreach 반복 등 공통 Tcl 객체 쿼리 패턴 제공
자주 묻는 질문
이 레퍼런스에서 어떤 Synopsys 도구를 다루나요?
Design Compiler(DC, 논리 합성), PrimeTime(PT, 정적 타이밍 분석), VCS(RTL/게이트 레벨 시뮬레이션), IC Compiler II(ICC2, 물리 설계 배치배선), 그리고 이 도구들에서 공통으로 사용하는 Tcl 스크립팅 명령어를 다룹니다. VCS와 Verdi 파형 디버거 연동도 포함됩니다.
Design Compiler에서 클럭 제약은 어떻게 설정하나요?
create_clock으로 주 클럭의 주기와 소스 포트를 정의합니다. set_clock_uncertainty로 지터/스큐 마진, set_clock_transition으로 슬루, set_clock_latency로 소스 및 네트워크 레이턴시를 설정합니다. 분주 클럭은 create_generated_clock에 -source와 -divide_by 옵션을 사용하여 정의합니다.
compile과 compile_ultra의 차이점은 무엇인가요?
compile_ultra는 자동 언그룹핑, 데이터패스 최적화, DesignWare 구현 선택 등 고급 최적화 알고리즘을 사용하여 더 나은 타이밍과 면적 결과를 제공합니다. -retime(파이프라인 리타이밍), -gate_clock(클럭 게이팅 삽입), -incremental(증분 재최적화), -area_high_effort_script(면적 중심 최적화) 등의 옵션을 활용할 수 있습니다.
PrimeTime 정적 타이밍 분석은 어떻게 수행하나요?
read_verilog로 게이트 레벨 넷리스트를 읽고, 디자인을 링크한 후 기생성분(SPEF)을 읽고 read_sdc로 SDC 제약을 적용합니다. report_timing에서 -delay_type max로 setup 체크, -delay_type min으로 hold 체크를 수행합니다. POCV/AOCV를 활성화하면 온칩 변동 모델링이, CPPR을 적용하면 클럭 경로 비관 제거가 가능합니다.
POCV/AOCV란 무엇인가요?
POCV(Parametric OCV)와 AOCV(Advanced OCV)는 기존의 플랫 OCV 디레이팅보다 온칩 공정 변동을 정밀하게 모델링하는 방법입니다. AOCV는 깊이/거리 기반 디레이팅 테이블을, POCV는 셀/아크별 통계 계수를 사용합니다. 플랫 디레이트(예: 5% early/late) 대비 불필요한 비관을 줄여 현실적인 타이밍 분석과 허위 위반 감소를 달성합니다.
VCS에서 UVM 테스트벤치는 어떻게 컴파일하나요?
vcs -full64 -sverilog로 컴파일하고, +incdir+$UVM_HOME/src와 $UVM_HOME/src/uvm_pkg.sv로 UVM 소스를 포함하며, -ntb_opts uvm을 추가하고 +UVM_TESTNAME=test_name으로 테스트를 지정합니다. 파형 디버깅에는 -kdb -debug_access+all과 Verdi PLI 라이브러리를 링크하여 FSDB 덤프를 활성화합니다.
ICC2의 배치배선 플로우는 어떻게 되나요?
NDM 라이브러리 생성(create_lib), 넷리스트 읽기 및 링크, 플로어플랜/DEF 로드, UPF 전력 인텐트 적용으로 시작합니다. 이후 place_opt(배치), clock_opt(CTS), route_auto(전역/상세 배선), route_opt(배선 후 최적화)를 실행합니다. 마지막으로 필러 셀을 삽입하고 DRC/LVS를 검증한 후 GDSII, 최종 넷리스트, SPEF 기생성분을 출력합니다.
Synopsys 도구로 전력 분석은 어떻게 하나요?
VCS 시뮬레이션에서 $toggle_start/$toggle_stop과 $toggle_report로 SAIF(스위칭 활동 교환 형식) 파일을 생성합니다. PrimeTime에서 read_saif로 읽고 update_power 실행 후 report_power로 계층적 전력 분석을 합니다. Design Compiler에서는 set_max_dynamic_power와 compile_ultra -gate_clock -power로 합성 시 전력을 최적화합니다.