검증

CDL netlist - 각 element별 format 정리

쥴리정 2024. 9. 6. 16:25

Capacitor Element

 

아래 문자열들은 capacitor를 정의한다. (붉은 글자는 필수 항목임)

 

Cxxx n1 n2 <mname> c <tc1 <tc2 <scale <ic <m>>>>>

+ <L=1> <W=w> <A=a> <P=p> <parnam=pval> ... <$SUB=ns>

+ <$[mname] | $.MODEL=mname> <$A=a> <$P=p> <$X=x> <$Y=y> <$D=d>

 

Cxxx n1 n2 <mname> c <TC=tc1 <tc2 <scale>>>> <IC=ic> <M=m>

+ <L=l> <W=w> <A=a> <P=p> <parnam=pval> ... <$SUB=ns>

+ < <$[mname] | $.MODEL=mname> <$A=a> <$P=p> <$X=x> <$Y=y> <$D=d>

 

Cxxx n1 n2 <mname> C=c <TC1=tc1> <TC2=tc2> <SCALE=scale>

+ <IC=ic> <M=m> <L=l> <W=w> <A=a> <P=p> <parnam=pval> ... <$SUB=ns>

+ <$[mname] | $.MODEL=mname> <$A=a> <$P=p> <$X=x> <$Y=y> <$D=d>

 

첫번째와 두번째 구문에서 c 와 mname 순서는 바꿀 수 있다. 만약 c와 mname 둘 중 하나가 숫자로 인식될 수 없다면(예를 들어 숫자가 아니거나 미리 정의된 parameter가 아닐 경우) 이는 mname parameter로 가정한다.

실제 예는 아래와 같다.

 

C1 1 2 10P

C3 n1 n2 10P M=4 W=10U L=20U AAA=5 BBB="zz" $[mc] $comment

C4 n1 n2 10P 1 1 4 $SUB=3 $.MODEL=mc $A=10P $P=40U

 

Substrate pin이 하나보다 많은 capacitor를 정의하기 위해서는 .SUBCKT, .SUBCIRCUIT, .SUB 또는 .MACRO 를 사용하여 primitive subcircuit로 정의하여야 한다.

Argument
Name
Description Trace
Property
Name
Cxxx Capacitor element name. Must begin with a C followed by any number of allowed characters.  
n1 Positive terminal node name. String of any number of allowed characters.  
n2 Negative terminal node name. String of any number of allowed characters.  
mname Optional model name. String of any number of allowed characters.
May not be identical to the argument c.
 
c Capacitance in farads. May not be identical to mname. c
tc1 Ignored.  
tc2 Ignored.  
scale Optional scale factor.   
ic Optional initial voltage across the capacitor in volts. ic
m Optional multiplier factor used to simulate multiple parallel capacitors. Property m is evaluated immediately and not handed down through parameter passing.Normally, multiple capacitance(c), multiple width(w). If LVS Spice Replicate Device YES is specified in the rule file, then m parallel copies of the capacitor are created instead, and m for each copy is set to 1. Defaults to 1 if not specified. Alternative multiplier names can be specified with the LVS Spice Multiplier Name rule file statement. m
l Optional length. l
w Optional width. w
a Optional area. a
p Optional perimeter. p
parnam=
pval
Optional parameter name set to numeric or string value. Arbitrary parameter names are allowed. The parnam must begin with a letter followed by any number of allowed characters. You can specify any number of parnam=pval pairs.  parnam
ns Optional substrate terminal node name coded as a comment. String of any number of allowed characters.  
$[mname]
or
$.MODEL=
mname
Optional model name, coded as a comment. String of any number of allowed characters. Overrides the regular optional mname parameter.  
$A=a Optional area. Coded as comment. Overrides A, if present. a
$P=p Optional perimeter. Coded as comment . Overrides P, if present. p
$X=x
$Y=y
Optional x,y coordinates coded as comments. Integer numbers in database units. Used in hierarchical applications only.  
$D=d Optional number of Device statement identifier, coded as comment, where d is a non-negative integer. Used in extracted layout netlists to identify the rule file Device statement that generated the device. For example, $D=0 means the first Device statement in the rule file was used to define the netlist element. Parsed but not used.  

 

LVS component type : C

