|
就如你所說,正統的Assura blackbox flow就是要在extract rule中加入pinlayer的定義,然後使用?blackboxcell去run LVS。+ p. G% d& b' }3 [
+ x* ^. b' k; x4 n9 ^7 |
但改extract rule的過程,大約分成二步:0 {' Y" M0 Q* A
1. Add pinLayer() description in layerDefs() part
- Q4 e8 B4 }+ Y. r/ i1 i2. merge it with normal metal layer by using geomOr().
8 K0 S9 F* K2 k" y0 D& D% D0 |& d1 r* C' _$ ?
可參見以下sample:
# z6 m$ E6 _5 d8 {9 |) B===========================================================
f4 C2 C- G$ QdrcExtractRules(2 {1 y' u% y6 X' M- l
layerDefs( "df2"
+ c9 l j5 }4 a( d6 R1 ^nwell = layer( "nwell" )
# ~$ o" p5 o0 ?( b# Xnimp = layer( "nimp" )7 U2 [8 }& b& I# K9 o G& w/ r& K
pimp = layer( "pimp" )0 _5 k$ _# d6 s9 L1 [2 j0 k4 [. F
oxide = layer( "oxide" )" X8 H( h j5 o1 U- h
pres = layer( "pres" )
/ Z" c- V/ p3 e ypoly = layer( "poly" )$ Z W, I5 @$ U- s! H
contact = layer( "contact" )
* E9 p1 ^; n7 n2 O4 t. H5 E5 w0 Ymetal1 = layer( "metal1" )
; n. C5 v9 ^, F7 dvia = layer( "via" )$ ?: A) V3 O% _$ v5 k
metal2 = layer( "metal2" )9 b- F5 g9 ~; a! E3 n( |; c
polyPin = pinText( "poly" )* ~8 y. d# C2 Z/ Z
metal1Pin = pinText( "metal1" )
\) W+ u/ \- E- `metal2Pin = pinText( "metal2" )
- M! d* n9 w4 V" X2 kmetal1BBpin = pinLayer( "metal1" ) ;reads in dfII black box+ _ e9 U; I# M P$ F
pins on metal1
+ A; |( ]9 [6 q6 hsubstrate = cellBoundary( "*" )- E6 G v4 z; k" Q1 P, J4 t
);end layerDefs section
2 _6 Z) g5 w4 R;Define p-substrate region% w" e5 q) d( W6 \- r* \6 `
;-------------------------4 }( x. U/ l Y
psub = geomAndNot( substrate nwell )3 l* @% N+ B/ ~1 @/ s* }
;Define device recognition shapes and device terminals( X+ W& u8 p7 a+ _4 c" j. d
;----------------------------------------------------
! U1 D/ O% Q# fndiff = geomAnd( oxide nimp )
9 I: Z& N2 L9 C: s5 Ypdiff = geomAnd( oxide pimp )
) A- z8 [* C: H# g3 J: @- |2 L2 wngate = geomAnd( ndiff poly )- k0 V$ e' w' j8 R" j6 A1 Y& \
nsd = geomAndNot( ndiff poly )
7 J' d1 n0 J, x* upgate = geomAnd( pdiff poly )6 o2 u0 X. H7 y7 o( X% Q i
psd = geomAndNot( pdiff poly )1 [) S8 A4 o" g: i
presBody = geomAndNot( pres via )
" @& K' j4 ~; mpresTerm = geomAnd( pres via )) b; x, H& C/ K3 ?$ q
;Merge black-box pins read in from pinLayer command with- U) C% a3 ?' w1 F; [! T
conductive layer5 k3 Y& n/ D- ?- C2 K6 h
;---------------------------------------------------------------- R D$ x) J2 z0 {$ R1 j
--------
: ^, w( q* Z% q5 i, |metal1 = geomOr( metal1 metal1BBpin ) Z7 m3 e- d6 K0 e& h+ ^1 x; u& q
;Define connectivity of layout* }1 K+ ?3 g% {1 W, D
;-----------------------------, r- q# r/ k V* l$ p0 Y3 E3 Q7 d0 H
geomConnect( via( via metal2 metal1 presTerm )# {5 F4 j' N0 C% Y- Y
via( contact metal1 poly nsd psd )
6 ?" z3 a j, |2 ~% t; G4 _* Plabel( polyPin poly )
' n; a0 v% W* elabel( metal1Pin metal1 ). n# W' S! v# d2 k; |* v2 q
label( metal2Pin metal2 )& k' L- K& ]8 H' U& C0 g( j$ h
)# G% Y$ ?: s% @0 ]
geomStamp( psub psd error )
+ [7 C: K1 y% b2 T Z0 SgeomStamp( nwell nsd error )
6 g5 s& h7 ]' G2 W4 O1 A....................& G! V) s+ K) U% h
===========================================================/ O' L1 s: Q( F, B
. |' Y$ V2 }. P7 X& K* B$ j試看看囉..$ F. D* ]1 d3 p! ^
Veteran |
|