CDMEBESForMPC5NA.load
last modified by McCreight, December 19, 1985 11:38:50 am PST
CDMEBES
← %CDMEBES.stripesPerClump ← 5 -- package default is 10
← %CDProperties.PutPropOnTechnology[onto: %CMos.cmos, prop: $CDMEBESNmPerLambda, val: NEW[CDMEBES.Nm ← 1000]]
.. the die size
← %CDProperties.PutPropOnTechnology[onto: %CMos.cmos, prop: $CDMEBESXNmPerDie, val: NEW[CDMEBES.Nm ← 8400000]]
← %CDProperties.PutPropOnTechnology[onto: %CMos.cmos, prop: $CDMEBESYNmPerDie, val: NEW[CDMEBES.Nm ← 9400000]]
← %CDProperties.PutPropOnTechnology[onto: %CMos.cmos, prop: $CDMEBESNmMaxBloat, val: NEW[CDMEBES.Nm ← 10000 -- 10 um is an upper bound on the greatest distance the "influence" of a drawn object extends beyond itself -- ]]
This file may be used to create either ICL biases/scribe lines or VTI biases/scribe lines. Which is controlled by the following boolean:
← &doingICLNames ← TRUE
← &doingICLBias ← TRUE
← &vtiExperiment ← FALSE
.. Jeff Hoel will make this TRUE for die MPC5NAU
← &doingICLScribe ← TRUE
← &doingNitridePassivation ← FALSE
The rest of this specification is inspired by "Tooling Specification for 2.0 Micron N-Well CMOS Double Metal Advanced Lithography Design Rules", VTI Document number 02-10001, by Wes Erck, 5 June 85. Hereafter this delightful document is designated as Ref 1.
← &s ← 13000 -- nm, Ref 1, page 4, section 6.1, first paragraph. Scribe lines are described as a bidirectional road, with symmetry about the center line. 13 microns is the smallest acceptable "bicycle lane", where the motor traffic lane is to be occupied by a test structure. The sum of bicycle and motor traffic lane must be at least 55 um.
← %CDProperties.PutPropOnTechnology[onto: %CMos.cmos, prop: $CDMEBESActiveToScribeCenter, val: NEW[CDMEBES.Nm ← (IF &doingICLScribe THEN 105000 -- active area 25 um inside metal 2 scribe ring -- ELSE &s+6000+14000+40000 -- active area allowed 40 um inside metal scribe ring --)]]
.. CMOS masks:
Note: We thought it might be interesting to try some Schottky diodes, that would likely result from making metal contact to the lightly-doped n-well. For this purpose, we use the layer CMos.bur to generate thin oxide and to inhibit n+ and p+ implants.
thin oxide or diffusion = 10
← &thinOxBias ← (IF &doingICLBias THEN 1000 -- now (maybe 1500 later) -- ELSE 2000) -- nm
← &thinOxScribe ← NEW[%CDMEBES.ScribeRec ← [scribeCenterToOuterEdge: 0, width: (IF &doingICLScribe THEN 55000 ELSE &s+14000 -- nm --)]]
← &thinOx ← NEW[%CDMEBES.MaskSpecRec ← [name: "10", mebesPixelPitch: (IF (&doingICLBias AND ((&thinOxBias MOD 1000) = 0)) THEN 500 ELSE 250), cover: LIST[$OR, NEW[%CDMEBES.CDLayerRec ← [source: %CMos.ndif, deltaDiameter: &thinOxBias ]], NEW[%CDMEBES.CDLayerRec ← [source: %CMos.pdif, deltaDiameter: &thinOxBias]], NEW[%CDMEBES.CDLayerRec ← [source: %CMos.pwellCont, deltaDiameter: &thinOxBias]], NEW[%CDMEBES.CDLayerRec ← [source: %CMos.nwellCont, deltaDiameter: &thinOxBias]], NEW[%CDMEBES.CDLayerRec ← [source: %CMos.bur, deltaDiameter: &thinOxBias]], &thinOxScribe]]]
The reason for the ugliness in mebesPixelPitch is that VTI wants to do bias adjustment below 250 nm, which is done with beam voltage or current, and we suppose is easier to do with the smaller pixel size. The fact is, we don't know for sure.
pwell = PField dope
← &pWellName ← (IF &doingICLNames THEN "22" ELSE "11")
← &nWellBias ← (IF (&doingICLBias AND NOT &vtiExperiment) THEN -8000 ELSE -3000) -- nm
← &pWellBias ← (IF (&doingICLBias AND NOT &vtiExperiment) THEN &nWellBias+6000 ELSE &nWellBias+4000) -- nm
← &pWellScribe ← IF &doingICLScribe THEN &thinOxScribe ELSE NIL
← &pWell ← NEW[%CDMEBES.MaskSpecRec ← [name: &pWellName, cover: LIST[$OR, NEW[%CDMEBES.CDLayerRec ← [source: %CMos.nwell, deltaDiameter: &pWellBias -- nm --]], &pWellScribe]]]
Note: For the source/drain implants, the ideal situation for the implanter is alleged to be minimum photoresist. Therefore we implant everywhere EXCEPT where the opposite sex of implant is required in the design. I'm not sure what we should do about a scribe line. I'm also not quite sure what I should do about VTI's proposed skew of +0.5 micron/side of N+ implant.
nimp
← &ndifs ← LIST[NEW[%CDMEBES.CDLayerRec ← [source: %CMos.ndif]], NEW[%CDMEBES.CDLayerRec ← [source: %CMos.nwellCont]], NEW[%CDMEBES.CDLayerRec ← [source: %CMos.bur]]]
← &pdifs ← LIST[NEW[%CDMEBES.CDLayerRec ← [source: %CMos.pdif]], NEW[%CDMEBES.CDLayerRec ← [source: %CMos.pwellCont]], NEW[%CDMEBES.CDLayerRec ← [source: %CMos.bur]]]
← &nImpName ← (IF &doingICLNames THEN "23" ELSE "24")
← &nImpScribe ← NEW[%CDMEBES.ScribeRec ← [scribeCenterToOuterEdge: &s+2000, width: 12000 -- nm --]]
← &pImpScribe ← NEW[%CDMEBES.ScribeRec ← [scribeCenterToOuterEdge: 0, width: &s+14000 -- nm --]]
← &nImp ← NEW[%CDMEBES.MaskSpecRec ← [name: &nImpName, cover: LIST[$NOT, LIST[$OR, &pImpScribe, LIST[$DeNotch, NEW[CDMEBES.Nm ← 1500 -- diameter of smallest collapsing space between pImp, nm -- ], NEW[CDMEBES.Nm ← -1500 -- diameter of smallest collapsing piece of pImp, nm -- ], LIST[$RestrictedEnlarge, NEW[CDMEBES.Nm ← 1500 -- maxRadialExtension, nm -- ], CONS[$OR, CONS[NEW[%CDMEBES.CDLayerRec ← [source: %CMos.bur]], &pdifs]], CONS[$OR, &ndifs]]]]]]]
pimp
← &pImpName ← (IF &doingICLNames THEN "24" ELSE "25")
← &pImp ← NEW[%CDMEBES.MaskSpecRec ← [name: &pImpName, cover: LIST[$NOT, LIST[$OR, &nImpScribe, LIST[$DeNotch, NEW[CDMEBES.Nm ← 1500 -- diameter of smallest collapsing space between nImp, nm -- ], NEW[CDMEBES.Nm ← -1500 -- diameter of smallest collapsing piece of nImp, nm -- ], LIST[$RestrictedEnlarge, NEW[CDMEBES.Nm ← 1500 -- maxRadialExtension, nm -- ], CONS[$OR, CONS[NEW[%CDMEBES.CDLayerRec ← [source: %CMos.bur]], &ndifs]], CONS[$OR, &pdifs]]]]]]]
nwell
← &nWellScribe ← IF &doingICLScribe THEN &thinOxScribe ELSE NEW[%CDMEBES.ScribeRec ← [scribeCenterToOuterEdge: 0, width: &s+2000 -- nm --]]
← &nWellName ← (IF &doingICLNames THEN "25" ELSE "26")
(December 4, 1985 11:08:36 am PST) We blew it !! The ICL name for this layer is supposed to be 21, not 25. This should be fixed for the next run.
← &nWell ← NEW[%CDMEBES.MaskSpecRec ← [name: &nWellName, cover: LIST[$OR, NEW[%CDMEBES.CDLayerRec ← [source: %CMos.nwell, deltaDiameter: &nWellBias]], &nWellScribe]]]
poly
← &polyName ← (IF &doingICLNames THEN "30" ELSE "40")
← &polyBias ← (IF &doingICLBias THEN 0 ELSE 500) -- nm
← &polyScribe ← NEW[%CDMEBES.ScribeRec ← (IF &doingICLScribe THEN [scribeCenterToOuterEdge: 54000, width: 18000 -- nm --] ELSE [scribeCenterToOuterEdge: &s+10000 -- nm --, width: 8000 -- nm --])]
← &poly ← NEW[%CDMEBES.MaskSpecRec ← [name: &polyName, mebesPixelPitch: (IF (&doingICLBias AND ((&polyBias MOD 1000) = 0)) THEN 500 ELSE 250), cover: LIST[$OR, NEW[%CDMEBES.CDLayerRec ← [source: %CMos.pol, deltaDiameter: &polyBias]], &polyScribe]]]
cut = contact
← &cutName ← (IF &doingICLNames THEN "40" ELSE "50")
← &cutScribe ← NEW[%CDMEBES.ScribeRec ← [scribeCenterToOuterEdge: 0, width: (IF &doingICLScribe THEN 53000 ELSE &s+16000 -- nm --)]]
← &cut ← NEW[%CDMEBES.MaskSpecRec ← [name: &cutName, cover: LIST[$OR, NEW[%CDMEBES.CDLayerRec ← [source: %CMos.cut, deltaDiameter: 0 -- nm --]], &cutScribe]]]
cut2 = via
← &cut2Name ← (IF &doingICLNames THEN "70" ELSE "51")
← &cut2Scribe ← NEW[%CDMEBES.ScribeRec ← [scribeCenterToOuterEdge: 0, width: (IF &doingICLScribe THEN 40000 ELSE &s+2000 -- nm --)]]
← &cut2 ← NEW[%CDMEBES.MaskSpecRec ← [name: &cut2Name, cover: LIST[$OR, NEW[%CDMEBES.CDLayerRec ← [source: %CMos.cut2, deltaDiameter: 0 -- nm --]], &cut2Scribe]]]
Watch this space. VTI is leaning toward enlarging minimum-size Via's over thin oxide by a diameter of 500 nm
metal
← &metalName ← (IF &doingICLNames THEN "50" ELSE "60")
← &metalScribe ← NEW[%CDMEBES.ScribeRec ← (IF &doingICLScribe THEN [scribeCenterToOuterEdge: 59000, width: 20000 -- nm --] ELSE [scribeCenterToOuterEdge: &s+6000 -- nm --, width: 14000 -- nm --])]
← &metal ← NEW[%CDMEBES.MaskSpecRec ← [name: &metalName, cover: LIST[$OR, NEW[%CDMEBES.CDLayerRec ← [source: %CMos.met, deltaDiameter: 1000 -- nm -- ]], &metalScribe]]]
metal2
← &metal2Name ← (IF &doingICLNames THEN "80" ELSE "61")
← &metalScribe ← (IF &doingICLScribe THEN NEW[%CDMEBES.ScribeRec ← [scribeCenterToOuterEdge: 75000, width: 10000 -- nm --]] ELSE NIL)
← &metal2 ← NEW[%CDMEBES.MaskSpecRec ← [name: &metal2Name, cover: NEW[%CDMEBES.CDLayerRec ← [source: %CMos.met2, deltaDiameter: 1000 -- nm --]]]]
glass = oxide passivation
← &glassName ← (IF &doingICLNames THEN "60" ELSE "70")
← &glassScribe ← NEW[%CDMEBES.ScribeRec ← [scribeCenterToOuterEdge: 0, width: (IF &doingICLScribe THEN 40000 ELSE &s -- nm --)]]
← &glass ← NEW[%CDMEBES.MaskSpecRec ← [name: &glassName, cover: LIST[$OR, NEW[%CDMEBES.CDLayerRec ← [source: %CMos.ovg, deltaDiameter: 0 -- nm --]], NEW[%CDMEBES.ScribeRec ← [scribeCenterToOuterEdge: 0, width: &s -- nm --]]]]]
nitride passivation = 71
← &nitride ← NEW[%CDMEBES.MaskSpecRec ← [name: "71", cover: LIST[$OR, NEW[%CDMEBES.CDLayerRec ← [source: %CMos.ovg, deltaDiameter: -10000 -- nm --]], NEW[%CDMEBES.ScribeRec ← [scribeCenterToOuterEdge: 0, width: &s-10000 -- nm --]]]]]
← %CDProperties.PutPropOnTechnology[onto: %CMos.cmos, prop: $CDMEBESMaskSetSpec, val: LIST[ &thinOx, &pWell, &nImp, &pImp, &nWell, &poly, &cut, &cut2, &metal, &metal2, &glass, (IF &doingNitridePassivation THEN &nitride ELSE NIL) ]]
.. the name of the die (until I figure out how to get it into the design)
← %CDProperties.PutPropOnAtom[$MEBESMask, $CDMEBESMaskSetName, "MPC5NAV"]