LVS component subtype : mname

LVS pin names : pos(positive), neg(negative), sub(optional substrate)

 

CDL netlist에서 *.CAPA 가 있다면 LVS 시 capacitor를 무시한다.


Junction Diode Element

아래 문자열들은 capacitor를 정의한다. (붉은 글자는 필수 항목임)

 

Dxxx nplus nminus mname <AREA=a> <PJ=pj> <M=m> <OFF>

+ <parnam=pval> ... <$SUB=ns> <$X=x> <$Y=y> <$D=d>

 

Dxxx nplus nminus mname <a <pj>> <M=m> <OFF>

+ <parnam=pval> ... <$SUB=ns> <$X=x> <$Y=y> <$D=d>

 

실제 예는 아래와 같다.

 

D1 1 2 mdio

D2 a b mdio 2P 3U M=3 AAA=5 BBB="zz"

D3 a b mdio AREA=2P PJ=3U M=3 $SUB=c

 

Substrate pin이 하나보다 많은 diode를 정의하기 위해서는 .SUBCKT, .SUBCIRCUIT, .SUB 또는 .MACRO 를 사용하여 primitive subcircuit로 정의하여야 한다.

Argument
Name
Description Trace
Property
Name
Dxxx Diode element name. Must begin with a D followed by any number of allowed characters.  
nplus Positive(anode) terminal node name. String of any number of allowed characters.  
nminus Negative(cathode) terminal node name. String of any number of allowed characters.  
mname Model name. String of any number of allowed characters.  
a Optional diode area. a
pj Optional periphery of junction. p
m Optional multiplier factor used to simulate multiple parallel diodes. Property m is evaluated immediately and not handed down through parameter passing.Normally, multiple area(a) and perimeter(p). If LVS Spice Replicate Device YES is specified in the rule file, then m parallel copies of the diodes are created instead, and m for each copy is set to 1. Defaults to 1 if not specified. Alternative multiplier names can be specified with the LVS Spice Multiplier Name rule file statement. m
OFF Ignored.  
parnam=
pval
Optional parameter name set to numeric or string value. Arbitrary parameter names are allowed. The parnam must begin with a letter followed by any number of allowed characters. You can specify any number of parnam=pval pairs.  parnam
ns Optional substrate terminal node name coded as a comment. String of any number of allowed characters.  
$X=x
$Y=y
Optional x,y coordinates coded as comments. Integer numbers in database units. Used in hierarchical applications only.  
$D=d Optional number of Device statement identifier, coded as comment, where d is a non-negative integer. Used in extracted layout netlists to identify the rule file Device statement that generated the device. For example, $D=0 means the first Device statement in the rule file was used to define the netlist element. Parsed but not used.  

LVS component type : D

LVS component subtype : mname

LVS pin names : pos(positive), neg(negative), sub(optional substrate)

 

CDL netlist에서 *.DIODE 가 있다면 LVS 시 diode를 무시한다.


Inductor Element

아래 문자열들은 inductor를 정의한다. (붉은 글자는 필수 항목임)

 

Lxxx n1 n2 <mname> <l <tc1 <tc2>>> <SCALE=scale> <M=m> <R=r>+ <parnam=pval> ... <$SUB=ns> <$[mname] | $.MODEL=mname>+ <$X=x> <$Y=y> <$D=d>

 

Lxxx n1 n2 <l=l <mname=""> >></l=l> <SCALE=scale> <M=m> <R=r>

+ <parnam=pval> ... <$SUB=ns> <$[mname] | $.MODEL=mname>

+ <$X=x> <$Y=y> <$D=d>

 

첫번째 구문에서의 mname과 "l" parameter 순서는 바꿀 수 있다. 만약 mname 과 "l" 둘 중 하나가 숫자로 인식될 수 없다면(예를 들어 숫자가 아니거나 미리 정의된 parameter가 아닐 경우) 이는 mname parameter로 가정한다.

다른 모든 calibre 디바이스들과 마찬가지로 $[mname] 또는 $.MODEL=mname 으로 지정된 model은 줄 앞쪽에서 지정된 model보다 우선된다.

