|
就如你所說,正統的Assura blackbox flow就是要在extract rule中加入pinlayer的定義,然後使用?blackboxcell去run LVS。
! X3 B# I6 k3 L8 j! m! s6 ?8 K. Y; |
但改extract rule的過程,大約分成二步:
" d1 Q2 {" H' H( N+ C6 @/ G1. Add pinLayer() description in layerDefs() part
3 l" N1 r4 i5 B: v& J2. merge it with normal metal layer by using geomOr(). , I0 q( t' a% h* r
9 H( {+ Q3 j! ~$ W8 {% z N1 p
可參見以下sample:0 g+ y I* g) e1 N; T* ?9 T
===========================================================7 A% _2 ^1 e* S/ K! f& p
drcExtractRules(
% G6 H! }8 c2 ZlayerDefs( "df2"$ w1 p6 k% z% H/ t
nwell = layer( "nwell" )& t2 X7 `! z; X0 C1 n1 E- C) N/ z s
nimp = layer( "nimp" )
" Z' l3 F e% h7 X5 W# }0 Opimp = layer( "pimp" )
# X: }* P/ y4 i0 P loxide = layer( "oxide" )
- j1 l& ]% W' {5 B2 H* Upres = layer( "pres" )
! A* c, Y8 j2 f7 `4 [8 Opoly = layer( "poly" )" t6 _3 k% w7 M; G+ Q- {6 y# c
contact = layer( "contact" )
- J% @; `' ]3 [1 b7 bmetal1 = layer( "metal1" )
( ? Q: g) R3 M' Y8 pvia = layer( "via" )
5 u! ?- \4 w3 T8 gmetal2 = layer( "metal2" )
! M9 k4 h% C1 hpolyPin = pinText( "poly" )" P3 u9 @4 I! B7 F0 e5 P
metal1Pin = pinText( "metal1" )# s. k1 E* O2 \/ v1 U0 v6 U- E3 i
metal2Pin = pinText( "metal2" )
" g/ w1 g! P, h+ W" Zmetal1BBpin = pinLayer( "metal1" ) ;reads in dfII black box
5 M$ Q. E3 ^; p }6 O9 [7 c% U0 zpins on metal1
+ `, w7 {( t2 U9 {6 lsubstrate = cellBoundary( "*" )+ E; p. D8 i' G& g3 a1 J; C) ~6 z# q
);end layerDefs section
& ]( u$ n8 R2 m. d# d% A7 d9 _;Define p-substrate region( h9 J7 x$ Y3 J; r
;-------------------------# J& Z# b# A8 a) q3 W6 |
psub = geomAndNot( substrate nwell )
' ~6 j f& \, ^' E, E8 s) R;Define device recognition shapes and device terminals
8 t0 ~+ w4 A$ t0 ~3 Z6 }9 v;----------------------------------------------------" o: k0 n0 y7 E% R5 @
ndiff = geomAnd( oxide nimp )
! E4 ]1 r Z# A$ Q4 O, rpdiff = geomAnd( oxide pimp )
7 z7 x( F: t$ Y" dngate = geomAnd( ndiff poly ); ]: u8 M. K' U, N3 l5 P2 m, M
nsd = geomAndNot( ndiff poly )
* H, {1 v$ J% [+ v% I# {' cpgate = geomAnd( pdiff poly )" d& j$ {* Q9 w' X$ N L/ Y
psd = geomAndNot( pdiff poly )
0 G: W, l& J7 N D f8 ?9 W' ypresBody = geomAndNot( pres via )/ Z Q" n! O! a) f% @* [$ T/ ~5 L& U
presTerm = geomAnd( pres via )5 ?1 ]1 r: t( n4 H9 K" y: j
;Merge black-box pins read in from pinLayer command with
* ?9 @) J1 b& @* Kconductive layer
' J& J/ Z6 W; g;---------------------------------------------------------------9 c/ W3 e2 N6 Y/ D: O$ ^! T
--------) K# l9 O) W- c, |, q
metal1 = geomOr( metal1 metal1BBpin )
. H' z/ ~' a1 q7 n5 s7 N;Define connectivity of layout; P# p0 I; c' {: N J
;-----------------------------
1 f; H0 J. q, _, y2 l6 ugeomConnect( via( via metal2 metal1 presTerm )
- r4 f2 o/ n8 fvia( contact metal1 poly nsd psd )
! Y8 B5 f. p! E/ ^' @1 mlabel( polyPin poly )# s: ~: b V8 f" a+ y
label( metal1Pin metal1 )! m7 k+ k `9 i8 z* ?
label( metal2Pin metal2 )
" a" G2 y- q7 m)
4 @8 @4 \% w: Q# fgeomStamp( psub psd error )! h9 A7 C; J! U8 c+ g5 S
geomStamp( nwell nsd error )) Q, |/ o U7 U2 F/ |; i1 k0 S3 X: s! O# I
....................
& _' U$ O% E; h8 Z6 t( }( w# F===========================================================6 a$ p0 X# L1 f9 R( w% m
% `$ f, V m2 |: y9 b試看看囉..
' w R& [7 C# s7 a- ^; WVeteran |
|