<> <> <> <> DIRECTORY CD USING [DesignNumber, ObPtr, lambda]; NMosTransistors: CEDAR DEFINITIONS = BEGIN Implant: TYPE = [0..4); enhancement: Implant = 0; zeroTresh: Implant = 1; weakDepletion: Implant = 2; strongDepletion: Implant = 3; 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, implant: Implant_enhancement, angle: BOOL _ FALSE, pullup: BOOL _ FALSE -- pullup ==> NOT (angle OR implant) ]; CreateTransistor: PROC [w, l: CD.DesignNumber, implant: Implant_enhancement, wExt: CD.DesignNumber_wXExtension, lExt: CD.DesignNumber_lXExtension] RETURNS [CD.ObPtr]; <<--Do not use wExt, lExt, it is included for compatibility only>> CreatePullUp: PROC [w, l: CD.DesignNumber, wExt: CD.DesignNumber_wXExtension, lExt: CD.DesignNumber_lXExtension] RETURNS [CD.ObPtr]; <<--Do not use wExt, lExt, it is included for compatibility only>> CreateAngleTransistor: PROC [w, l: CD.DesignNumber, implant: Implant_enhancement, wExt: CD.DesignNumber_wXExtension, lExt: CD.DesignNumber_lXExtension, aExt: CD.DesignNumber_0] RETURNS [CD.ObPtr]; <<--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.