Model 이름은 정의되지 않은 parameter로 인해 해당 위치의 이름을 숫자 값으로 평가하지 못하여 'tc1' 값과 구별된다. 따라서 parameter와 model 간의 이름 충돌을 피해야 한다. 이러한 충돌을 피하지 못하면 inductor의 잘못된 인식이 발생하여 tc1에 대해 정의되지 않은 parameter 오류가 발생하고 대신 parameter가 inductor의  model name이 될 수 있다.

 

실제 예는 아래와 같다. 

 

L1 1 2 100l2 n1 n2 100 10 20 SCALE=2 IC=30 M=4 DTEMP=40 R=200 F=300+ BAR="zzz" $SUB=n3 $[lmod]L3 na nb L=100 TC1=10 TC2=20 SCALE=2 IC=30 M=4 DTEMP=40 R=200+ F=300 $SUB=nc $.MODEL=lmod $X=1000 $Y=2000

 

Substrate pin이 하나보다 많은 inductor를 정의하기 위해서는 .SUBCKT, .SUBCIRCUIT, .SUB 또는 .MACRO 를 사용하여 primitive subcircuit로 정의하여야 한다.

Argument
Name
Description Trace
Property
Name
Lxxx Inductor element name. Must begin with a L followed by any number of allowed characters.  
n1 Positive terminal node name. String of any number of allowed characters.  
n2 Negative terminal node name. String of any number of allowed characters.  
mname Optional model name. String of any number of allowed characters.
May not be identical to the argument l.
 
l Optional inductance in henrys. May not be identical to mname. l
tc1 Ignored.  
tc2 Ignored.  
scale Optional scale factor. Multiple inductance (l) and resistance(r) by the factor.  
m Optional multiplier factor used to simulate multiple parallel inductors. Property m is evaluated immediately and not handed down through parameter passing.Normally, divides inductance(l) and resistance(r). If LVS Spice Replicate Device YES is specified in the rule file, then m parallel copies of the inductors are created instead, and m for each copy is set to 1. Defaults to 1 if not specified. Alternative multiplier names can be specified with the LVS Spice Multiplier Name rule file statement. m
r Optonal resistance in ohms. r
parnam=
pval
Optional parameter name set to numeric or string value. Arbitrary parameter names are allowed. The parnam must begin with a letter followed by any number of allowed characters. You can specify any number of parnam=pval pairs.  parnam
ns Optional substrate terminal node name coded as a comment. String of any number of allowed characters.  
$[mname]
or
$.MODEL=
mname
Optional model name, coded as a comment. String of any number of allowed characters.   
$X=x
$Y=y
Optional x,y coordinates coded as comments. Integer numbers in database units. Used in hierarchical applications only.  
$D=d Optional number of Device statement identifier, coded as comment, where d is a non-negative integer. Used in extracted layout netlists to identify the rule file Device statement that generated the device. For example, $D=0 means the first Device statement in the rule file was used to define the netlist element. Parsed but not used.  

LVS component type : L

LVS component subtype : mname

LVS pin names : pos(positive), neg(negative), sub(optional substrate)


MOSFET Element

아래 문자열들은 MOSFET를 정의한다. (붉은 글자는 필수 항목임)

 

Mxxx nd ng ns <nb> mname <L=l> <W=w> <AD=ad> <AS=as>

+ <PD=pd> <PS=ps> <NRD=nrd> <NRS=nrs> <RDC=rdc>

+ <RSC=rsc> <OFF> <IC=vds, vgs, vbs> <M=m> <parnam=pval> ...

+ <$LDD<[type]>> <$X=x> <$Y=y> <$D=d>

 

Mxxx nd ng ns <nb> mname <l> <w> <ad> <as> <pd> <ps>

+ <nrd> <nrs> <rdc> <rsc> <OFF> <IC=vds, vgs, vbs> <M=m>

+ <param=pval> ... <$LDD<[type]>> <$X=x> <$Y=y> <$D=d>

 

실제 예는 아래와 같다. 

 

M2 10 24 13 14 TYPE1

M3 10 24 13 TYPE2

Ma1 netd netg nets netb pmos L=3U W=2U AD=4P AS=5P PD=6U

+ PS=7U NRD=3 NRS=4 M=2 AAA=5 BBB="zz"

Ma2 netd netg nets netb pmos 3U 2U 4P 5P 6U 7U M=2

 

