SVRF(Standard Verification Rule Format)는 Calibre에서 DRC, LVS, ERC rule을 기술하는 파일입니다. Foundry가 Fabless에게 제공하며, layout이 제조 규칙을 만족하는지 검증하는 데 사용됩니다.
DRC Rule Deck 예제
// example_drc.svrf
// Calibre DRC Rule Deck
LAYOUT PRIMARY top_design
LAYOUT PATH "top_design.gds"
LAYOUT SYSTEM GDSII
DRC RESULTS DATABASE "drc_results.db"
DRC SUMMARY REPORT "drc_summary.rpt"
// ============================================
// Layer 정의
// ============================================
LAYER M1 31
LAYER VIA1 51
LAYER M2 32
LAYER POLY 5
LAYER DIFF 1
LAYER NWELL 2
// Derived layer
M1_WIDE = M1 WITH WIDTH > 0.100
// ============================================
// M1 Design Rules
// ============================================
// M1 minimum width: 0.032um
M1_MIN_WIDTH {
INTERNAL M1 < 0.032
}
// M1 minimum spacing: 0.032um
M1_MIN_SPACE {
EXTERNAL M1 < 0.032
}
// M1 minimum area: 0.015um^2
M1_MIN_AREA {
AREA M1 < 0.015
}
// M1 wide wire spacing: width > 0.1um needs 0.05um spacing
M1_WIDE_SPACE {
EXTERNAL M1_WIDE M1 < 0.050
}
// ============================================
// VIA1 Rules
// ============================================
// VIA1 enclosure by M1: 0.010um
VIA1_ENC_M1 {
ENCLOSURE VIA1 M1 < 0.010
}
// VIA1 enclosure by M2: 0.010um
VIA1_ENC_M2 {
ENCLOSURE VIA1 M2 < 0.010
}
// VIA1 minimum spacing: 0.070um
VIA1_MIN_SPACE {
EXTERNAL VIA1 < 0.070
}
// ============================================
// Density Rules
// ============================================
// M1 density: 20% ~ 80%
M1_DENSITY_MIN {
DENSITY M1 < 0.20 WINDOW 50.0 STEP 25.0
}
M1_DENSITY_MAX {
DENSITY M1 > 0.80 WINDOW 50.0 STEP 25.0
}
// ============================================
// Antenna Rules
// ============================================
ANTENNA_M1_RATIO {
ANTENNA RATIO M1 4000.0 POLY
}
DRC Rule 문법 설명
INTERNAL은 같은 polygon 내에서의 최소 거리(width) check입니다. EXTERNAL은 서로 다른 polygon 간의 최소 거리(spacing) check입니다. ENCLOSURE은 한 layer가 다른 layer를 얼마나 감싸는지 check합니다. AREA는 polygon의 면적 check입니다. DENSITY는 특정 window 내에서 metal 밀도를 check합니다.
LVS Rule Deck 예제
// example_lvs.svrf
LAYOUT PRIMARY top_design
LAYOUT PATH "top_design.gds"
LAYOUT SYSTEM GDSII
SOURCE PRIMARY top_design
SOURCE PATH "top_design.v"
SOURCE SYSTEM SPICE
LVS REPORT "lvs_report.rpt"
LVS REPORT OPTION S
// Layer 정의
LAYER M1 31
LAYER POLY 5
LAYER DIFF 1
LAYER NWELL 2
LAYER PPLUS 3
LAYER NPLUS 4
LAYER CONT 50
// Device 인식
// NMOS: DIFF와 POLY가 교차하고 PPLUS가 없는 영역
NGATE = DIFF AND POLY NOT PPLUS
// PMOS: DIFF와 POLY가 교차하고 NWELL 위에 있는 영역
PGATE = DIFF AND POLY AND NWELL
// Connectivity
CONNECT M1 DIFF BY CONT
CONNECT M2 M1 BY VIA1
// Device 추출
DEVICE MN NMOS NGATE POLY DIFF DIFF
DEVICE MP PMOS PGATE POLY DIFF DIFF
// LVS 비교
LVS COMPARE
LVS에서 하는 일
LVS rule deck은 layout에서 device(transistor)를 인식하고, connectivity를 추출하여 schematic(또는 netlist)과 비교합니다. Layer의 Boolean 연산(AND, OR, NOT)으로 derived layer를 생성하고, 이를 통해 NMOS/PMOS를 식별합니다. CONNECT로 layer 간 전기적 연결을 정의합니다.
Calibre 실행
# DRC 실행
calibre -drc -hier example_drc.svrf
# LVS 실행
calibre -lvs -hier example_lvs.svrf
# 결과 확인
calibredrv -m drc_results.db # GUI로 결과 확인
정리
SVRF는 Calibre의 DRC/LVS rule을 기술하는 format입니다. Foundry가 제공하며, layer 정의, design rule check, device 인식, connectivity 추출 규칙을 담고 있습니다. DRC는 제조 규칙 준수를, LVS는 설계 의도와의 일치를 검증합니다.