; VTIDrc.rul
; ============================================================================
;  Copyright (C) 1986, 1987 by Xerox Corporation.  All rights reserved.
;  Written by Mark Ross  January 13, 1987 8:24:13 am PST
;
;   The design rules contained herein are proprietary and confidential.  Any 
;   release of these rules without the written consent of Xerox Corporation is prohibited.
;    
;    Command file for 2 micron design rules.
;       Basic design rules (i.e., those common to VTI and Dragon) are contained in this file.
;       An advisory set of rules can be found by looking in AdvisoryDrc.rul.
;
;	Rules which are not checked:
;		Bonding pads, I/O rules, well and substrate Taps.  For more info on these see
;			VTI document 02-ECLA-2 rev *F 
;
;    Edit History:
;
; -- Last Edited: Ross March 30, 1987 9:26:37 am PST
;			Added checks for max. size of vias and contacts.
;			Added the complete set of VTI design rules.
; -- Last Edited: Ross April 16, 1987 1:38:30 pm PDT
;			Modified check for large vias not to flag large vias under oxide cut
;
; ============================================================================

 
 
*DESCRIPTION
PROGRAM-DIR = /user/csl/ecad/drc16p/
SYSTEM = CIF
SCALE = 0.01 MIC
RESOLUTION = 0.01 MIC
INDISK = in.cif
OUTDISK = drcout.cif
KEEPDATA = SMART
MODE = EXEC NOW
SYSOUT = CIF 
SCALEOUT = 0.25 MIC
PRINTFILE = drcout
*END


; ============================================================================
;     Specify the input layers coming from the tape.
; ============================================================================
*Input-Layer
nwell = CNW
nwcont = CNWC
pwcont = CPWC
ndiff = CND
pdiff = CPD
poly = CP
cont = CC
met1 = CM
via = CC2
met2 = CM2
butting = CB
pad = CG

*END

; ============================================================================
;     Actual DRC follows:
; ============================================================================

*Operation

;  Create all of the right "things" from the mask data

NOT cont butting contact  ; Eliminate all of the butting contacts.  
AND cont butting butcont  ; The residue will go here.  
OR nwcont pwcont cdiff
OR pdiff ndiff sdiff
OR cdiff sdiff diff
AND poly ndiff ntrans
AND poly pdiff ptrans
OR ptrans ntrans trans
 ; Generate necessary layers
 AND poly contact polcont
 AND diff contact dcont
 AND pdiff contact pdcont
 AND ndiff contact ndcont 
 



;     Checks (listed in order of VTI design rules)

;  **** Tub Rules ****

WIDTH nwell LT 4 OUTPUT errw1 1   ; VTIRule 6.1.1 (4)
EXT[h] nwell LT 12 OUTPUT errw2 1    ; VTIRule 6.1.2 (12)


;  **** Diffusion Rules ****

WIDTH diff LT 2 OUTPUT errd1 2          ; VTIRule 6.3.1  (2)

ENC[t] trans sdiff LT 0.01 &
WIDTH trans lt 3 OUTPUT errd2 2 ; VTIRule 6.3.2  (3)

EXT[h]  diff LT 3.5 OUTPUT errd3 2        ; VTIRule 6.3.3  (3.5)
EXT[o] sdiff cdiff LT 3.5 OUTPUT errd4 2  ; VTIRule 6.3.4 (3.5) 
ENC[to] pdiff nwell LT 5 OUTPUT errd5 2  ; VTIRule 6.3.5 (5)
ENC[to] nwcont nwell LT 3 OUTPUT errd6 2   ; VTIRule 6.3.6  (3)
EXT[to] ndiff nwell LT 7 OUTPUT errd7 2   ; VTIRule 6.3.7  (7)  
EXT[to] pwcont nwell LT 5 OUTPUT errd9 2  ; VTIRule 6.3.9  (5)
EXT[to] pwcont nwcont LT 4 OUTPUT errd10 2  ; VTIRule 6.3.10  (4)
EXT[to] pdiff ndiff LT 12 OUTPUT errd11 2  ; VTIRule 6.3.12  (12)

