<> <> <> <> DIRECTORY CD USING [Number, Object], NMos USING [lambda]; NMosTransistors: CEDAR DEFINITIONS = BEGIN Implant: TYPE = [0..4); enhancement: Implant = 0; zeroTresh: Implant = 1; weakDepletion: Implant = 2; strongDepletion: Implant = 3; wXExtension: CD.Number = 2*NMos.lambda; lXExtension: CD.Number = 2*NMos.lambda; TransistorPtr: TYPE = REF TransistorRec; TransistorRec: TYPE = RECORD [ width: CD.Number, length: CD.Number, wExt: CD.Number _ wXExtension, lExt: CD.Number _ lXExtension, implant: Implant_enhancement, angle: BOOL _ FALSE, pullup: BOOL _ FALSE -- pullup ==> NOT (angle OR implant) ]; CreateTransistor: PROC [w, l: CD.Number, implant: Implant_enhancement, wExt: CD.Number_wXExtension, lExt: CD.Number_lXExtension] RETURNS [CD.Object]; <<--Do not use wExt, lExt, it is included for compatibility only>> CreatePullUp: PROC [w, l: CD.Number, wExt: CD.Number_wXExtension, lExt: CD.Number_lXExtension] RETURNS [CD.Object]; <<--Do not use wExt, lExt, it is included for compatibility only>> CreateAngleTransistor: PROC [w, l: CD.Number, implant: Implant_enhancement, wExt: CD.Number_wXExtension, lExt: CD.Number_lXExtension, aExt: CD.Number_0] RETURNS [CD.Object]; <<--Do not use wExt, lExt, it is included for compatibility only>> <<--All create procedures create in an orientation >> <<--w in direction of increasing x>> <<--l in direction of increasing y>> <<--All create procedures may (or may not) create references to>> <<--the same object. Therefore consider the transistor objects as >> <<--readonly. If a transistor needs to be modified create a new one!>> END.