Standard number 보다 많은MOS pin을 정의하기 위해서는 .SUBCKT, .SUBCIRCUIT, .SUB 또는 .MACRO 를 사용하여 primitive subcircuit로 정의하여야 한다.

 

Argument
Name
Description Trace
Property
Name
Mxxx MOSFET element name. Must begin with a M followed by any number of allowed characters.  
nd Drain terminal node name. String of any number of allowed characters.  
ng Gate terminal node name. String of any number of allowed characters.  
ns Source terminal node name. String of any number of allowed characters.  
nb Optional bulk terminal node name. String of any number of allowed characters.  
mname Model name. String of any number of allowed characters.
May not be identical to the argument c.
 
l Optional channel length. l
w Optional channel width. w
ad Optional drain area. ad
as Optional source area. as
pd Optional drain perimeter. pd
ps Optional source perimeter. ps
nrd Optional number of squares of drain diffusion. nrd
nrs Optional number of squares of source diffusion. nrs
rdc Optional additional drain resistance due to contact resistance. rdc
rsc Optional additional source resistance due to contact resistance. rsc
OFF Ignored.  
vds Ignored.  
vgs Ignored.  
vbs Ignored.  
m Optional multiplier factor used to simulate multiple parallel MOSFETs. Property m is evaluated immediately and not handed down through parameter passing.Multiplies w, ad, as, pd, and ps. If LVS Spice Replicate Device YES is specified in the rule file, then m parallel copies of the MOSFET are created instead, and m for each copy is set to 1. Defaults to 1 if not specified. Alternative multiplier names can be specified with the LVS Spice Multiplier Name rule file statement. m
parnam=
pval
Optional parameter name set to numeric or string value. Arbitrary parameter names are allowed. The parnam must begin with a letter followed by any number of allowed characters. You can specify any number of parnam=pval pairs.  parnam
$LDD Optional LDD device designator, coded as a comment.  
(none) Optional implied W and L values. Computes if LVS Spice Implied MOS Areas is specified in the rule file.  
type Optional LDD device type. String of any number of allowed characters. Allowed(but not required) only in conjunction with $LDD. If specified, replaces mname.  
$X=x
$Y=y
Optional x,y coordinates coded as comments. Integer numbers in database units. Used in hierarchical applications only.  
$D=d Optional number of Device statement identifier, coded as comment, where d is a non-negative integer. Used in extracted layout netlists to identify the rule file Device statement that generated the device. For example, $D=0 means the first Device statement in the rule file was used to define the netlist element. Parsed but not used.  

Calibre는 구문이 모호하면서 3-pin 또는 4-pin 디바이스로도 해석 될 수 있는 경우에는 MOSFET을 4-pin 디바이스로 해석한다.

Rule file에서 M인 element name을 가진 디바이스는 디바이스 인식을 위한 사용자 정의로 간주되지만, hierarchical layout netlist에서 primitive subcircuit을 호출하지 않고 SPICE MOS element로 표현된다. 예를 들어,

 

DEVICE m(h) gate gate(g) sd(s) sd(d) bulk(b) [

   property w, l ....

]

 

위와 같은 룰 파일은 와래와 같은 layout netlist를 생성한다.

 

M1 1 2 3 4 h w=2e-6 l=1e-6 $X=210000 $Y=200000

 

이러한 M 디바이스 표현을 사용하기 위해서는 디바이스가 다음과 같은 조건을 충족해야 한다.

- Element name은 M 또는 m이어야 함

- 디바이스는 G, D, S의 3개 혹은 옵션pin B를 포함한 4개의 pin을 가지고 있어야 함

- G와 B는 다른 어떤 pin과도 위치가 바뀔 수 없음

- 모델 이름이 반드시 표시되어야 함

 

위의 네 가지 항목을 충족시키지 못하는 경우에는 디바이스는 아래의 예와 같은 pirimitive subcircuit 호출로 표현된다.

 

.SUBCKT m g s d b

.ENDS

 

X1 1 2 3 4 m $[h]

 

또한 4개보다 많은 pin을 가진 transistor도 사용자 정의 디바이스가 되어 이와 동일하게 primitive subcircuit 호출로 표현된다.

 