ENC trans diff LT 3 OUTPUT errd12 2          ; VTIRule 6.3.18  (3)


 ;  **** Poly Rules ****
 
 WIDTH poly LT 2 OUTPUT errp1 3  ; VTIRule 6.4.1  (2)
 EXT[h] poly LT 2.5  OUTPUT errp2 3  ; VTIRule 6.4.3  (2.5)
 
 ENC[t] trans sdiff LT 0.01 &
 ENC[t] trans poly LT 2 OUTPUT errp3 3  ; VTIRule 6.4.4  (2)
 
 EXT[t] poly diff LT 1 OUTPUT errp4 3 ; VTIRule 6.4.5  (1)
 AND poly cdiff foo OUTPUT errp5 3  ; Poly over tap
 
 
 ;  **** Contact Rules ****
  
 
 WIDTH contact LT 2  OUTPUT errc1 4   ; VTIRule 6.5.1.1  (2)
 WIDTH[r] contact LT 5.5 gdcont 
 NOT contact gdcont bdcont OUTPUT errc9 4  ; VTI rule 6.5.1.2 (5x5)
 EXT[h] contact LT 3 OUTPUT errc2 4   ; VTIRule 6.5.1.3  (3)
 ENC[to] contact poly LT 1 OUTPUT errc3 4  ; VTIRule 6.5.1.4  (1)
 ENC[to] contact diff LT 1 OUTPUT errc4 4  ; VTIRule 6.5.1.5  (1) 
 EXT[t] dcont trans LT 1.5  OUTPUT errc5 4  ; VTIRule 6.5.1.6  (1.5)
 EXT[t] polcont diff LT 2 OUTPUT errc6 4  ; VTIRule 6.5.1.7  (2)
 ENC[to] contact met1 LT 1 OUTPUT errc7 4  ; VTIRule 6.5.1.8  (1)
 EXT[o] trans cdiff  LT 3 OUTPUT errc8 4  ; VTIRule 6.5.2.3  (3)

;  Any "butting contact" which is not generated atomically will be flagged.

;  **** Met1 Rules ****

 WIDTH met1 LT 2 OUTPUT err1m1 5   ; VTIRule 6.6.1  (2)
 EXT[h] met1 LT 3 OUTPUT err1m2 5   ; VTIRule 6.6.2  (3)
 
 
 ;  **** Via Rules ****

 WIDTH via LT 2 OUTPUT errv1 6   ; VTIRule 6.7.2  (2)
 WIDTH[r] via LT 5.5 gdvia 
 NOT via gdvia bdvia 
 NOT bdvia pad rbdvia OUTPUT errv9 6    ; VTIRule 6.7.3 big via over pad ok
 EXT[h] via LT 4 OUTPUT errv2 6  ; VTIRule 6.7.4  (4)
 ENC[to] via met1 LT 1 OUTPUT errv3 6  ; VTIRule 6.7.5  (1)
 ENC[to] via met2 LT 1 OUTPUT errv4 6  ; VTIRule 6.7.5   (1)
 EXT via poly LT 2 OUTPUT errv5 6  ; VTIRule 6.7.6  (2)
 ENC[to] via poly LT 3  OUTPUT errv6 6  ; VTIRule 6.7.7  (3)
 EXT[to] via dcont LT 2 OUTPUT errv7  6 ; VTIRule 6.7.8  (2)
 EXT[to] via polcont LT 3 OUTPUT errv8  6 ; VTIRule 6.7.9  (3)
 
 
 ;  **** Met2 Rules ****

 WIDTH met2 LT 3 OUTPUT err2m1 7   ; VTIRule 6.8.1  (3)
 EXT[h] met2 LT 4 OUTPUT err2m2 7   ; VTIRule 6.8.2  (4)
 
 
 ;  **** Misc. Checks ****
 
AND ndiff nwell junk1 OUTPUT errsc1 8  ;  Check for bad ndiff
NOT pdiff nwell junk2 OUTPUT errsc2 8  ; Check for bad pdiff

*END