DIRECTORY Basics, CD, HashTable, Rope, Route, RoutePrivate; RouteUtil: CEDAR DEFINITIONS = BEGIN LayerToRoutingLayer: PROC [routingArea: Route.RoutingArea, layer: Route.Layer] RETURNS [routingLayer: RoutePrivate.RoutingLayer]; RoutingLayerToLayer: PROC [routingArea: Route.RoutingArea, routingLayer: RoutePrivate.RoutingLayer] RETURNS [layer: Route.Layer]; GetNumberProp: PROC [properties: Route.PropList, key: REF ATOM, default: Route.Number] RETURNS [Route.Number]; PutNumberProp: PROC [properties: Route.PropList, key: REF ATOM, number: Route.Number] RETURNS [Route.PropList]; Length: PROC [pos1, pos2: Route.Position] RETURNS [Route.Number]; XYToPQ: PROC [routingArea: Route.RoutingArea, pos: Route.Position] RETURNS [pqPos: RoutePrivate.PQPosition]; PQToXY: PROC [routingArea: Route.RoutingArea, pqPos: RoutePrivate.PQPosition] RETURNS [pos: Route.Position]; SimpleCompare: PROCEDURE [result1, result2: Route.Number] RETURNS [result: Basics.Comparison]; CompareResult: PROCEDURE [result1, result2: Route.RoutingResult] RETURNS [result: Basics.Comparison]; CreateCDPin: PROC [name: Rope.ROPE, rect: Route.Rect, lev: Route.Layer_CD.undefLayer] RETURNS [cdPin: Route.Instance]; GetPinWidth: PROC [routingArea: Route.RoutingArea, connections: Route.PinList, channelDirection: Route.Direction] RETURNS [widestBranchPin, widestTrunkPin: Route.Number]; GetWidthWithContact: PROC [routingArea: Route.RoutingArea, branch: Route.Number] RETURNS [width: Route.Number] = INLINE{RETURN[MAX[routingArea.rules.contactSize, branch]]}; Include: PROC [cell: Route.Object_NIL, ob: Route.Object, position: Route.Position_[0, 0], orientation: CD.Orientation_original] RETURNS [application: Route.Instance]; AddPin: PROC [obj: Route.Object, pin: Route.Pin]; AddVia: PROC [obj: Route.Object, name: Rope.ROPE, pos, size: Route.Position, layer1, layer2: Route.Layer, cdLambda: Route.Number, viaTable: HashTable.Table]; GetVia: PROC [size: Route.Position, layer1, layer2: Route.Layer, cdLambda: Route.Number] RETURNS [cell: Route.Object]; StitchVias: PROC [size: Route.Position, layer1, layer2: Route.Layer, cdLambda: Route.Number, viaTable: HashTable.Table] RETURNS [obj: Route.Object]; LineToRect: PROC [pos1, pos2: Route.Position, width: Route.Number] RETURNS [position: Route.Position, size: Route.Position]; END. ÖRouteUtil.mesa Copyright c 1985, 1987 by Xerox Corporation. All rights reserved. by Bryan Preas July 10, 1985 6:57:00 pm PDT last edited by Bryan Preas February 5, 1987 8:15:23 pm PST Search for property key. If found return value else return default. Put key and number on properties. return lenth of line segment from pos1 to pos2. convert a position from x-y to p-q space. convert a position from p-q to x-y space. Create a ChipNDale pin. Calls CDPinObjects.CreatePinInstance but normalizes th rectangle first. Find the widest pin in connections in channelDirection. Find the width of a pin when contact is included. include an object in a cell convert a line and a width to a rectangle and an orgin ʇ˜Jšœ™˜Jšœ Ïmœ7™BJšœ.™.Jšœ<™<—J˜šÏk ˜ Jšœ1˜1J˜—Jšœ žœž œ˜Jšž˜J˜šÏnœžœ6žœ+˜J˜—šŸœžœKžœ˜J˜—š Ÿ œžœ#žœžœžœ˜nJ™CJ™—šŸ œžœ#žœžœ1˜oJšœ!™!J™—šŸœžœžœ˜AJ™/J™—šŸœžœ7žœ"˜lJ™)J™—šŸœžœBžœ˜lJ™)J™—šŸ œž œ!˜9Jšžœ˜$J™—šŸ œž œ(˜@Jšžœ˜$J˜—šŸ œžœ žœžœ žœžœ žœ žœ ˜vJšœ`™`J™—šÏb œžœažœ1˜ªJšœ7™7J™—š Ðbnœžœ8žœžœžœžœ*˜¬Jšœ1™1J™—š Ÿœžœžœžœžœ ˜9Jšœ žœ8žœžœ ˜mJšœ™—J˜JšŸœžœ%˜1J˜JšŸœžœ žœn˜žJ˜JšŸœžœMžœ˜vJ˜JšŸ œžœhžœ˜”J˜š Ÿ œžœ3žœ žœžœ ˜|Jšœ6™6J™—Jšžœ˜J˜J˜—…— i