Home
s s
Contents
1. py2 width T py width rectangle r x2 y1 y2 node move the second pair to the first spot and loop around px px2 E
2. new gt low low point to the lowest box of the type new gt prev x hightype point to the previous node new update the pointer array to last element low low gt south p top east convert the layer list into kic file 0 loop through the layers while i lt NLAYER check to see if the layer is empty if x i t 0 sprintf w L Ssa n numtotype i put layer label fputs w fp Dec 12 1983 kiclayers c Page 2 put out boxes while x i 91 printnode x ij gt high x i gt 10w fp Output the kic line x i z i prev move backwards through the pointers Dec 12 1983 nain c Page 1 finclude defs main main routine to run SIMPL exinit external variables initialized interact get interactive inputs edge find the mask edges init initialized the grid inputs read inputfile and simulate steps diagnostic print number of rectangles across and down p WM and down d Xn numacroes numdown mem Dec 12 1983 maskname c Page 1 finclude lt stdio h gt finclude defs struct maskname line this take a kic input line and puts the mask name into a node char line extern struct nnode maskhome struct nnode node nalloc char mnane 6 index create a pointer list of the masks and maskcrossings node maskhome mas
3. r E M 7 Zn ps n we SS MN AS NN OSI PD et Y ALL oe 5 4 SYST INESSE fa dp tyr o vtt 7 7 77 2 jy 4 22 Yj t 7 f YR a 7 72 2 P bis 9 A IL 27 d v 785 ae 77 4 IM n NM aN s 5 7 E P 7 np M oe BiG hy E D YY OEE ee 2 ee T 77 A a d Commands 11 SIMPL Commands Introduction This section of the user manual catalogs both the interac tive inputs and process input command statements that are presently contained in SIMPL The first two lists are terse summary of the inputs and their arguments for quick reference Detailed descriptions of each statement follow next t Commands 12 LIST OF INTERACTIVE INPUTS Cin sequential o ord order split hzhorizontally vzvertically microns per lambda start value stop value scale factor in y direction the y plane you want split the mask file the input file the base name for the output files output profile at every step yzyes nzno LIST OF PROCESS INPUTS User p process commands Ocess commands C comments may be added with this command SUBS TYPE DOPE OXID THICK DEPO TYPE DOPE THICK MASK POL MASK BLOAT
4. this routine allocates space for the structure nnode char a110oc return struct nnode alloc sizeof struct nnode Dec 12 1983 boxes c Page 1 finclude lt stdio h gt finclude defs boxes line node this routine takes a cif line and determines the coordinates of the edge of the box the line is in the form of B delta x delta y x avg y avg char line struct node int x y delx dely xi y x2 y2 char box 10 get arguements if sscanf line s d a fa Zd box ddelx amp dely 4x amp y 5 rintf wrong num of arguments n calculate edges x x delx 2 left edge x2 x delx right edge yi dely 2 bottom edge y2 yi dely top edge check to see if this box is in the cross section Dec 12 1983 check c Page 1 finclude defs checkacrosa this routine checks to see if there are any horizontal splits that are not needed i e each box above the split is the same the box below the split extern struct tnode home struct tnode box left north left home start in the upper left corner loop throught the rows while left left gt south 0 box left loop through the columns as long as there is a match while nodelayer box nodelayer box gt north box box east if we reached the end or the row and all matched then rem
5. DS O 1 1 L NWEL Layer name is NWEL B 4400 2400 2200 0 box which forms the mask DF end of data E CIF file for comparison CIF file of symbol hierarchy rooted at ex mask DS 1 1 1 9 ex mask L NWEL B 4400 2400 2200 0 1 m Getting Started 9 When SIMPL is run with the test example above the follow ing are the results to expect The output to the terminal OUTPUT COMMENT 1 split hshorizontally vzvertically h microns per lambda 1 0 start value 50 stop value 0 scale factor in y direction 10 the y plane you want split 0 the mask file mask the input file ex process the base name for the output files ex out output profile at every step yzyes nzno n AWEL 44000 0 mask name mask crossings comnands C C comments may be added with this command C this example implants a N WELL into a P substrate 01 SUBS TYPE P DOPE 1 00e 14 02 OXID THICK 1 00 03 DEPO TYPE RST DOPE 0 00e 00 THICK 0 50 04 MASK POL NEG WMASK NWEL BLOAT 0 00 SHIFT 0 00 05 ETCH TYPE ERST THICK 0 60 05 ETCH THICK 1 1 07 ETCH TYPE RST THICK 0 60 08 DOPE TYPE N PEAK 1 00e 16 DEPTH 1 00 DELTA 0 500 BLOCK 0 50 across and down 3 18 diagnostics memory used 2408 i M The output file ex out is a KIC file which be viewed Getting St
6. Fig 5 Horizontal Splitting Example on 9 Structure 23 HOW TO COMPILE SIMPL SIMPL is compiled with the aid of a makefile The MAKE program keeps track of which files which have been updated and will only recompile those The source code for simpl is located on ESVAX in sam3 simpl prog When in this directory it is only necessary to type make and the make program will compile all new files The executable code is then put into a file called simpl If it is necessary to recompile the whole program after a change in the operating system then you must first remove all the files which end o This is done by entering rm Then recompile using the make program The updated executable is always put in simpl CJ Structure 24 Se OEE SIMPL has five layers which do not have a material name attached to them They are called L1 L2 L3 L4 and L5 The user is free to use these at his disposal These layers do not have any special properties such as SI POLY OX RST or ERST These layers can be used as masks for doping or etching they can not be oxidized or doped and they can not be exposed to ERST in a masking step They can be used as interconnect insulator or a nitride like material for local ox dation The names of these layers can also be changed to reflect the name of the material which they represent The name conven tion is one to four characters starting with at least one capi
7. else t logiO fabs doping 0 5 if t gt 20 0 t 20 if the log doping is less than 12 then call it intrinsic otherwise calculate the layer number for that doping if t lt 12 0 layer SI else if doping gt 0 layer SI 11 t else if doping lt 0 layer 51 2 return layer double dopinglevel npeak calc the discrete doping level for any doping level the doping of 10 includes doping levels from 5e x 1 to 3ex min doping is 1 12 double npeak double abpeak sgn fabs double nhigh 5e19 double nlow Seti abpeak fabs npeak if doping is too low then set it to intrinsic otherwise find discrete levei if abpeak lt nlow nhigh O else while nhigh gt abpeak nhigh 10 0 if npeak lt 0 nhigr 1 panera Dec 12 1983 edge c Page 1 include defs include lt stdio h gt define MAXLINE 200 edge find the mask edges in the appropriate area and return inputfile extern struct nnode maskhome extern char struct nnode maskname nalloc node char line MAXLINE FILE fp fopen node 0 the mask crossings are stored in pointer structure every mask layer has its own pointer called node maskhome nalloc maskhome 5nerxtmask 0 fp fopen MASKFILE r look in maskfile for cif layout if fp 0 printf maskfile fs doesn t exist n M
8. if high gt pres gt stop pres gt stop high next pres gt nextpair pres gt nextpair 0 while next 0 if next gt start gt high pres gt nextpair next break else if next gt start lt high 88 next gt stop gt high pres gt stop next gt stop pres gt nextpair next gt nextpair break break Dec 12 1983 photo c Page 1 finclude defs photo polarity name bloat shift expose resist with mask name and of set polarity bloat makes the mask wider and shift is a shift to the right char polarity name i bloat shift extern struct maskhome extern int LOWER UPPER struct nnode mask struct pnode node int start stop pol mask maskhome if stremp NEG polarity 0 pol 1 if pol 1 then the mask crossings are the light spots else if stremp POS polarity 0 pol 1 if pol 1 then the mask crossings are the dark spots then the pairs to expose are the spaces between the crossings else printf type not known exit 1 while stremp mask name name 0 find the right mask mask mask gt nextmask if mask 0 printf mask Zs not found n name erit 1 node mask gt first if pol 1 if neg polarity start is the absolute LOWER bound start LOWER while node 0 loop through the pairs if pol 1 start node start bloat shift stop node gt stop bloat shif
9. home gt nwx LOWER home gt nwy YLIMIT home gt sex UPPER home gt sey YLIMIT home gt type 0 type is air home gt doping 0 pointer are null no boxes in those directions home gt north home gt south home gt west 0 home gt east Dec 12 1983 inputs c Page 1 include lt stdio h gt define MAXLINE 200 inputs read the process inputs from the process input file extern int YSCALE SI extern char PRINTALL INPUTFILE int typenum thick d ycrit offset num bloat shift valid char comm 20 type 20 1at1 MAXLINE 1ine MAXLINE po1 10 name 10 double doping t y1 offi bloati shift fabs FILE fp fopen num 1 number for kic file if fp fopen INPUTFILE r 0 printf inputfile s doesn t exist n INPUTFILE exit 1 exit if input file doesn t exist while fgets line MAXLINE fp 0 valid 1 assume that the command is valid strepy labl line if sscanf line s 0 comm line lt 1 get command printf s 1ab1 error no command given in this line if num 1 amp amp stremp comm SUBS 48 stremp comm C 0 error SUBS must be the first non comment command if strcemp comm SUBS 0 set the substrate type doping if num 1 error SUBS can only be the first command gettype line type amp typenum amp doping sprintf labl 4102d SUBS TYPE s DOPE
10. below the surf ycrit is the critical thickness which the implant can not pass since the impurities do not diffuse in later steps the characteristic values must be adjusted to reflect the profile after all high temp steps double alpha nmar E ycrit offset int ysurf thick ypeak extern struct tnode home struct tnode surf top extern int SI top home start in the upper left corner loop across the columns while top 0 surf top loop through air boxes while surf gt type 0 surf surf gt south ysurf surf gt nwy surface of the wafer determine thickness on non silicon while surf gt type SI surf surf gt south if surf 0 break if surf then there was no silicon in that column if surf 0 break thick ysurf surf gt nwy calculate thickness on non SI if thick is gt ycrit then no implant gets into the SI so exit if thick lt ycrit if thick gt offset if thick gt offset then only diffuse down diffdown nmax alpha surf ysurf offset else diffuse both up and down around ypeak ypeak ysurf offset splity ypeak while surf gt sey gt ypeak surf surf gt south di ffdown nmax alpha surf ypeak surf surf gt north diffup nmax alpha surf ypeak top east Dec 12 1983 diff c Page 2 diffdown nmax alpha node ypeak diffusion of impurities into SI this
11. by running the KICTOCIF program Once in CIF format they can be plotted on the Versatec printer using the CIFPLOT command CIFPLOT uses a pat tern file which contains the pattern for each layer an example is also in sam3 simpl example SOURCE CODE FOR SIMPL Dec 12 1985 makefile Page 1 CFLAGS cvgp LFLAGS gp OBJECTS alloc o boxes o check o dep o diff o dop o edge o etch o exinit oN gauss o init o inputs o interact oN kicfile o kiclayers o main o maskname o newbor o num o pairs o photo o printnode o printpairs o rect o search o sgn o split o Bub o valid o wires o simpl OBJECTS ec LFLAGS OBJECTS o 1m S CFLAGS c Dec 12 1983 defs Page 1 struct tnode node format north west x coordinate north west y coordinate south east x coordinate south east y coordinate material type pointer up pointer down pointer left pointer right doping is positive for n and neg for p and for non Si when a pointer is NULL there are no more bores in that direction the limit for x y coordinates is set to LIMIT in microns int nwx int nwy int ser int sey int type float doping struct tnode north struct tnode south struct tnode west struct tnode east E struct knode node format node points to the tnode prev points to the previous node
12. necessary to keep the impurities from entering the silicon PEAK is a floating point number of the doping concentration peak in atoms per centimeter DEPTH DELTA and BLOCK are both floating point numbers in microns The impurity concentration of a region is calculated as the linear sum of the gaussians plus substrate concentration Program Structure 17 The SIMPL program s structure This section of the SIMPL user s guide contains information for those who want to modify customize or become more familiar with the code The casual user may not wish to read the contents following The following sections will outline the internal structure of the program and give some ideas on modifying the code 3 Subroutines Subroutine alloc n boxes line node checkacross dep layer doping t diff nmax alpha offset ycrit diffdown nmax alpha node ypeak diffup nmax alpha node ypeak dopinglevel npeak doptolayer doping edge error message etch layer t exinit expose start stop gauss nmax alpha x gettype line type typenum doping init inputs interact kalloc kicfile num label kiclayers fp label label line main maskname line mem nalloc newboxx start new north xval newboxy start new west yval nextsplit npeak nodelayer node numacross numdown numtotype i oxide depth pairs node high low palloc photo polarity name bloat shift printnod
13. nwy locate top of oxide find initial oxide thickness if box gt type while box gt type OX box box gt south bottomox box gt nwy tox topox bottomox init oxide thickness ddepth depth calculate new oxide thickness newox hypot tox ddepth tox hypot sqrt of sum of squares else no initial oxide case bottomox topox tox 0 newox depth newbottom bottomox newor 0 46 calc location of oxide bottor bottom newbotton if the material is SI or POLY then oxidise it if validox box 0 oxidese down while box gt sey gt newbottom box gt type OX bottom box 5sey box box 5south make sure the last box is split if necessary if box gt nwy newbottom amp amp validox box 0 splity newbottom box gt type OX bottom gt calculate the ammount to oxidise surf topox bottomox bottom 1 18 splity surf Dec 12 1983 ox c Page 2 move up to top of oxide while box gt type box box north oxidise upwards while box gt nwy lt surf i box gt type OX box box gt north top top reast Dec 12 1983 pairs c Page 1 finclude defs pairs node high low pairs stores pairs of mask crossings pointes to the list of pairs for each mask 9 pnodes are the crossings low and high are the coordinates of the mask crossi
14. starteast new gt east new yval newboxx start new north xval insert a new column vertically struct tnode start new north int xval struct tnode neweast startsouth talloc set the values for the new box gt gt gt new gt sex start sex gt start sey new gt type start type new gt doping start gt doping new north north if startsouth start gt south 0 new gt south 0 else new gt south talloc start new east start reast Dec 12 1983 newbox c Page 2 update the values of the origional Btart east new gt if neweast new gt east neweast west new recursive call till the column is finished if startsouth O newboxx startsouth new 5south new rva1 Dec 12 1985 next c Page 1 double nextsplit npeak nmax calculate the doping value for the next box of the diffusion profile double npeak nmax double abpeak sgn fabs double nlow 5e11 double nlow 1 11 abpeak fabs npeak if the peak doping is of opposite sign to the start doping then the next doping is 10x higher else it is 10x lower if sgn npeak sgn nmax npeak 10 0 else npeak 10 0 abpeak fabs npeak if the doping is about intrinsic then set it to opposite type at the minimum le
15. tal letter and optionally followed by numbers This convention is not enforced in SIMPL but it is enforced on the KIC program The code which contains the list of layer names is located in the file sam3 simpl prog exinit c In this file the names can be changed The program then should be recompiled as in the instructions on the previous page If more materials are needed they can be added to the end of the list of materials in the code It is imperative that the value of NLAYER number of layers be updated to reflect the addi tions NLAYER is found in the same file as the layer list but inside the subroutine exinit The program must then be com piled Layers with special properties can not be added simply If the layer has new properties then the new routines which simu late the the property must be added If the layer has the same properties as one of the other special layers then the code must be updated to make checks for the new layer 2 Structure 25 HOW TO INCREASE MEMORY ALLOCATION The memory allocation of SIMPL is fixed in size It is currently set at 500k bytes The buffer is used to store the nodes of the grid and to produce output files When all of the buffer is used SIMPL gives an error message telling you to reduce the complexity of the simulation If all the steps are being output t is possible to to reduce the buffer requirements by only outputting the final profile The buffer size can be changed to reflect
16. the needs of the users and the machine The location of the allocation is the file san3 simpl prog alloc c The buffer size is set by ALLOCSIZE the definitions This value be changed to reflect the desired size The program must be recompiled after any change Compiling instructions are given earlier in this manual 1 1 26 i d d 2E N13 14 N15 16 N17 18 P19 EE 6s 4 12 P13 14 15 16 Pi7 18 10 as E ot o ton Fig 7 Cross section of Bipolar along the Cut Line in Fig 6 5X Scale for Y Fig 8 Layout of an Berkeley CMOS inverter with Cut line for SIMPL 1 D od b ab 5 Iu ONO SWAN a J ONU Ew 28 SUBS OXID DEPO DEPO MASK ETCH ETCH ETCH OXID ETCH DOPE ETCH OXID DEPO DEPO MASK ETCH ETCH ETCH DEPO MASK ETCH DOPE ETCH OXID ETCH DOPE DEPO DEPO MASK ETCH ETCH ETCH DEPO MASK ETCH DOPE ETCH DEPO MASK ETCH DOPE ETCH DEPO DEPO MASK ETCH ETCH ETCH DEPO DEPO MASK ETCH ETCH ETCH 1 13 Examples 0 1 NTRD 0 1 RST 0 5 POS NWEL 00 ERST 0 6 NIRD 0 2 0 5 NTRD 0 2 N 1 1 15 1 5 0 0 2 0 7 0 1 NTRD 0 1 RST 0 5 POS ACTV 0 0 ERST 0 6 NTRD 0 2 RST 0 6 RST 1 0 POS NWEL 0 0 ERST 1 1 1 21 0 15 0 05 0 2 RST 1 1 0 7 NTRD 0 2 1 20 0 5 00 2
17. 2e n num type fabs doping printf s 1ab1 label 1 1 Bub typenum doping else if stremp comm DEPO 0 deposit type doping thickness gettype line type amp typenum amp doping if sscanf line f f 8t lt 1 error thickness not found thick 1000 t eprintf labl Z02d DEPO TYPE s DOPE 2e THICK 2f n num type fabs doping t printf s 1at1 label 1ab1 dep typenum doping thick else if stremp comm DOPE 0 diffuse doping charcteristic length offset block depth gettype line type amp typenum 4doping 0 if sscanf line r f f at aoffi ay lt 3 error not enough inputs on this line Dec 12 1983 inputs c Page 2 5028 sprintf labl DOPE 2 DEPTH 2f DELTA 3f BLOCK 2f n num type fabs doping off1 t y1 printf s labl t 1000 t offset 1000 offi ycrit 1000 y1 label 1ab1 diff doping t offset ycrit else if stremp comm ETCH 0 etch type thickness if sscanf line s f type 4t lt 2 error not enough inputs on this line typenum p thick 1000 eprintf labl 02d ETCH THICK 2f n num type t printf Zs labl label 1 1 etch typenum thick else if strcemp comm OXID 0 oxidation thickness for bare silicon if sscanf line f amp t lt 1 error thickness not foun
18. ASKFILE exit 1 exit if the mask file doesn t exist only boxes and rectangles of flattened CIF Me ad t 0 if line O B n if line o L node maskname line if linefO w wires line node fclose fp Dec 12 1985 etch c Page 1 finclude defs etch layer t etch a specific layer to max thickness t int layer int t extern struct tnode home struct tnode top box int depth top home start in upper left loop columns while top 0 box top loop through air while box gt type 0 box box gt south depth box gt nwy t final depth after max etch splity depth split at depth loop boxes while the type is right and not too deep while box gt sey gt depth 88 box gt type layer switch type to air box type 0 box gt doping 0 box box gt south if box 0 printf etch all the way to the bottom n top top east Dec 12 1983 exinit c Page 1 finclude lt stdio h gt struct nnode maskhome mask is the pointer to the first mask struct tnode home char PRINTALL n only final step output 11 steps output char DIR h horizontal split of layout v vertical filenames af char MASKFILE 20 INPUTFILE 20 OUTPUTFILE 20 int PLANE vlaue of the plane in the layout being split int LOWER UPPER values for the crossection window int YLIMIT h
19. ER yavg nwy 2 YLIMIT scale from OO1u internal to Oflambda in kic dely dely 9 YSCALE 9 O 1 MICPERLAM yavg yavg 9 YSCALE 9 0 1 MICPERLAM delx delx 9 O 1 MICPERLAM xavg xavg 0 1 MICPERLAM output one box if not null if dely 44 delx 0 sprintf w B a d n delx dely xavg yavg Dec 12 1983 printpairs c Page 1 include printpairs print out list of the mask crossings extern struct maskhome struct pnode node struct nnode mask mask maskhome loop through the masks while mask 0 printf n s n mask gt name print mask name node pask gt first loop through the pairs while node 0 printf d d n node gt start node gt stop print pair node node gt nextpair mask mask gt nextmask Dec 12 1983 rect c Page 1 include defs rectangle x1 x2 y1 y2 node calculate if the rectangle is cut by the crossection plane send the crossing points to pairs x1 x2 are the lower higher x coordinates of the rectangle y1 y2 are the lower higher y coordinates of the rectangle int 1 2 1 2 struct nnode node extern int UPPER LOWER PLARE ertern char DIR extern double MICPERLAM int low high low and high are the coordinates of the crossing low gt high convert kic Oiu to internal O 001u 10 x1 MICPER
20. LAM 2 10 x2 MICPERLAM y 10 1 y2 108 29 if DIR n horizontal splits check the bounds of the rectangle and the split plane if y lt PLANE amp amp y2 gt PLANE set high and low low x1 high x2 adjust to min and max bounds if x lt LOWER low LOWER if x2 gt UPPER high UPPER else if DIR v vertical splits if x1 lt PLANE 88 x2 gt PLANE low y1 high y2 1 1 lt LOWER low LOWER if y2 gt UPPER high UPPER if low is less than high then the rectangle is split by the plane within the min and max bounds otherwise they or gt if low lt high pairs node high lcw 2 Dec 12 1983 search c Page 1 finclude defs struct tnode searchsouth startnode yval searches south for a box that contains the coordinate yval struct tnode startnode 1 while startnode sey gt yval startnode startnode gt south return startnode struct tnode searcheast startnode xval searches east for the box containing the coordinate rval struct tnode startnode int xval while startnode gt sex lt xval startnode startnode reast return startnode Dec 12 1983 sgn c Page 1 double sgn n return 1 if nO Oif n O 1 if double n double 0 if n lt 0 ni 1 else if n gt ni 1 return n1 Dec 12 1983 split c Pag
21. POLY 0 25 RST 0 5 POS POLY 00 ERST 0 6 POLY 0 6 RST 0 6 RST 1 0 POS PSD 00 ERST 1 1 1 21 0 2 0 1 0 2 RST 1 1 RST 1 0 NEG PSD 0 0 ERST 1 1 1 21 0 2 0 1 0 2 NEG CONT 0 0 ERST 1 1 OX 1 0 RST 1 1 METL 1 0 RST 1 0 POS MIL 0 0 ERST 1 1 METL 1 1 RST 1 1 Pia P13 1 6 Pi6 16 Pi7 18 N19 Fig 9 Process Input and Profiles ef Berkeley CMOS Inverter along the Cut line Fig 5 Scale fer Y Apendix 28 KIC notes This section is designed to provide some help getting started with KIC KIC is a computer graphics package to aid in circuit layout which has been developed at U C Berkeley The program uses a data base very similar to CIF CalTech Intermediate Form which is a layout standard The layout files which are created using KIC are interpreted by SIMPL to find the mask crossings The output files which are created bye SIMPL are com patible with KIC SIMPL not interpret all of the KIC extensions layout must contain only rectangles and wires no circles or polygons are interpreted Also there can not be any heirarchy in the layout If the circuit has been laid out with instances it must be flattened to be fully interpreted When KIC is run it requires a file in the present direc tory which gives the characteristics of all the layers This file is the KIC file There is an example in the directory sam3 simpl example The KIC files can be converted to CIF format
22. SHIFT TYPE THICK DOPE TYPE PEAK DEPTH DELTA BLOCK ETCH TYPE THICK 3 Commands Detailed Description 13 INTERACTIVE INPUTS DETAILED DESCRIPTION Split hzhorizontally v evertically The cross section is simulated along a line segment of the layout file This segment can lie anywhere in the layout but must be oriented in the horizontal or vertical direc tion Horizontal means the the start and stop points have the same y coordinate and vertical means that the start and stop points have the same x coordinate The input is only valid if h or v is entered microns per lambda The layout is in KIC format with relative units called lambda which form the coordinate grid of the layout lambda represents a specific number or fraction of microns The scale factor is a floating point number start value stop value The start and stop values are integers which are the starting coordinates for the cut line segment The values are specified in lambda These values are obtained while viewing the layout on the KIC terminal scale factor in the y direction This scale factor is an integer which makes the section easier to view Since the vertical dimensions of Integrated Circuits are very small gate oxide 25nm com pared to the lateral dimensions gate length 1micron it is very hard to see the vertical features in a 1 1 scale The scale factor magnifies the vertical dimension the x y plane yo
23. SIMPL SIMULATED PROFILES FROM THE LAYOUT by M A Grimm Memorandum No UCB ERL 83 79 14 December 1983 SIMPL SIMULATED PROFILES FROM THE LAYOUT by M A Grimm Memorandum No UCB ERL M83 79 14 December 1983 ELECTRONICS RESEARCH LABORATORY College of Eng neering University of California Berkeley 94720 Michael A Grimm Author SIMPL SIMulated Profiles from the Layout Title RESEARCH PROJECT Submitted to the Department of Electrical Engineering and Computer Sciences University of California Berkeley in partial satisfaction of the requirements for the degree of Master of Science Plan II Approval for the Report and Comprehensive Examination 178 Date ii bh OU Mea 77 778 SIMPL Version 1 0 Dec 12 1983 SIMulated Profiles from the Layout version 1 0 Developed by Michael Grimm Department of Electrical Engineering and Computer Sciences University of California Berkeley California 94720 J J I II III IV SIMPL Table of Contents Abstract Report Acknowledgements SIMPL User Guide SIMPL Source Code Abstract Often times it is necessary to visualize an IC profile from looking at the layout The transformation from the planar view to the cross sectional view is difficult especially with complex mask sets SIMPL SIMulated Profiles from the Layout is a new CAD tool which automatically generates the cross section of an integrated circuit fr
24. SSS 55 5555 5555 55 55 SS SS 55 55 55 55 SS SS SS 55 5 SS 55 sS SSS 55 55555 5595 5955 5555 55955 5999599 5555555 5555 ss 5 855 5 55 SS S S 5 55 55 SS SS 55 S SSS 5555 555555 55 5 SS 55 55 5 55 55 5 55 55 55 5 SS S SS SSSS S 55 S SS S SS 5555 SSSSSSS 5555 SSS SSSS SS SS SS SS 55 55 595555 55 55 55 55 55 55 SS 5 5555 5555555 SSS 5 5555 55555 SS S SS S S SS S SS 5 55 SS S 99 5 5 SS S SS 5 55 SS S SS S SS SSS S S5 S 5 5555 5555 55555 SIMPL Version 1 0 Dec 12 1 33 SIMulated Profiles from the Layout version 1 0 Developed by University of California Berkeley California 94720 C Copyright notice 1983 All rights reserved Michael Grimm Keunmyung Lee Andrew Neureuther Electronics Research Laboratory Department of Electrical Engineering and Computer Sciences 5555555 DS 55 5555 59 SS 5555955 Introduction 2 C Copyright Notice 1983 All rights reserved by The SAMPLE Group Room 332 Cory Hall Electronics Research Laboratory Department of Electrical Engineering and Computer Sciences University of California Berkeley California 94720 U S A The SIMPL program is available through DARPA free of charge to any interested party on an as is basis for a nominal handling fee The sale resale or the use of this manual for profit without the express written consent of Department of Electrical Engineer ing and Computer Sciences University of California Berkeley Ca
25. TYPE and the optional doping The layer thickness is specified by THICK POL MASK BLOAT SHIFT Tne MASK command exposes the resist with the specified MASK The POL term specifies the polarity of the masx if the polarity is positive POS then the mask is used to image the resist or if the polarity is negative NEG then the inverse of the mask is used to expose the resist The BLOAT command allows the user to increase the size of the mask to approximate lateral effects If BLOAT is a positive number then the features on the layout are expanded by this amount Bloat is a floating point number and can be nega tive to simulate a shrink SHIFT is also a floating point number which moves the mask to the right by the specified distance TYPE THICK The etch command is selective to the specified TYPE The etch will proceed to a depth of THICK If the material is thinner than THICK then the layer will be removed com pletely with the lower layers unaffected TYPE PEAK DEPTH DELTA BLOCK The DOPE command simulates either the implant or diffusion process This command does not calculate a redistribution of the impurities so the input parameters must also take the drive in into consideration The impurity profile for each DOPE command is approximated by a gaussian curve The gaussian has peak doping PEAK depth below the surface DEPTH sigma of the curve DELTA and a critical thickness for implants BLOCK BLOCK is the masking thick ness
26. The node stores the material type doping concentration and the x y coordinates of the upper left corner and the lower right corner In addition every node has a pointer to its four neighbors These pointers allow searching movement in any direction from any node Splitting the array as required by new mask edges pro cess effects can be done both the x and the y direction split is generated by inserting a new row of boxes and setting the pointers and coordinates accordingly The pointers are superior to a two dimensional array since only three rows of boxes are affected in a split If it was an array then all of the array below or to the right of the split would be affected All operations on the profile are broken down into two sim ple operations splitting boxes and switching node type and dop ing During every step the position of the next rectangle if SIMPL Report calculated the grid is split to accommodate the new box and it s type and doping are set to their new values Quite often the rectangle already exists in the grid and only the type and doping need to be updated Some of the grid lines become obsolete after some time In order to minimize the grid and the run time the grid is checked grid lines that are not neces sary For speed the physical process models in SIMPL have been made very elementary At the moment lateral etching and diffu sion are not included The doping model is a gaussia
27. arted 10 by running KIC with this file The output file is in ascii for mat and can be viewed Note that is is in the same format as ex mask These two files can be viewed at the same time using KIC Symbol ex out 9 ex out DS 0 1 1 L OX B 5000 1002 7500 10041 B 600 1002 300 10041 L N12 B 4400 2 2800 8505 L N13 B 4400 14 2800 8513 L 14 B 4400 72 2800 8556 B 4400 52 2800 9514 L N15 B 4400 178 2800 8681 B 4400 178 2800 9399 L N16 B 4400 540 2800 9040 L P13 B 4400 2 2800 8503 L P14 B 5000 9540 7500 4770 B 4400 8502 2800 4251 B 600 9540 300 4770 L LABL 94 final profile 0 0 B 10000 20000 5000 10000 DF E o o m ow Laco OC o9 mw 9 w v i m 9 o wb A M P v d m m ow t NW Ta acce a reca a More e o 9 e no Pa aea a eet a DM ORO NOR De RERO QE NM M GOO D ee 9 DONNE Pataca 888 Be te QNSE A PX ANE ee 4 X 7 7 E tataran e 4 8 4 ate gp a uu P ate A CR op SOS SER SN Sees amp amp CE eee EDO STE SY SEH
28. d thick 1000 t sprintf labl Z02d OXID MTHICK 2f n nun t printf Zs labl label 1ab1 oxide thick checkacross else if stremp comm MASK 0 photolithography polarity maskname if sscanf line s Xs ff f pol name 8bloati amp shift lt 4 error not enough inputs on this line bloat bloat 9 1000 shift shift 1000 sprintf labl f 02d MASK POL s MASK s BLOATsT 2f SHIFT 2f n num pol name bloat shift printf s 1ab1 label 1ab1 hoto pol name bloat shift else if stremp comm C 0 num printf s 1ab1 valid 0 else printf illegal input command s n line p 0 if PRINTALL 48 valid 1 kicfile num 1ab1 Dec 12 1987 inputs c Page 3 Bprintf labl final profile num 0 kicfile num labl always output final profile gettype line type typenum doping get the type and doping of the input string char linel type 20 int typenun pem doping doping 0 if sscanf line s 0 type line lt 1 error type not found in this line if stremp type NR strenp type P 0 if sscanf line fef vxo doping line lt 2 error doping not found in this line if typelo P doping doping typenum SI else typenum typetonum type error message print out an error message and abor char message 40 printf sWn
29. double alpha nmax int ypeak Dec 12 1985 diff c Page 3 struct tnode double nmin npeak nsplit nsub ngauss sgn double fabs 1og sqrt dopinglevel nextsplit gauss int ysplit ygauss extern int SI nmin 1e10 minimum discrete doping while node gt type SI nsub node gt doping ygauss node gt sey ypeak npeak gauss nmax alpha ygauss nsub nsplit dopinglevel npeak ngauss nsplit nsub if fabs ngauss lt nmin break if fabs ngauss lt fabs nmax yeauss sqrt alphafalpha log fabs nmax ngauss while ysplit ypeak ygauss lt node gt nwy if ysplit node gt sey splity ysplit node node gt south node gt doping 3 nsplit node node gt north nsplit nertsplit nsplit nmax ngauss nsplit nsub if fabs ngauss lt nmin sgn ngauss sgn nmax break gauss sqrt alpha al pha log fabs nmax ngiuss if fabs ngauss lt nmin sgn ngauss break if ysplit gt node gt nwy pec 3 nsplit node node gt north if node 0 break Dec 12 1983 dop c Page 1 finclude lt math h gt doptolayer doping converta a float doping into a layer number for kic output the doping levels are divide into groups by the log of doping double doping double t 10g10 fabs int layer extern int SI take the log of the doping pluss 0 5 round off factor if doping 0
30. e 1 include defs splity yval split the grid horizontally int yval height of split extern struct tnode home upper left corner struct tnode startnode newnode west talloc searchsouth searchsouth home yval find colunm node containing yval if the south east y value yval then no split is necessary if startnode gt sey yval newnode talloc create a new node west 0 the node to the west is null newboxy startnode newnode west yval insert new boxes splitx xval split the grid vertically int xval x location of the split extern struct tnode home upper left corner struct tnode startnode newnode north talloc searcheast startnode searcheast home rxval find row node containing xval if the south east x value rval then no split is necessary if startnode gt sex xval newnode talloc create a new node north 0 the node to the north is null newboxx startnode newnode north xval insert new boxes Dec 12 1983 eub c Page 1 finclude defs sSub n d create a substrate by making the south rectangle proper type doping only makes sense immediately after initialization int n double d extern struct tnode home struct tnode splity 0 split at zero node home gt south move to bottom half node gt ty
31. e high low fp printpairs rectangle x1 2 y1 y2 node searcheaxt startnode xval searchsouth startnode yval sgn n splitx xval splity yval sub n d talloc typetonum type validox node wires line node 18 file alloc c boxes c check c dep c diff c diff c diff c dop c dop c edge c inputs c etch c exinit c expose c gauss c inputs c init c inputs c interact c alloc c kicfile c kiclayers c inputs c main c maskname c alloc c alloc c newbox c newbox c next c node c num c num c exinit c OX C pairs c alloc c photo c printnode c printpairs c rect c search c search c sgn c 1 split c sub c alloc c exinit c valid c wires c alloc boxes rectangle check nodelayer dep splity diff diffdown diffup diffdown dopinglevel gauss nextsplit sgn splity diffup dopinglevel gauss nextsplit sgn splity dopinglevel doptolayer edge boxes maskhome maskname nalloc printpairs wires error etch splity exinit expose splitx gauss Subroutines inputs checkacross dep diff error etch gettype kicfile label oxide photo sub interact kalloc alloc kicfile kiclayers kiclayers Kalloc nodelayer numtotype printnode label main edge exinit init inputs interact mem numacross numdown maskname nalloc mem nalloc alloc newboxx talloc newboxy talloc 19 numacross numdown numto
32. ection into the file sprintf header L LABL n fputs header fp sprintf header 94 Zs a d A n 1a8be1 0 0 fputs header fp width UPPER LOWER 10 0 MICPERLAM height YLIMIT YSCALE 10 0 MICPERLAM sprintf header B a a a fd WAn widthn 2 neight width 2 height fputs header fp sprintf header DF n fputs header fp sprintf header EMn fputs header fp Dec 12 1983 kiclayers c Page 1 include defs include lt stdio h gt kiclayers fp transform internal format to kic format ae extern etruct tnode extern int NLAYER struct tnode top high low low struct knode new kalloc x 40 char w 40 numtotype int 1 0 int hightype lowtype set up an empty array to point to each layer lt NLAYER X i top home begin in upper left corner sort the grid into an array of each layer loop through the columns while top 0 low top lowtype nodelayer low nodelayer finds the type of a node loop down the rows while low 0 high low hightype lowtype check the next box down to see if it is the same layer if they are the same then move down one more while low low gt south 0 if lowtype nodelayer 10w hightype low 1low else break if hightype gt 0 new kalloc create a new node new gt high high point to the highest box of the type
33. eight of profiles int YSCALE scale factor for y dimensions int NLAYER total number of layers int SI layer number int POLY layer number int OX layer number int RST layer number int ERST layer number float MICPERLAM microns per lambda static char layers 9 POLY ox METL RST ERST NTRD Sl N12 3 814 N15 N16 R19 5 P16 Pi7 P18 9 P20 Li user defined layers do not change the layers 12 above this point you may charge the names of 9 1 3 these layers 11 L5 and recompile g LA note any changes in the number of layers in NLAYER 15 below in exinit Dec 12 198 exinit c Page 2 pure extern int YLIMIT NLAYER SI OX RST ERST YLIMIT 10000 9 limit hieght to 10 NLAYER 30 total number of layers SI 7 SI layer is 7 2 OX layer is 2 RST 4 RST layer is 4 ERST 5 ERST layer is 5 Mad s 1 POLY layer is 1 typetonun type convert a text layer to its number P type extern int NLAYER int while stremp type layers n 0 n if n NLAYER printf invalid layer fs type exit 1 return n char numtotype i convert type number to string int i
34. endix KIC notes eee seco QD Introduction OVERVIEW SIMPL is a CAD Computer Aided Design tool which simulates the topography of an Integrated Circuit from the layout It is capable of simulating the cross section at every step of the wafer fabrication The basic process steps are oxidation depo sition etching implantation and diffusion and masking The profiles are modelede with rectangles using simple physical model This allows rapid online feedback on the device features which the layout will generate SIMPL presently consists of about 1600 lines of C code Typical CPU time is approximately 5 seconds a VAX 11 780 with UNIX to simulate the final profile for a emos inverter The lay outs and profiles be viewed with the KIC program while the data is stored in CIF CalTech Intermediate Form which is 1 out standard The development of SIMPL has been supported by the DARPA To encourage open exchange of information SIMPL is available on an as is basis for a small handling fee We appreciate your feedback the performance of the program However we can not offer assistance in implementing the program on your computer system or in training users Getting Started 5 How to tell SIMPL to simulate A note on the types of input statements to SIMPL The SIMPL program imitates the actual processing sequence of wafer The process flow closely follows the actual sequence used in the lab Ste
35. is a half gaussian with the peak towards the top of the SI double alpha nmax int ypeak struct tnode node double nmin npeak nsplit nsub ngauss sgn double fabs 1og sqrt dopinglevel nertsplit gauss int ysplit ygauss extern int SI nmin 1 10 minimum discrete doping loop as long as in SI while node gt type SI nsub node gt doping initial doping ygauss ypeak gt gaussian distance npeak gauss nmax alpha ygauss nsub doping at ygauss nsplit dopinglevel npeak calc the discrete doping level ngauss nsplit nsub calc the new gaussian value if the gaussian value is small then exit if fabs ngauss nmin break if fabs ngauss lt fabs nmax ygauss sqrt alpha alpha log fabs nmax ngauss while ysplit ypeak ygauss gt node gt sey if ysplit node gt nwy splity ysplit node gt doping 3 nsplit node node gt south neplit nextsplit nsplit nmax ngauss nsplit nsub if fabs ngauss lt nmin i sgn ngauss sen nmax break gauss agrt al pha al pha log fabs nmax ngauss if fabs ngauss lt nmin sgn ngauss sgn nmax break if ysplit lt node gt sey node gt doping 3 nsplit node node gt south if node 0 break diffup nmax alpha node ypeak diffusion of impurities into SI this is a half gaussian with the peak towards the bottom of the SI
36. khame points to the first mask find the mask name from input line if sscanf line L mname 1 1 printf mask name not found in line s line exit 1 check to see if we already saw this mask while node gt nextmask 0 if stremp mname node gt name 0 break node node gt nexrtmask if it is a new mask then set up a pointer for it if node gt nextmask 0 strcpy node gt name mname node gt first 0 node gt nextmask nalloc node gt nextmask gt nextmask 0 return the node which points to that mask return node Dec 12 1983 newbox c Page 1 finclude defs newboxy start new west yval insert a new row horizontally struct tnode start new west int yval height of new row struct tnode starteast newsouth talloc set the values for the new box new onwx start 5nwx new onwy yval new gt sex gt start gt sey new gt type gt new gt doping start gt doping new gt north start new gt south start gt south new gt west west if starteast start gt east 0 new east 1 new gt east talloc update the values of the origional gt new start gt sey yval if newsouth new gt south 0 newsouth gt north new recursive call till the row is finished if starteast 0 newboxy
37. lifornia is forbidden No updates or bug fixes are promised No guarantee about reli ability or correctness is made It is the users responsibility to check the results for sensibility or correctness This project has been supported by DARPA The user agrees to acknowledge SIMPL in publications using the results from the SIMPL program and have anyone to whom the rou tines are further circulated to agree to the same If modified this manual will still be considered to be the original work lo cally modified unless more than one half the manual 1 changed 2 11 111 IV Introduction SIMPL USERS GUIDE Table of Contents page General Information Title and 1 1 Table of contents and index 3 Introduction and overview 4 D Telling SIMPL to simulate 5 E An input 1 SIMPL Commands A IntroductlOnssse 9 9E 11 B Input and Command list 12 C Detailed Descriptions 15 Interactive inputs 13 2 Process Commands 515 Program Structure Introduction List of subroutines 18 Flow chartos vss 20 D Porgram Structure i4 ee sel D Compiling retune E Adding New Layers ecco c ei F Memory 1 1 25 Examples CMOS 26 Bipolar EA Ap
38. message exit 1 label label line convert tne spaces in label _ for kic files char 1abe1 line while label f if 1abel replace with label label oo a 0 Dec 12 1983 interact c Page 1 finclude lt stdio h gt interact 7 get interactive inputs extern int LOWER UPPER YSCALE PLANE extern char DIR PRINTALL MASKFILE INPUTFILE OUTPUTFILE extern double MICPERLAM int start stop int temp check for horizontal or vertical split of layout printf split hehorizontally v vertically Wn while DIR getchar n 44 DIR v printf invalid input h or v n printf microns per lambda in while scanf f amp MICPERLAM lt 1 printf invalid MICPERLAM must be positive n printf start value n start value for layout split while scanf d amp start lt 1 printf invalid input integer n printf stop value n stop value for layout split while scanf Za amp stop lt 1 printf invalid input an if start gt stop make sure stop gt start temp start start stop stop temp LOWER start 9 1000 MICPERLAM UPPER stop 1000 9 MICPERLAM scale factor for cross section for better visibility printf scale factor in direction Wn while scanf a amp YSCALE lt 1 printf invalid YSCALE must be a positive integer Mn if DIR
39. n printf the y plane you want split n else printf the x plane you want split n while scanf Ka amp PLANE lt 1 printf invalid input an integer n PLANE PLARE 1000 MICPERLAM printf the mask file n while scanf s MASKFILE lt 1 printf invalid input fiie name n printf the input file n while scanf s INPUTFILE lt 1 printf invalid input file name n printf the base name for the output files n while scanf s OUTPUTFILE lt 1 printf invalid input file name n set flag for out ut of every step printf output profile at every step PRINTALL getchar clear from buffer while PRINTALL getchar y PRINTALL printf invalid Wn Dec 12 1983 kicfile c Page 1 include lt stdio h gt kicfile num label output header and bottom of kic file numbered num int num char 1abe1 int n 0 int height width char fi1e 20 neader 20 FILE fp fopen extern int UPPER LOWER YLIMIT YSCALE extern double MICPERLAM extern char QUTPUTFILE if num 0 sprintf file s OUTPUTFILE else sprintf file s 02da OUTPUTFILE num fopen file w sprintf header Symbol s n file fputs header fp sprintf header 9 2s n file fputs header fp Bprintf header DS 1 1 n fputs header fp kiclayers fp calculate and put the cross s
40. n with vari able peak depth standard deviation and implant blocking thick ness SIMPL does not simulate a redistribution of the doping profile in later high temperature steps therefor the input values must include the drive in component The oxidation model input is the oxide thickness if there were no initial oxide The new oxide thickness is the square root of the sum of the squares of the initial oxide thickness and the input oxide thickness six mask bipolar process with 38 process steps and an eight mask CMOS process with 55 steps have been simulated cution time which occurs for generating the final profile directly requires only 5 sec on a VAX 11 780 UNIX Acknowledgement ACKNOWLEDGEMENTS I would like to express my thanks to Prof Andy Neureuther for his time and patience throughout this project He has been of the utmost help in completing this work I would also like to than my partner and friend Ken Lee for his valuable assistance My thanks are also extended to Prof Bill Oldham for reading the paper I would like to acknowledge Ken Keller for his assistance with KIC I would also like to thank my wife Brigit for her sup port and patience A very special thanks is extended to all those at the University of California Berkeley who have made my stay here both as a graduate and an undergraduate very memorable and rewarding GO BEARS 5555555 5555 5555 5555 5 5 S S 55 55 55 55 55 555 SSS
41. ngs the pairs are stored in numerical order this also combines overlapping rectangles struct nnode node i high low struct pnode pres next ins palloc if node gt first 0 case for the first pair of that mask pres palloc create a node pres gt start low pres gt stop high pres gt nextpair O set the next pair to null node gt first pres start the link list with this node else not the first pair case must insert the new crossings into the link list pres node gt first prev 0 loop through the list while pres 0 if the pair is greater than the present pair if low gt pres gt stop prev pres pres pres gt nextpair if we are at the end then add the node to the end if pres 0 pres palloc pres gt nextpair 0 pres start low pres gt stop high prev gt nextpair pres break else if high lt pres gt start if pair is less than present pair then insert the pair ins palloc ins gt nextpair pres ins start low ins gt stop high if prev 0 node gt first ins else prev gt nextpair ins break else Dec 12 1983 pairs c Page 2 pair overlaps present pair need only combine pairs pair over extends on the low end reset low value if 1ow pres gt start pres gt start low pair overextends on the high end may cover several pairs
42. nition This feature allows SIMPL to simulate many different technologies such as NMOS PMOS CMOS or bipolar Here is list of the current process commands which make up the process sequence SUBS specify the substrate material OXID oxidize the silicon DEPO deposit a layer onto the surface ETCH selectively etch the surface DOPE dope the silicon with implant or diffusion MASK photo transfer the mask to the resist 0 Getting Started 6 A Short Example This example consists of three parts 1 interactive inputs 2 process file 3 layout file The following examples assume a familiarity with UNIX These examples can be found on ESVAX in sam3 simpl example Move to this directory to run this example To start alias simpl to sam3 simpl prog simpl Then give the command simpl The commands are alias simpl sam3 simpl prog simpl ed sam3 simpl example simpl SIMPL will ask for some more information in an interactive mode The responses to the interactive questions are given QUESTION ANSWER split hshorizontally vzvertically h microns per lambda 1 0 Start value 50 stop value 50 scale factor in y direction 10 the y plane you want split 0 the file ex mask the input file ex process the base name for the output files ex out output profile at every step yzyes n no n The meaning of the interactive inputs are split hzhorizontally v vertically is the cut line segment of the mask ho
43. nters to variables which are integral parts of the grid Each rectangle is represented by a data structure node which contains the physical information about each rectangle shown in Fig 4 The node stores the material type doping concentration and the x y coordinates of the upper left corner and the lower right corner In addition every node has a pointer to its four neighbors These pointers allow searching movement in any direction from any node Splitting the array as required by new mask edges cess effects can be done in both the x and the y direction The split is generated by inserting a new row of boxes and setting the and x y coordinates accordingly as demonstrated if Fig 5 J All operations on the profile are broken down into two sim ple operations splitting boxes and switching node type and dop ing During every step the position of the next rectangle if Calculated the grid is split to accommodate the new box and it s type and doping are set to their new values Quite often the rectangle already exists in the grid and only the type and doping need to be updated 3 figures 22 Program data structure and grid Substrate me nn Fig 3 Sample Grid Structure with Substrate Oxide and Polysilicon POINTER UP EVERY NODE CONTAINS POINTER MATERIAL TYPE POINTER LEFT AIGHT DOPING CONCENTRATION POINTER DOWN Fig 4 Contents of Data Node for Rectangles Before Split
44. om the layout SIMPL has several uses First it provides the designer visual feedback on the structures which will be fabricated Second it provides information about critical design rules Finally since SIMPL can give visual feed back at every step in the process it is an aid to process development SIMPL uses simplified models and rectangular approximation to the structures in order the run very quickly The models are not analytic as in other rigorous two dimensional Simulators such as SAMPLE or SUPRA but this allows SIMPL to run much faster Research is continuing on a second version of SIMPL which will automatically give more detailed topographical and electrical information from the layout This will be accomplished by link ing other process simulators such as SAMPLE SUPRA and MINIMOS SIMPL is written in 1600 lines of C code Typical CPU time for the final profile of a CMOS inverter or a bipolar transistor in approximately 5 seconds on a VAX 11 780 SIMPL Report Simulation Program SIMPL SIMulated Profiles from the Layout version 1 is a new CAD tool which automatically generates the cross section of an IC from the layout This gives the designer rapid feedback on the circuit topology The layout is taken from a KIC or CIF CalTech Intermediate Form file The cross section is simu lated at an arbitrary cut plane specified by user The graphic output is also in KIC so that it can be displayed on the same graphics edito
45. ove the split if box 0 removing a row left loop coulmns to eliminate split while box 0 adjust the pointers north box 5north north gt sey box gt sey if box gt so0uth 0 north gt south 0 1 north gt south box gt south bex gt so0uth north north box boxr east break Dec 12 1983 dep c Page 1 finclude defs dep layer doping t deposit a material characterized by layer doping and thickness int layer t double doping extern struct tnode home struct tnode top box int surf start in upper left top home loop through the coulmns while top 0 move through the air boxes box top while box gt type 0 box box gt so0uth if box 0 printf never found the surface in dep n pou surf box gt nwy t new surface old surface thickness splity surf split at the new surface box box gt north loop upwards and change the air boxes to the new material while box gt nwy lt surf box gt type layer box gt doping doping box box north top top gt east Dec 12 1983 diff c Page 1 include lt math h gt finclude defs diff nmax alpha offset ycrit nmax gt 0 if n type and lt O if p type diff includes both diffusion and ion implants the doping profile is specified by a gaussian with a characeristic width alpha peak and offset
46. pe n switch type per d switch doping Dec 12 1983 valid c Page 1 finclude defs validox node return if material can t be oxidised gt 0 if it is SI or POLY struct tnode node extern int SI POLY int t node gt type if t POLY t S1 return t else return 0 Dec 12 1983 wires c Page 1 include defs include lt stdio h gt wires line node get the rectangle coordinates of the wire segments char line etruct nnode node int width 2 1 1 2 2 char vire 10 shorten get width and first x y coordinates of the rectangle if sscanf line fsfafataf No wire amp widtn amp px amp py line lt 5 printf wrong num of arguments in line s line width 2 set width to the half width of the rectangle loop through the string pulling out the subsequent pairs while sscanf line S4 a2 0 amp px2 amp py2 line gt 1 does the pair lie horizontal if py py2 set ymin and ymax yi width ye py2 width set xmin and xmax if px lt px2 l xi px width 2 2 width if px2 lt 2 width 2 pxi width 8 does the pair lie vertical if px 2 set xmin and xmax 1 px width x2 px2 width set ymin and ymax if py lt py2 l yi width 2 2 width if py2 lt
47. ps which do not have an effect on the topog raphy such as rinse prebake and sintering are not simulated There are three types of inputs to SIMPL general informa tion the process flow and the layout The user begins by entering several inputs in interactive mode The inputs describe the files needed to run the simula tion the segment of the layout to be simulated and scale factors The first input file is the layout command The layout can be either CIF or KIC it is assumed that the user is familiar with KIC see Appendix A for details on the KIC program This file is a description of the layout which will be simulated The other input file contains a list of the process com mands Every processing input into the program conveys the information necessary to perform one step of the process The input contains the command and the parameters which characterize a specific action as if it were being performed in the lab The parameters describe the topographical effects of the action rather than the settings the machines which perform the actions This means that the user specifies the oxide thickness rather than the time and temperature of the oxidation Therefore the user must have previously characterized the process before he can use that information to visually see the profiles The details of each input statement are given later The inputs commands be used in an arbitrary sequence except for substrate defi
48. r as the layout The input to SIMPL consists of generalized fabrication steps which can be arranged arbitrarily to describe many different processes SIMPL is designed to be fast and uses only rectangular shapes trading off accuracy for speed which is desirable for on line operation SIMPL takes three types of inputs one from the user one from the layout and one from the process file The user speci fies two points which define the cross section cut plane and the scale factor in the Y direction The Y scale factor makes the output more readable compensating for the small dimensions in the vertical plane of an IC SIMPL takes the user defined cross section plane and intersects it with the layout to get the mask crossings The program then executes the commands in the process file with the proper mask edges and simulates the wafer topography A flexible grid structure is used to reduce the number of rectangle required to represent a cross section The process begins with two rectar gles the substrate and the air above which are as large as the desired cross section As the wafer is processed more recta zles are introduces to represent mask edges and layers in the profile SIMPL is written in 1600 lines of code The language utilizes data structures and pointers to variables which are integral parts of the grid Each rectangle is represented by a data structure node which contains the physical information about each rectangle
49. return layers i Dec 12 1983 expose c Page 1 finclude defs expose start stop expose the resist in the region between start and stop int start stop extern int RST ERST extern struct tnode home struct tnode top bor split vertically at start and stop splitx start splitx stop top home move over to the first coulmn while top gt sex lt start top loop coulmns till we move past stop while top 0 if top gt sex lt stop box top loop through air while box gt type 0 box borx 5south loop through resist and convert it to exposed resist while box gt type RST 2 type ERST box box gt south top reast Dec 12 1983 gauss c Page 1 finclude lt math h gt double gauss nmax alpha x perform the function nmax xx alpha alpha double nmar alpha int x double n n1 ni x alpha nmar exp n n return n Dec 12 1983 init c Page 1 finclude defs init initialize the array to one rectangle of maximum dimensions extern tnode home extern int LOWER UPPER YLIMIT struct talloc home talloc create home upper left corner of grid the empty rectangle is set to the maximum dimension of the grid LOWER amp UPPER the min and max lateral dimensions of the grid LIMIT is the max vertical dimension
50. rizontal or vertical microns per lambda the number of microns per one lambda of KIC units start value the starting coordinate of the cut line stop value the final coordinate of the cut line scale factor in y direction a factor which magnifies the profile in the vertical plane to make the very small dimensions visible 2 the x y plane you want split this specifies the coordinate of the plane which the cut line lies on Getting Started 7 the mask file file which contains the mask layout the input file file which contains the process inputs the base name for the output files this gives the base name for the output files output profile at every step specify a profile for every step of the process REM c The process file contains a simple input example illustrat ing the use of SIMPL First the example input file is given and then its meaning is explained The example covers all the simple statements that SIMPL uses SIMPL does not put any restrictions the columns in which the parameters appear but the parameters must be in the correct order No extraneous characters are allowed inside the command lines except at the end of a line Comments can be placed at the end of a command line or on a separate line with the comment command Blank lines are not allowed The example process input file called ex process C input process file example C this e
51. struct tnode high struct tnode low struct knode prev struct nnode name holds the mask name first holds the first node nextmask points to the next mask in the list char 101 struct pnode first struct nnode nextmask struct pnode this is the node which nno e points to atart contains the start of a box and stop is the stop next is the nert pair int start int stop struct pnode nextpair Dec 12 1983 alloc c Page 1 finclude defs define ALLOCSIZE 500000 static char allocbuf ALLOCSIZE atatic char allocp allocbuf men pco used Zd n allocp allocbuf char alloc n this routine allocates space for n characters it returns a pointer to available space or O when not enough space int n if allocp n lt allocbuf ALLOCSIZE allocp return allocp 1 printf not enough memory decrease size of profile n exit 1 struct tnode talloc this routine allocates space for the structure tnode char alloc return struct tnode alloc sizeof struct tnode struct knode kalloc this routine allocates space for the structure knode char alloc return struct knode 9 alloc sizeof struct knode struct pnode psaiioc tnis routine allocates space for the structure pnode char alloc return struct pnode alloc sizeof struct pnode struct nnode nalloc
52. t expose start stop expose the region if pol 1 start is set by the stop of the previous pair stop is the begining of the present pair stop node gt start bloat shift expose start stop or node gt stop bloat shift update start node node gt nextpair if pol 1 expose the final are to the far right edge stop UPPER expose start stop Dec 12 1983 printnode c Page 1 finclude defs include lt stdio h gt printnode high low fp print out rectangles for kic files struct tnode high high points to the top of the box struct tnode 10w low points to the bottom of the box pe extern int YSCALE YLIMIT extern int UPPER LOWER extern double MICPERLAM int delx dely xavg yavg int nwx nwy ser sey char w 40 4 check edges against the limits if nwx high gt nwx gt UPPER nwx UPPER if nwx lt LOWER LOWER if nwy high gt nwy gt YLIMIT nwy YLIMIT if nwy lt YLIMIT YLIMIT if sex high gt sex gt UPPER sex UPPER if sex lt LOWER sex LOWER if sey low gt sey gt YLIMIT sey YLIMIT if sey lt YLIMIT sey YLIMIT calculate delta x and delta y for the box delx sex dely nwy sey if either delta x or y is O then the box has no area if dely 44 delx t 0 calculate the average values for the rectangle xavg nwx sex 2 LOW
53. tion to the type P N The list of layer names follow layer comment POLY poly silicon OX oxide METL metal RST resist ERST exposed resist NTRD nitride SI intrinsic silicon N n type silicon doping must be specified P p type silicon doping must be specified L1 undefined layers L2 L3 LA L5 The parameters for thickness depth delta and sigma are all floating point numbers in microns The values for doping are floating point numbers of atoms per centimeter cubed DETAILED COMMAND LIST C comments may be added with this command The comment card allows comments to be interspersed with the process commands No blank lines are allowed SUBS TYPE DOPE This command forms the substrate material It must be the first non comment input line and can only be used once TYPE specifies the material used and DOPE 15 the doping which is only specified it the TYPE is N or P OXID THICK The oxidation is characterized by the thickness of the new DEPO MASK ETCH DOPE 5 Commands Detailed Description 16 oxide This thickness refers to the thickness which would grow on bare silicon There is a correction factor which accounts for initial oxide this is the square root of the sum of the squares of initial thickness plus new thickness The model also accounts for the 46 consumption of the sil icon TYPE DOPE THICK The deposition command deposits a material on the surface of the wafer The material is specified by
54. type ox splity validox pairs palloc palloc alloc photo expose printnode printpairs rect pairs Searcheast searchsouth Sgn splitx newboxx Searcheast talloc splity newboxy searchsouth talloc sub splity talloc alloc typetonum valid wires Subroutines 20 gettype next rectangle error sgn typetonum node init doptolayer talloc START edge iw detail li Find win 0551963 wwe T STORE e Maw VARIABLE T 15 lexini C FINISH ATE tcu gt 91 717 4 E Mts PEOCESS J wa P wr o ZANT 5 Eno Out Cat wre 46 Flowchart 21 Internal Structure of SIMPL A flexible grid structure is used to reduce the number of rectangles required to represent a cross section The process begins with two rectangles the substrate and the air above which are as large as the desired cross section As the wafer is processed more rectangles are introduces to represent mask edges and layers in the profile as shown Fig 3 Note that the newly introduced grid lines cross the entire cross section A CMOS inverter with 4 steps requires about 3000 rectangles SIMPL 1 is written in 1500 lines of C code The C language utilizes data structures and poi
55. u want split The cut line lies in the horizontal or vertical plane If it is split horizontally then it is necessary to specify the y coordinate of the plane which is split If the split is vertical then the x coordinate of the plane must be specified The coordinate is an integer number in lambda the mask file The mask file is the name of the file which contains the layout The file must be in the current directory Commands Detailed Description 14 the process input file The process input file is the name of the file which tains the process input commands This file must be in the current directory the base name for the output files The base name is the name for the final profile If the profile for every step is output the the files are named basename xx where xx is the process step number output profile at every step yzyes n no This input allows the user to specify if just the final profile or if a profile for every step is created The names of the steps follow the convention stated in base name command 3 Commands Detailed Description 15 PROCESS INPUTS DETAILED DESCRIPTION GENERAL USAGE The process inputs follow a few simpl conventions These will be outlined before the commands are specified in detail Several commands specify a material type to be operated upon There is a fixed list of layers which may be used When the material is doped silicon the doping must be added in addi
56. vel if abpeax lt 1 0 npeak sgn nmax nlow if the doping is below the minimum then set it to intrinsic else if abpeak lt nlow npeak O return npeak Dec 12 1983 node c Page 1 finclude defs nodelayer node return the layer name given the node struct tnode int layer extern int SI if it is silicon the we need to convert the doping to layer otherwise just return layer if layer node gt type SI layer doptolayer node gt doping return layer Dec 12 1983 num c Page 1 finclude defs numacross count the number of boxes across for diagnostics extern struct tnode home atruct tnode int i 1 box home while box box gt east 0 1 return i numdown count the number of boxes down for diagnostics extern atruct tnode home struct tnode box int 1 box home while box box gt south 0 1 return i Dec 12 1985 ox c Page 1 finclude lt math h gt finclude defs oxide depth oxidise SI and POLY oxide thickness is depth if bare surface depth extern struct tnode home struct tnode top box int toporx bottomox newor newbottom bottom surf extern int OX double tox ddepth hypot top home loop through columns while top 0 box top loop through air to get to surface while box gt type 0 box box gt so0uth topox borx
57. xample implants a N WELL into a P substrate SUBS P 1e14 comment at end of a line OXID 1 0 DEPO RST 0 5 MASK NWEL 0 O ETCH ERST 0 6 ETCH OX 1 1 ETCH RST 0 6 DOPE 1 0 16 0 5 1 0 0 5 eae Ch QUO QU om ate aD EDD Ap Oe OS ODD SUED GU The meaning of the statements is as follows comments may be added with this command SUBS 1e14 form the substrate with type material of 1 14 doping OXID 1 0 oxidize the silicon to 1 Omicron Getting Started 8 DEPO RST 0 5 deposit 0 5 micron of resist RST MASK POS NWEL 0 0 photomask the resist with the NWEL mask over etch and misalignment are null ETCH ERST 0 6 etch exposed resist ERST this patterns the resist ETCH OX 1 1 etch 1 1microns of oxide this only occurs in the regions where the resist has been opened ETCH RST 0 6 etch off all the remaining resist DOPE N 1 0e16 0 5 1 0 0 5 dope the silicon with type impurities with Nmax 1e16 sigma for the gaussian distribution is 0 5micron depth of the peak is 1 Omicron below the surface and the masking thickness necessary to block the doping in unwanted areas is 0 5micron The mask file is called ex mask and is the layout file for tue graphics system In this example a KIC file is used but the CIF format of the same file can be used This is a very small file with only one box which lies in the plane that is split KIC file comments Symbol ex mask header 9 ex mask
Download Pdf Manuals
Related Search
Related Contents
Manuale d`uso Electrolux 21602 G Cooktop User Manual Kensington SecureBack POS Enclosure iPad Copyright © All rights reserved.
Failed to retrieve file