<> <> <> <> DIRECTORY CD USING [Level, DesignNumber, DesignPosition, DesignRect, Orientation, ApplicationPtr], SpinifexCircuit USING [Circuit, SpinifexLayerIndex, CircuitNode, CircuitConstraint, RectDelta] ; SpinifexExtras: CEDAR DEFINITIONS ~ BEGIN <<-- Asymetric rectangle extenders, WNEGrow, NESGrow, ESWGrow, SWNGrow, WNGrow.>> WNEGrow: PROCEDURE [ x: INT] RETURNS [SpinifexCircuit.RectDelta] ~ INLINE { RETURN [[x, 0, x, x]] }; NESGrow: PROCEDURE [ x: INT] RETURNS [SpinifexCircuit.RectDelta] ~ INLINE { RETURN [[0, x, x, x]] }; ESWGrow: PROCEDURE [ x: INT] RETURNS [SpinifexCircuit.RectDelta] ~ INLINE { RETURN [[x, x, x, 0]] }; SWNGrow: PROCEDURE [ x: INT] RETURNS [SpinifexCircuit.RectDelta] ~ INLINE { RETURN [[x, x, 0, x]] }; WNGrow: PROCEDURE [ x: INT] RETURNS [SpinifexCircuit.RectDelta] ~ INLINE { RETURN [[x, 0, 0, x]] }; TransistorMaterial: TYPE ~ { nothing, diffusion, polysilicon, postProcess }; PerDrawRectProc: TYPE ~ PROCEDURE [r: CD.DesignRect, l: CD.Level, data: REF ANY] RETURNS [TransistorMaterial]; ReportDifProc: TYPE ~ PROCEDURE [difNode: REF SpinifexCircuit.CircuitNode, r: CD.DesignRect, l: CD.Level]; ProcessMosTransistor: PROCEDURE [appl: CD.ApplicationPtr, pos: CD.DesignPosition, orient: CD.Orientation, cir: REF SpinifexCircuit.Circuit, difSpinifex, polSpinifex: SpinifexCircuit.SpinifexLayerIndex, difChannel, channelEdge: REF SpinifexCircuit.CircuitConstraint, difToPolSep: CD.DesignNumber, PerDrawRect: PerDrawRectProc, data: REF ANY _ NIL, PostProcessor: ReportDifProc _ NIL] RETURNS [gateNode: REF SpinifexCircuit.CircuitNode, sourceDrainNodes: LIST OF REF SpinifexCircuit.CircuitNode, sourceDrainCount: INTEGER]; END.