DIRECTORY Basics, CD, List, 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: CD.Rect, lev: CD.Layer_CD.undefLayer] RETURNS [cdPin: CD.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: CD.Object_NIL, ob: CD.Object, position: CD.Position_[0, 0], orientation: CD.Orientation_0] RETURNS [application: CD.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]; GetVia: PROC [size: Route.Position, layer1, layer2: Route.Layer, cdLambda: Route.Number] RETURNS [cell: Route.Object]; StitchVias: PROC [contact: Route.Object, size: Route.Position, layer1, layer2: Route.Layer, cdLambda: Route.Number] RETURNS [obj: Route.Object]; LineToRect: PROC [pos1, pos2: Route.Position, width: Route.Number] RETURNS [position: CD.Position, size: CD.Position]; END. RouteUtil.mesa ///Route/RouteUtil.mesa Bryan Preas August 13, 1985 4:20:55 pm PDT Copyright c 1985 by Xerox Corporation. All rights reserved. by Bryan Preas July 10, 1985 6:57:00 pm PDT last edited by Bryan Preas July 10, 1985 6:57:07 pm PDT 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 Κ«˜šœ(™(Icode™*—˜Jšœ Οmœ1™