DIRECTORY DABasics, Cabbage, CD, Connections, Core, Rope, Route, RTBasic; CabbagePrivate: CEDAR DEFINITIONS = BEGIN Handle: TYPE = REF HandleRec; HandleRec: TYPE = RECORD [ name: Rope.ROPE _ NIL, routeType: RouteType _ normal, size: DABasics.Position _ [0, 0], vddNet, gndNet: Connections.Net _ NIL, connections: Connections.Table _ NIL, parms: Cabbage.PadRingParams _ NIL, rules: DesignRules _ NIL, powerDistribution: PowerDistribution _ NIL, globalRouting: GlobalRouting _ NIL, detailedRouting: DetailedRouting _ NIL, detailedRoutingPL: DetailedRoutingPL _ NIL, widthTable: Connections.Table _ NIL, inner, bottomLeft, bottom, bottomRight, right, topRight, top, topLeft, left: ObjectDescription ]; RouteType: TYPE ~ {normal, padLimited}; ObjectDescription: TYPE ~ RECORD[ origin, size: DABasics.Position _ [0, 0], object: CD.Object _ NIL ]; DesignRules: TYPE = REF DesignRulesRec; DesignRulesRec: TYPE = RECORD[ horizInsideParms, horizOutsideParms, vertInsideParms, vertOutsideParms: ParmSet ]; ParmSet: TYPE = RECORD[ parms: Route.DesignRulesParameters, rules: Route.DesignRules ]; GlobalRouting: TYPE = REF GlobalRoutingRec; GlobalRoutingRec: TYPE = RECORD[ exitLists: ARRAY Division OF ExitList _ ALL[NIL] ]; ExitList: TYPE = LIST OF Connections.Net; Division: TYPE = {bottomLeft, bottomRight, rightBottom, rightTop, topRight, topLeft, leftTop, leftBottom}; DetailedRouting: TYPE = REF DetailedRoutingRec; DetailedRoutingRec: TYPE = RECORD[ channels: ARRAY DABasics.Side OF Channel, switchBoxes: ARRAY Corners OF Channel ]; DetailedRoutingPL: TYPE = REF DetailedRoutingPLRec; DetailedRoutingPLRec: TYPE = RECORD[ channels: ARRAY RTBasic.LRSide OF Channel, switchBoxes: ARRAY RTBasic.TBSide OF Channel ]; Channel: TYPE = RECORD[ size, origin: DABasics.Position _ [0, 0], object: CD.Object _ NIL, cellType: Core.CellType _ NIL]; Corners: TYPE = {bottomLeft, bottomRight, topRight, topLeft}; PowerDistribution: TYPE = REF PowerDistributionRec; PowerDistributionRec: TYPE = RECORD[ channels: ARRAY DABasics.Side OF Channel, power: ARRAY DABasics.Side OF Channel, switchBoxes: ARRAY Corners OF Channel ]; SegmentSeq: TYPE = REF SegmentSeqRec; SegmentSeqRec: TYPE = RECORD[seq: SEQUENCE numSegments: NAT OF Connections.Segment]; SegmentPair: TYPE = RECORD[ seg1, seg2: Connections.Segment]; CreateHandle: PROC [inner, bottomLeft, bottom, bottomRight, right, topRight, top, topLeft, left: CD.Object, connections: Connections.Table, parms: Cabbage.PadRingParams, name: Rope.ROPE, routeType: CabbagePrivate.RouteType] RETURNS [handle: CabbagePrivate.Handle]; CheckInnerPos: PROC [handle: CabbagePrivate.Handle, innerPos: DABasics.Position]; DistributePower: PROC [handle: CabbagePrivate.Handle]; GlobalRoute: PROC [handle: CabbagePrivate.Handle]; DetailedRoute: PROC [handle: CabbagePrivate.Handle]; MakeChip: PROC [handle: CabbagePrivate.Handle] RETURNS [chip: CD.Object]; END. ΊCabbagePrivate.mesa Copyright Σ 1986, 1987 by Xerox Corporation. All rights reserved. by Bryan Preas, April 2, 1987 11:09:58 am PST Bertrand Serlet April 27, 1987 0:19:44 am PDT Κό˜šœ™JšœB™BJšœ*Οk™-Icodešœ-™-—J™š ˜ Jšœœ*˜?J˜—šΟnœœ œ˜)J˜Jšœœœ ˜šœ œœ˜Jšœ œœ˜J˜Jšœ!˜!Jšœ"œ˜&Jšœ!œ˜%Jšœœ˜#Jšœœ˜Jšœ'œ˜+Jšœœ˜#Jšœ#œ˜'Jšœ'œ˜+Jšœ œ˜$Jšœ^˜^Jšœ˜—K˜Kšœ œ˜'K˜šœœœ˜!Kšœ)˜)Kšœœ ˜Kšœ˜—J˜Jšœ œœ˜'šœœœ˜JšœO˜OJšœ˜—šœ œœ˜Jšœ#˜#Jšœ˜Jšœ˜J˜—Jšœœœ˜+šœœœ˜ Jš œ œ œ œœ˜0Jšœ˜—Jšœ œœœ˜)Jšœ œ\˜jJ˜Jšœœœ˜/šœœœ˜"Jšœ œœ ˜)Jšœ œ œ˜%Jšœ˜—Jšœœœ˜3šœœœ˜$Jšœ œœ ˜*Jšœ œœ˜,Jšœ˜—šœ œœ˜Jšœ)˜)Jšœœ œ˜Jšœœ˜—šœ œ0˜=J˜—Jšœœœ˜3šœœœ˜$Jšœ œœ ˜)Jšœœœ ˜&Jšœ œ œ˜%Jšœ˜J˜—Kšœ œœ˜%š œœœœœœ˜TK˜—šœ œœ˜Kšœ!˜!K˜—š ž œœOœRœ'œ!˜ˆK˜—šž œœ>˜QK˜—šžœœ!˜6K˜—šž œœ!˜2K˜—šž œœ!˜4K˜—Kšžœœ!œœ ˜IJ˜Jšœ˜—J˜J˜J˜—…— P