<> <> <> DIRECTORY CD USING [DesignNumber, ObPtr, Level, combined, lambda]; CMosTransistors: CEDAR DEFINITIONS = BEGIN wXExtension: CD.DesignNumber = 2*CD.lambda; lXExtension: CD.DesignNumber = 2*CD.lambda; TransistorPtr: TYPE = REF TransistorRec; TransistorRec: TYPE = RECORD [ width: CD.DesignNumber, length: CD.DesignNumber, wExt: CD.DesignNumber _ wXExtension, lExt: CD.DesignNumber _ lXExtension, angle: BOOL _ FALSE ]; undef: PRIVATE CD.Level=CD.combined; -- will force ordinary diffusion CreateTransistor: PROC [w, l: CD.DesignNumber, wExt: CD.DesignNumber_wXExtension, lExt: CD.DesignNumber_lXExtension, difLev: CD.Level_undef] RETURNS [CD.ObPtr]; CreateAngleTransistor: PROC [w, l: CD.DesignNumber, wExt: CD.DesignNumber_wXExtension, lExt: CD.DesignNumber_lXExtension, aExt: CD.DesignNumber_0, difLev: CD.Level_undef] RETURNS [CD.ObPtr]; <<--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.