<> <> <> <> DIRECTORY CMos USING [lambda], CD USING [Number, Object, Layer, undefLayer]; CMosCMTransistors: CEDAR DEFINITIONS = BEGIN lambda: CD.Number = CMos.lambda; wXExtension: CD.Number = 2*lambda; lXExtension: CD.Number = 2*lambda; TransistorPtr: TYPE = REF TransistorRec; TransistorRec: TYPE = RECORD [ width: CD.Number, length: CD.Number, wExt: CD.Number _ wXExtension, lExt: CD.Number _ lXExtension, angle: BOOL _ FALSE ]; undef: PRIVATE CD.Layer=CD.undefLayer; -- will force ordinary diffusion CreateTransistor: PROC [w, l: CD.Number, wExt: CD.Number_wXExtension, lExt: CD.Number_lXExtension, difLev: CD.Layer_undef] RETURNS [CD.Object]; <<--Do not use wExt, lExt, it is included for compatibility only>> CreateAngleTransistor: PROC [w, l: CD.Number, wExt: CD.Number_wXExtension, lExt: CD.Number_lXExtension, aExt: CD.Number_0, difLev: CD.Layer_undef] 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.