DEF(.def) 파일이란 무엇인가요?

DEF(.def) 파일이란 무엇인가요?
Photo by UX Indonesia / Unsplash

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"입니다.

Enjoyed this article?

Get deep-dive semiconductor analysis and career insights delivered weekly. Free forever — no paywall, no upsell. Funded by sponsorships with a strict editorial firewall (Editorial Standards).

Work with me

Consulting · Collaboration · Support

Paid 1:1 technical consulting, speaker invitations, collaboration proposals, or just want to say thanks — all welcome.

View options →
VLSI Korea Free forever · No paywall · Weekly semiconductor insights from practicing engineers
Support