LVS component type:

 

Without $LDD:

mname 이 M 또는 m으로 시작하면 : MN

mname 이 P 또는 p으로 시작하면 : MP

mname 이 E 또는 e으로 시작하면 : ME

mname 이 D 또는 d으로 시작하면 : MD

그 외의 경우 :  M

 

With $LDD:

mname 이 M 또는 m으로 시작하면 : LDDN

mname 이 P 또는 p으로 시작하면 : LDDP

mname 이 E 또는 e으로 시작하면 : LDDE

mname 이 D 또는 d으로 시작하면 : LDDD

그 외의 경우 :  LDD

 

LVS component subtype : 보통 mname ; 만약 [type]이 지정되어 있다면 type.

LVS pin names : d(drain), g(gate), s(source), b(optional bulk).


BJT Element

아래 문자열들은 BJT를 정의한다. (붉은 글자는 필수 항목임)

 

Qxxx nc nb ns <[ns]> <ns> mname <AREA=a> <W=w> <L=l> <M=m> <OFF>

+ <parnam=pval> ... <$SUB=ns> <$EA=a> <$W=w> <$L=l> <$X=x> <$Y=y> <$D=d>

 

Qxxx nc nb ns <[ns]> <ns> mname  <a< <W=w> <L=l> <M=m> <OFF>

+ <IC=vbe, vce> <parnam=pval> ... <$SUB=ns> <$EA=a>

+ <$W=w> <$L=l> <$X=x> <$Y=y> <$D=d>

 

실제 예는 아래와 같다.

 

Q23 10 24 13 QMOD AREA=5P

Q23 10 24 13 QMOD 5P

Q50A neta netb netc netsub modq4 M=3 AAA=5 BBB="xx"

+ $L=2U $EA=4P $W=6U $comment

 

Substrate pin이 하나보다 많은 BJT를 정의하기 위해서는 .SUBCKT, .SUBCIRCUIT, .SUB 또는 .MACRO 를 사용하여 primitive subcircuit로 정의하여야 한다.

 

Argument
Name
Description Trace
Property
Name
Qxxx BJT element name. Must begin with a Q followed by any number of allowed characters.  
nc Collector terminal node name. String of any number of allowed characters.  
nb Base terminal node name. String of any number of allowed characters.  
ne Emitter terminal node name. String of any number of allowed characters.  
[ns] Optional substrate terminal node name enclosed in brackets. String of any number of allowed characters. Ignored by LVS.  
mname Model name. String of any number of allowed characters.
May not be identical to the argument c.
 
a Optional emitter area.  a
w Optional  emitter width. w
l Optional emitter length. l
m Optional multiplier factor used to simulate multiple parallel BJTs. Property m is evaluated immediately and not handed down through parameter passing.Normally, multiplies area(a) and width(w). If LVS Spice Replicate Device YES is specified in the rule file, then m parallel copies of the BJT are created instead, and m for each copy is set to 1. Defaults to 1 if not specified. Alternative multiplier names can be specified with the LVS Spice Multiplier Name rule file statement. m
OFF Ignored.  
vbe Ignored.  
vce Ignored.  
parnam=
pval
Optional parameter name set to numeric or string value. Arbitrary parameter names are allowed. The parnam must begin with a letter followed by any number of allowed characters. You can specify any number of parnam=pval pairs.  parnam
$SUB=ns Optional substrate terminal node name, coded as a comment. Overrides regular SPICE substrate terminal field,if present.   
$EA=a Optional emitter area, coded as comment. Overrides <AREA=a> or <a>. A practical use would be to use $EA in the source, calculate the A property in the layout, then use TraceProperty Q A A 1 for LVS comparision. a
$W=w Optional width, coded as comment. Overrides property W if present. w
$L=l Optional lenth, coded as comment. Overrides property L if present. l
$X=x
$Y=y
Optional x,y coordinates coded as comments. Integer numbers in database units. Used in hierarchical applications only.  
$D=d Optional number of Device statement identifier, coded as comment, where d is a non-negative integer. Used in extracted layout netlists to identify the rule file Device statement that generated the device. For example, $D=0 means the first Device statement in the rule file was used to define the netlist element. Parsed but not used.  

LVS component type : Q

