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]; CreatePullUp: PROC [w, l: CD.DesignNumber, wExt: CD.DesignNumber_wXExtension, lExt: CD.DesignNumber_lXExtension] RETURNS [CD.ObPtr]; CreateAngleTransistor: PROC [w, l: CD.DesignNumber, implant: Implant_enhancement, wExt: CD.DesignNumber_wXExtension, lExt: CD.DesignNumber_lXExtension, aExt: CD.DesignNumber_0] RETURNS [CD.ObPtr]; END. ÚNMosTransistors.mesa (part of Chip'N Dale) by Christian Jacobi May 3, 1983 11:22 am last edited by Christian Jacobi September 26, 1983 11:15 am --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! Ê,˜Jšœ1™1J˜Jšœ+™+Jšœ=™=J˜šÏk ˜ Jšœœ˜'J˜—JšÏbœœ œ˜$Jš˜J˜šœ œ ˜Jšœ˜Jšœ˜Jšœ˜Jšœ˜—J˜Jšœ œœ˜+Jšœ œœ˜+J˜Jšœœœ˜(šœœœ˜Jšœœ˜Jšœœ˜Jšœœ˜$Jšœœ˜$Jšœ˜Jšœœœ˜JšœœœÏc$˜9J˜J˜—šÏnœœœ˜0Jšœ˜Jšœœ˜#Jšœœ˜#Jšœœ˜J˜—š  œœœ˜+Jšœœ˜"Jšœœ˜#Jšœœ˜J˜—š œœœ˜5Jšœ˜Jšœœ˜#Jšœœ˜#Jšœœ˜Jšœœ˜J˜—Jšœ1™1Jšœ ™ Jšœ ™ J˜Jšœ=™=JšœA™AJšœC™CJ˜Jšœ˜J˜—…—|‚