DEF(Design Exchange Format)는 설계의 물리적 구현 결과를 담는 파일입니다. Cell의 좌표, net의 routing 경로, power grid, blockage 등 P&R의 전 과정을 기록합니다. P&R tool의 주요 입출력 format입니다.
DEF는 PowerPlan DEF, SCAN DEF, Floorplan DEF 등 다양한 P&R 과정마다의 DEF들이 있습니다.
DEF 파일의 전체 구조
VERSION 5.8 ;
DIVIDERCHAR "/" ;
BUSBITCHARS "[]" ;
DESIGN top_design ;
UNITS DISTANCE MICRONS 1000 ;
DIEAREA ( 0 0 ) ( 500000 500000 ) ;
# Row 정의
ROW ROW_0 core_site 1000 1000 N DO 2400 BY 1 STEP 200 0 ;
ROW ROW_1 core_site 1000 2080 FS DO 2400 BY 1 STEP 200 0 ;
ROW ROW_2 core_site 1000 3160 N DO 2400 BY 1 STEP 200 0 ;
# Track 정의
TRACKS X 320 DO 3900 STEP 640 LAYER M2 ;
TRACKS Y 320 DO 3900 STEP 640 LAYER M1 ;
# Component (Cell Instance) 배치
COMPONENTS 5 ;
- U1 NAND2_X1 + PLACED ( 10000 1000 ) N ;
- U2 BUF_X4 + PLACED ( 10400 1000 ) N ;
- reg_0 DFFRNQ_X1 + FIXED ( 15000 1000 ) N ;
- reg_1 DFFRNQ_X1 + PLACED ( 15000 2080 ) FS ;
- ICG_0 ICG_X2 + PLACED ( 20000 1000 ) N ;
END COMPONENTS
# Pin (IO Port) 정의
PINS 3 ;
- clk + NET clk + DIRECTION INPUT
+ PLACED ( 0 250000 ) N
+ LAYER M3 ( -500 -500 ) ( 500 500 ) ;
- data_in[0] + NET data_in[0] + DIRECTION INPUT
+ PLACED ( 100000 0 ) N
+ LAYER M2 ( -500 -500 ) ( 500 500 ) ;
- data_out[0] + NET data_out[0] + DIRECTION OUTPUT
+ PLACED ( 400000 500000 ) N
+ LAYER M3 ( -500 -500 ) ( 500 500 ) ;
END PINS
# Special Net (Power/Ground)
SPECIALNETS 2 ;
- VDD ( * VDD )
+ ROUTED M1 320 + SHAPE STRIPE ( 0 1040 ) ( 500000 * )
NEW M5 5000 + SHAPE STRIPE ( 0 250000 ) ( 500000 * )
;
- VSS ( * VSS )
+ ROUTED M1 320 + SHAPE STRIPE ( 0 0 ) ( 500000 * )
NEW M5 5000 + SHAPE STRIPE ( 0 0 ) ( 500000 * )
;
END SPECIALNETS
# Signal Net Routing
NETS 3 ;
- net_1 ( U1 ZN ) ( reg_0 D )
+ ROUTED M1 ( 10320 1400 ) ( 10320 1600 )
NEW M1 ( 10320 1600 ) VIA1_1x1
NEW M2 ( 10320 1600 ) ( 15080 * )
NEW M2 ( 15080 1600 ) VIA1_1x1
NEW M1 ( 15080 1600 ) ( 15080 1400 )
;
- clk ( PIN clk ) ( reg_0 CK ) ( reg_1 CK ) ( ICG_0 CK )
+ ROUTED M3 ( 0 250000 ) ( 25000 * )
/* ... clock routing ... */
;
- data_in[0] ( PIN data_in[0] ) ( U1 A1 )
+ ROUTED M2 ( 100000 0 ) ( 100000 1000 )
/* ... */
;
END NETS
# Blockage
BLOCKAGES 1 ;
- LAYER M3
RECT ( 50000 50000 ) ( 100000 100000 ) ;
END BLOCKAGES
END DESIGN
DEF 주요 섹션 설명
DIEAREA는 chip의 경계를 좌표(μm × 1000)로 정의합니다. (0 0)에서 (500000 500000)은 500μm × 500μm die입니다.
ROW는 standard cell이 배치되는 행을 정의합니다. 시작 좌표, site 이름, 방향(N=normal, FS=flipped), 반복 횟수와 간격을 포함합니다.
COMPONENTS는 cell instance의 배치 정보입니다. PLACED는 tool이 이동할 수 있고, FIXED는 고정입니다. 좌표와 orientation(N, S, FN, FS, W, E, FW, FE)을 지정합니다.
NETS는 signal routing 정보입니다. 연결된 pin들과 metal layer, 좌표, via를 순서대로 기술합니다. ( 10320 1600 ) ( 15080 * )에서 *는 이전 좌표의 해당 값을 유지한다는 뜻입니다(Y좌표 유지 = 수평 routing).
SPECIALNETS는 power/ground net의 routing입니다. VDD/VSS stripe과 ring을 정의합니다.
DEF의 활용 단계
Floorplan DEF는 DIEAREA, ROW, macro placement만 포함합니다. Placement DEF는 COMPONENTS의 좌표가 추가됩니다. Routing DEF는 NETS의 routing 정보가 추가됩니다. 각 단계의 결과를 DEF로 저장하고, 다음 단계의 입력으로 사용합니다.
정리
DEF는 P&R의 물리적 결과를 기록하는 format입니다. Die area, row, cell placement, routing, power grid, blockage 정보를 담으며, flow의 각 단계를 연결합니다. LEF가 "library"라면 DEF는 "design instance"입니다.