LVS component subtype : mname

LVS pin names : c(collector), b(base), e(emitter), s(optional substrate).


Resistor Element

아래 문자열들은 resistor를 정의한다. (붉은 글자는 필수 항목임)

 

Rxxx n1 n2 <mname> r <tc1 <tc2 <scale <m <ac>>>>>

+ <L=l> <W=w> <parnam=pval> ... <$SUB=ns>

+ <$[mname] | $.MODEL=mname> <$W=w> <$L=l> <$X=x> <$Y=y> <$D=d>

 

Rxxx n1 n2 <mname> r <TC1=tc1 <tc2 <scale>>> <M=m> <AC=ac>

+ <L=l> <W=w> <parnam=pval> ... <$SUB=ns>

+ <$[mname] | $.MODEL=mname> <$W=w> <$L=l> <$X=x> <$Y=y> <$D=d>

 

Rxxx n1 n2 <mname> r <TC1=tc1> <TC2=tc2> <SCALE=scale>

+ <M=m> <AC=ac> <L=l> <W=w> <parnam=pval> ... <$SUB=ns>

+ <$[mname] | $.MODEL=mname> <$W=w> <$L=l> <$X=x> <$Y=y> <$D=d>

 

첫번째와 두번째 구문에서 r과  mname 순서는 바꿀 수 있다. 만약 r과 mname 둘 중 하나가 숫자로 인식될 수 없다면(예를 들어 숫자가 아니거나 미리 정의된 parameter가 아닐 경우) 이는 mname parameter로 가정한다.

실제 예는 아래와 같다.

 

R1 1 2 4 $comment

R2 n5 n6 4 TC=2 3 4 M=3 W=10U L=20U AAA=5 BBB="zz" $[x]R3 na nb 4 1 1 4 M=3 $SUB=3 $.MODEL=x $W=10U $L=20U

 

Substrate pin이 하나보다 많은 resistor를 정의하기 위해서는 .SUBCKT, .SUBCIRCUIT, .SUB 또는 .MACRO 를 사용하여 primitive subcircuit로 정의하여야 한다.

Argument
Name
Description Trace
Property
Name
Rxxx Resistor element name. Must begin with a R followed by any number of allowed characters.  
n1 Positive terminal node name. String of any number of allowed characters.  
n2 Positive terminal node name. String of any number of allowed characters.  
mname Optional model name. String of any number of allowed characters.
May not be identical to the argument c.
 
r Resistance in ohms. May not be identical to the mname. r
tc1 Ignored.  
tc2 Ignored.  
scale Optional scale factor. Multiplies resistance (r).  
m Optional multiplier factor used to simulate multiple parallel resistors. Property m is evaluated immediately and not handed down through parameter passing.Normally, divides resistance(r), multiplies width(w). If LVS Spice Replicate Device YES is specified in the rule file, then m parallel copies of the resistor are created instead, and m for each copy is set to 1. Defaults to 1 if not specified. Alternative multiplier names can be specified with the LVS Spice Multiplier Name rule file statement. m
ac Optional AC resistance for AC analysis. ac
l Optional length. l
w Optional width. w
parnam=
pval
Optional parameter name set to numeric or string value. Arbitrary parameter names are allowed. The parnam must begin with a letter followed by any number of allowed characters. You can specify any number of parnam=pval pairs.   
ns Optional substrate terminal node name coded as a comment. String of any number of allowed characters.  
$[mname] or
$.MODEL
=mname
Optional model name, coded as a comment. String of any number of allowed characters. Overrides the regular optional mname parameter.  
$W=w Optional width, coded as comment. Overrides the regular optional w parameter. w
$L=l Optional lenth, coded as comment. Overrides the regular optional l parameter l
$X=x
$Y=y
Optional x,y coordinates coded as comments. Integer numbers in database units. Used in hierarchical applications only.  
$D=d Optional number of Device statement identifier, coded as comment, where d is a non-negative integer. Used in extracted layout netlists to identify the rule file Device statement that generated the device. For example, $D=0 means the first Device statement in the rule file was used to define the netlist element. Parsed but not used.  

LVS component type : R

LVS component subtype : mname

LVS pin names : pos(positive), neg(negative), sub(optional substrate)