티스토리 뷰
target library와 link library 차이 | Design Compiler 라이브러리 설정 총정리
혜숑(hyeshong) 2023. 7. 25. 10:46목차
합성(Synthesis) 스크립트를 처음 보면 target library, link library, symbol library, synthetic library가 한꺼번에 나와서 헷갈립니다. 이름은 비슷하지만 역할이 완전히 다릅니다. 이 글에서는 Synopsys Design Compiler(DC) 기준으로 각 라이브러리가 하는 일과 설정 예시, 자주 나는 에러를 정리했습니다.
※ Design Compiler 기준 설명입니다. 다른 합성 툴(예: Cadence Genus)도 개념은 같지만 변수 이름과 명령은 다를 수 있습니다.
한눈에 비교
| 변수 | 역할 | 들어가는 것 |
|---|---|---|
| target_library | 합성(mapping) 때 툴이 실제로 골라 쓰는 셀의 라이브러리 | 공정의 표준 셀 라이브러리(.db) |
| link_library | 설계를 읽은 뒤 인스턴스 참조를 찾아 연결(resolve)하는 데 쓰는 라이브러리 목록 | 표준 셀, 메모리·IP 매크로, 이미 읽은 하위 설계("*") |
| symbol_library | 회로도(schematic)에서 셀을 어떤 모양으로 그릴지 정의 | 심볼 라이브러리(.sdb) |
| synthetic_library | 덧셈기·곱셈기 같은 연산 블록(DesignWare) 구현 후보 제공 | DesignWare 라이브러리(.sldb) |
Target Library: 툴이 "고를 수 있는 부품 상자"
RTL이 Netlist로 바뀔 때, 합성 툴은 논리 게이트, 플립플롭 같은 요소를 target library에 있는 셀로만 구현합니다. 그래서 목표 공정과 공정 코너(PVT)에 맞는 라이브러리를 지정해야 하고, 라이브러리에는 셀의 타이밍·전력·면적 정보가 들어 있습니다. 보통 반도체 제조사나 라이브러리 벤더가 제공합니다.
Link Library: 설계를 "이름 그대로 찾아 연결"하는 목록
Verilog 설계에는 인스턴스 이름과 모듈(셀) 이름만 적혀 있습니다. link 단계에서 툴은 이 이름이 가리키는 실체를 link_library에서 찾아 연결합니다. 그래서 다음이 모두 들어가야 합니다.
- "*": 이미 메모리에 읽어 둔 설계(하위 모듈 등)
- 표준 셀 라이브러리 (보통 target library와 같은 파일)
- 합성 대상이 아닌 메모리·IP 매크로 라이브러리
- synthetic library (DesignWare를 쓸 때)
소프트웨어 빌드의 "링크"처럼 참조를 해결한다는 점은 비슷하지만, ASIC 합성에서는 시뮬레이션용 라이브러리나 IP 코어 모음이 아니라 "참조를 해결하는 데 쓰는 라이브러리 목록"이라고 이해하면 정확합니다.
설정 예시
set target_library "std_cell_ss.db"
set synthetic_library "dw_foundation.sldb"
set link_library "* $target_library $synthetic_library sram_macro.db"
set symbol_library "generic.sdb"
파일 이름은 설명을 위한 예시이며, 실제 이름과 경로는 공정 제공 자료를 따릅니다.
자주 나는 에러
- Unable to resolve reference: link 단계에서 셀이나 모듈을 못 찾는 경우입니다. 해당 메모리·IP·하위 설계가 link_library에 없거나, 읽지 않은 상태입니다.
- target library에 없는 셀을 기대하는 경우: 합성 결과에 원하는 셀이 나오지 않습니다. 라이브러리 지정과 dont_use 설정을 확인하세요.
.lib와 .db는 무슨 관계인가요?
Liberty 형식의 .lib는 사람이 읽을 수 있는 텍스트이고, Synopsys 툴이 쓰는 .db는 이를 Library Compiler로 변환한 내부 이진 형식입니다. 둘 다 셀의 타이밍·전력 모델을 담고 있습니다.
공정 코너(PVT)와 라이브러리
같은 공정이라도 slow(ss), typical(tt), fast(ff) 코너별로 라이브러리가 나뉩니다. 보통 setup 확인에는 느린 코너, hold 확인에는 빠른 코너를 씁니다. 자세한 내용은 Setup Time과 Hold Time 총정리를 참고하세요.
함께 보면 좋은 글
- 합성 전체 흐름과 SDC 제약: Synthesis(합성) 총정리
- Liberty, LEF, DEF의 역할 구분: ASIC DEF·LEF 차이와 RTL·Netlist 차이 총정리
자주 묻는 질문
Q. target library와 link library는 같은 파일을 써도 되나요?
표준 셀은 둘 다에 필요해서 같은 파일을 쓰는 경우가 많습니다. 다만 link library에는 메모리·IP 같은 추가 항목이 더 들어갑니다.
Q. symbol library는 꼭 필요한가요?
회로도를 보지 않는다면 합성 결과에는 영향이 없습니다. 툴 GUI에서 회로도를 그릴 때 필요합니다.
Q. synthetic library는 왜 필요한가요?
RTL의 +, * 같은 연산을 DesignWare의 최적화된 연산 블록으로 구현할 때 사용합니다. 쓰지 않으면 해당 연산이 일반 게이트로만 구현됩니다.
Q. 라이브러리를 잘못 지정하면 무엇이 달라지나요?
코너나 공정이 다른 라이브러리를 쓰면 타이밍과 면적, 전력 결과가 실제와 달라져서 이후 단계에서 문제가 됩니다.
'반도체 공정 및 설계 > ASIC 설계' 카테고리의 다른 글
| Latch와 Flip-Flop 차이 총정리 | 레벨 트리거 vs 엣지 트리거 (0) | 2024.04.04 |
|---|---|
| 논리게이트 총정리 | AND·OR·NOT·NAND·NOR·XOR 진리표와 CMOS 구현 차이 (0) | 2023.07.25 |
| ASIC DEF·LEF 차이와 RTL·Netlist 차이 총정리 | P&R 입력·출력 파일 한눈에 (0) | 2023.07.24 |
| ASIC & IP (0) | 2022.12.27 |
| 커스텀 레이아웃(Custom layout) (0) | 2022.12.27 |