Layout/Verification

[SVRF] PAD to clamp (diode) path 저항 계산 - 2편

호드맨 2017. 2. 6. 15:33

앞서 1편에서는 원본 DB에서 원하는 NET만 추출하는 것을 해 보았다. 이번 편이 가장 복잡한데, 구상한 알고리즘대로 차례대로 진행해 보겠다. 먼저 원하는 NET을 추출한 DB의 경우 PAD에 Pin이 있을 테고, 그와 연결된 Metal, Via가 있을 것이다. 물론 반대쪽 끝에는 pin이 없다. 원하는 NET의 LPE를 추출할 것인데, LVS를 Correct 시킬 필요는 없다. svdb만 만들어지면 되므로 가짜 CDL netlist를 작성해 보자. 작성한 TEST.cdl 파일은 아래와 같다.

 

.SUBCKT TEST AVDD08

R111 AVDD08 bottom rm1 a=1

.ENDS

rm1 (Metal1 저항) 이 하나 놓인 가짜 CDL netlist다. 껍데기라지만, 실제 DB에 device가 하나도 없다면 oasis DB와 똑같다. LVS rule과 LPE rule은 한 파일로 작성하였다. 여기서 내가 작성한 STEP2.rule 파일은 아래와 같다. 실제론 Layer 정보들 때문에 더 길지만 짧게 옮겨왔다.

 

LAYOUT PATH "STEP1.oas"LAYOUT PRIMARY "TEST"LAYOUT SYSTEM OASIS

SOURCE PATH "TEST.cdl"
SOURCE PRIMARY "TEST"
SOURCE SYSTEM SPICE 

LVS REPORT "TEST.lvs.rep" 
MASK SVDB DIRECTORY "svdb" XRC
LAYOUT CASE NO
LAYOUT DEPTH ALL
VIRTUAL CNNECT NAME "?"

PEX NETLIST out.pex.netlist HSPICE 1 SOURCENAMES
RESISTANCE TEMPERATURE NOMINAL 25
UNIT CAPACITANCE FF
UNIT LENGTH U
UNIT RESISTANCE OHM
UNIT TIME US
FLAG ACUTE YES
FLAG OFFGRID YES
FLAG SKEW YES
PRECISION 1000

PEX REDUCE TICER 1 MAXDEG 2
TEXT DEPTH PRIMARY
PORT DEPTH PRIMARY

LAYER MET1 1131LAYER MAP 31 DATATYPE 0 1131LAYER MAP 31 DATATYPE 1 1131TEXT LAYER 31 ATTACH 31 MET1
LAYER MET2 1132LAYER MAP 32 DATATYPE 0 1132LAYER MAP 32 DATATYPE 1 1132TEXT LAYER 32 ATTACH 32 MET2
LAYER MET3 1133LAYER MAP 33 DATATYPE 0 1133LAYER MAP 33 DATATYPE 1 1133TEXT LAYER 33 ATTACH 33 MET3
LAYER MET4 1134LAYER MAP 34 DATATYPE 0 1134LAYER MAP 34 DATATYPE 1 1134TEXT LAYER 34 ATTACH 34 MET4
LAYER MET5 1135LAYER MAP 35 DATATYPE 0 1135LAYER MAP 35 DATATYPE 1 1135TEXT LAYER 35 ATTACH 35 MET5

LAYER VIA1 1151
LAYER MAP 51 DATATYPE 0 1151
CONNECT MET1 MET2 BY VIA1 

LAYER VIA2 1152
LAYER MAP 52 DATATYPE 0 1152
CONNECT MET2 MET3 BY VIA2

LAYER VIA3 1153
LAYER MAP 53 DATATYPE 0 1153
CONNECT MET3 MET4 BY VIA3

LAYER VIA4 1154
LAYER MAP 54 DATATYPE 0 1154
CONNECT MET4 MET5 BY VIA4

MET1_copy = COPY MET1  // (★)
VIA1_copy = COPY VIA1  // (★)
CONNECT MET1_copy MET1 BY VIA1_copy // (★)

DEVICE R(rm1) VIA1_copy MET1 MET1_copy netlist model rm1 [
     property a
     a = area(VIA1_copy)
]

RESISTANCE SHEET MET1 [ 0.10 0 ]
RESISTANCE SHEET MET2 [ 0.09 0 ]
RESISTANCE SHEET MET3 [ 0.08 0 ]
RESISTANCE SHEET MET4 [ 0.07 0 ]
RESISTANCE SHEET MET5 [ 0.01 0 ]
RESISTANCE CONNECTION MET1 MET2 [ 0.05 0 ]
RESISTANCE CONNECTION MET2 MET3 [ 0.05 0 ]
RESISTANCE CONNECTION MET3 MET4 [ 0.05 0 ]
RESISTANCE CONNECTION MET4 MET5 [ 0.03 0 ]

저항값만을 뽑을 것이므로 TICER reduction 값을 주었다. 해당 reduction option에 의해 복잡한 power mesh에서 lpe 파일 용량만 봐도 엄청나게 줄어드는 것을 확인할 수 있다. 주석으로 ★친 곳을 보면 VIA1, Metal1을 copy 하여 새로운 가상의 Layer를 만들어 rm1 device의 한 포트를 그곳에 연결했다.

calibre -lvs -hier -phdb STEP2.rule
calibre -xrc -pdb -r STEP2.rule
calibre -fmt -r STEP2.rule

예전 버전의 calibre는 3단계에 걸쳐서 진행하게 되었었다. 잘 작성되었다면, out.pex.netlist라는 파일과 함께 그 parasitic 정보를 담고 있는 out.pex.netlist.pex , out.pex.netlist.TEST.pxi 파일이 작성될 것이다. 마지막으로 hspice simulation 부분은 다음 편에서 다루도록 하겠다.