DIRECTORY Cabbage, CD, Connections, Core, HashTable, PWRoute, Rope, Route, RTBasic; CabbagePrivate: CEDAR DEFINITIONS = BEGIN Handle: TYPE = REF HandleRec; HandleRec: TYPE = RECORD [ name: Rope.ROPE _ NIL, routeType: RouteType _ normal, size: CD.Position _ [0, 0], vddNet, gndNet: Connections.Net _ NIL, connections: Connections.Table _ NIL, parms: Cabbage.PadRingParams _ NIL, rules: DesignRules _ 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[ orgin, size: CD.Position _ [0, 0], object: Cabbage.Object _ NIL ]; DesignRules: TYPE = REF DesignRulesRec; DesignRulesRec: TYPE = RECORD[ horizParms, vertParms: ParmSet ]; ParmSet: TYPE = RECORD[ parms: PWRoute.RouterParams, 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 Route.Side OF Channel, switchBoxes: ARRAY Corners OF SwitchBox ]; DetailedRoutingPL: TYPE = REF DetailedRoutingPLRec; DetailedRoutingPLRec: TYPE = RECORD[ channels: ARRAY RTBasic.LRSide OF Channel, switchBoxes: ARRAY RTBasic.TBSide OF SwitchBox ]; Channel: TYPE = RECORD[ size, orgin: CD.Position _ [0, 0], object, shell: Cabbage.Object _ NIL]; SwitchBox: TYPE = RECORD[ size, orgin: CD.Position _ [0, 0], object: Cabbage.Object _ NIL]; Corners: TYPE = {bottomLeft, bottomRight, topRight, topLeft}; 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: Cabbage.Object, connections: Connections.Table, parms: Cabbage.PadRingParams, name: Rope.ROPE, routeType: CabbagePrivate.RouteType] RETURNS [handle: CabbagePrivate.Handle]; CheckInnerPos: PROC [handle: CabbagePrivate.Handle, innerPos: CD.Position]; GlobalRoute: PROC [handle: CabbagePrivate.Handle]; DetailedRoute: PROC [handle: CabbagePrivate.Handle]; MakeChip: PROC [handle: CabbagePrivate.Handle] RETURNS [chip: Cabbage.Object]; END. ŠCabbagePrivate.mesa Copyright c 1986 by Xerox Corporation. All rights reserved. by Bryan Preas, February 6, 1987 5:25:55 pm PST Κ§˜šœ™Jšœ Οmœ1™˜IJ˜—šΟnœžœž œ˜#Jšž˜J˜Jšœžœžœ ˜šœ žœžœ˜Jšœ žœžœ˜J˜Jšœžœ˜Jšœ"žœ˜&Jšœ!žœ˜%Jšœžœ˜#Jšœžœ˜Jšœžœ˜#Jšœ#žœ˜'Jšœ'žœ˜+Jšœ žœ˜$Jšœ^˜^Jšœ˜—Icode˜Kšœ žœ˜'K˜šœžœžœ˜!Kšœ žœ˜"Kšœž˜Kšœ˜—J˜Jšœ žœžœ˜'šœžœžœ˜Jšœ˜Jšœ˜—šœ žœžœ˜Jšœ˜Jšœ˜Jšœ˜J˜—Jšœžœžœ˜+šœžœžœ˜ Jš œ žœ žœ žœžœ˜0Jšœ˜—Jšœ žœžœžœ˜)Jšœ žœ\˜jJ˜Jšœžœžœ˜/šœžœžœ˜"Jšœ žœ žœ ˜&Jšœ žœ žœ ˜'Jšœ˜—Jšœžœžœ˜3šœžœžœ˜$Jšœ žœžœ ˜*Jšœ žœžœ ˜.Jšœ˜—šœ žœžœ˜Jšœ žœ˜"Jšœ žœ˜%—šœ žœžœ˜Jšœ žœ˜"Jšœžœ˜—šœ žœ0˜=J˜—Kšœ žœžœ˜%š œžœžœžœžœžœ˜TK˜—šœ žœžœ˜Kšœ!˜!K˜—šŸ œžœ¨žœ%žœ!˜K˜—šŸ œžœ+žœ ˜KK˜—šŸ œžœ!˜2K˜—šŸ œžœ!˜4K˜—KšŸœžœ!žœ˜NJ˜Jšžœ˜—J˜J˜J˜—…— (Y