SXTechnology.mesa
Copyright © 1984, 1985 by Xerox Corporation. All rights reserved.
Written by Shand, June 12, 1984 3:11:49 pm PDT
Last Edited by: Shand, March 12, 1985 2:02:06 pm PST
Last Edited by: Jacobi, April 8, 1985 12:37:34 pm PST
Last edited by: Christian Jacobi, November 7, 1986 11:48:11 am PST
GBB November 24, 1985 4:44:14 pm PST
DIRECTORY
CD USING [Layer, Number, Object, Rect, Technology, Transformation],
SX USING [Circuit, CircuitNode, Constraint, ConstraintArray, ConstraintIndex, ConstraintResolution, ConversionProc, SpinifexLayerIndex, TechHandle],
SXOutput USING [LinkageHousekeeper, LinkagePrintProc],
SXQuadTree USING [RectDelta]
;
SXTechnology: CEDAR DEFINITIONS ~ BEGIN
-- Asymetric rectangle extenders, WNEGrow, NESGrow, ESWGrow, SWNGrow, WNGrow.
WNEGrow: PROCEDURE [ x: INT] RETURNS [SXQuadTree.RectDelta] ~ INLINE {
RETURN [[x, 0, x, x]]
};
NESGrow: PROCEDURE [ x: INT] RETURNS [SXQuadTree.RectDelta] ~ INLINE {
RETURN [[0, x, x, x]]
};
ESWGrow: PROCEDURE [ x: INT] RETURNS [SXQuadTree.RectDelta] ~ INLINE {
RETURN [[x, x, x, 0]]
};
SWNGrow: PROCEDURE [ x: INT] RETURNS [SXQuadTree.RectDelta] ~ INLINE {
RETURN [[x, x, 0, x]]
};
WNGrow: PROCEDURE [ x: INT] RETURNS [SXQuadTree.RectDelta] ~ INLINE {
RETURN [[x, 0, 0, x]]
};
TransistorMaterial: TYPE ~ { nothing, diffusion, polysilicon, postProcess };
PerDrawRectProc: TYPE ~ PROCEDURE [r: CD.Rect, l: CD.Layer, data: REF ANY] RETURNS [TransistorMaterial];
ReportDifProc: TYPE ~ PROCEDURE [difNode: REF SX.CircuitNode, r: CD.Rect, l: CD.Layer];
ProcessMosTransistor: PROCEDURE [ob: CD.Object, trans: CD.Transformation, cir: REF SX.Circuit, difSpinifex, polSpinifex: SX.SpinifexLayerIndex, difChannel, channelEdge: REF SX.Constraint, difChanSep, difToPolSep: CD.Number, PerDrawRect: PerDrawRectProc, data: REF ANYNIL, PostProcessor: ReportDifProc ← NIL] RETURNS [gateNode: REF SX.CircuitNode, sourceDrainNodes: LIST OF REF SX.CircuitNode, sourceDrainCount: INTEGER];
--requirement: transistors must not depend on instance properties
-- ResolutionTable & SetUpResolution are aids to technology dependent clients in constructing ConstraintResolution ARRAYs. The First row and column of the ResolutionTable list ConstraintIndices (in any order). The inner entries of the table indicate the index of the constraint to be applied when the corresponding pair of constraints in the first column and row overlap.
-- An important attribute of resolution is that they are commutative and associative.
ResolutionTable: TYPE ~ ARRAY SX.ConstraintIndex OF ARRAY SX.ConstraintIndex OF SX.ConstraintIndex;
SetUpResolution: PROCEDURE [constrArray: REF SX.ConstraintArray, res: ResolutionTable] RETURNS [REF SX.ConstraintResolution];
-- technologyHandle should be considered readonly after registering.
RegisterTechnologyHandle: PROCEDURE [cdTech: CD.Technology, technologyHandle: REF SX.TechHandle];
RegisterSpinifexObjectProcs: PROCEDURE [cdTech: CD.Technology, objectType: ATOM, conv: SX.ConversionProc, thyme, rose: SXOutput.LinkagePrintProc ← NIL, fini: SXOutput.LinkageHousekeeper ← NIL];
GetCircuitFromCDObject: PROCEDURE [cdOb: CD.Object] RETURNS [REF SX.Circuit];
END.
Edited on March 9, 1985 5:22:32 pm PST, by Shand
Added SetUpResolution procedure to aid technology dependent clients in constructing ConstraintResolution ARRAYs.
changes to: DIRECTORY, ResolutionTable, SetUpResolution
Edited on March 12, 1985 2:00:54 pm PST, by Shand
changes to: DIRECTORY, RegisterTechnologyHandle, RegisterSpinifexObjectProcs, END, RegisterTechnologyHandle, GetCircuitFromCDObject, GetCircuitFromCDObject
Edited on May 6, 1985 11:26:55 am PDT, by Beretta
Converted to ChipNDale CD20
gbb August 9, 1985 2:36:53 pm PDT
Implementation of Core output.
changes to: RegisterSpinifexObjectProcs: added parameter for core.
gbb November 24, 1985 4:44:01 pm PST
Removed Core output.
changes to: RegisterSpinifexObjectProcs