RouteUtil.mesa ///Route/RouteUtil.mesa
Bryan Preas August 13, 1985 4:20:55 pm PDT
Copyright © 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
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];
Search for property key. If found return value else return default.
PutNumberProp:
PROC [properties: Route.PropList, key:
REF
ATOM, number: Route.Number] RETURNS [Route.PropList];
Put key and number on properties.
Length:
PROC [pos1, pos2: Route.Position]
RETURNS [Route.Number];
return lenth of line segment from pos1 to pos2.
XYToPQ:
PROC [routingArea: Route.RoutingArea, pos: Route.Position]
RETURNS [pqPos: RoutePrivate.PQPosition];
convert a position from x-y to p-q space.
PQToXY:
PROC [routingArea: Route.RoutingArea, pqPos: RoutePrivate.PQPosition]
RETURNS [pos: Route.Position];
convert a position from p-q to x-y space.
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];
Create a ChipNDale pin. Calls CDPinObjects.CreatePinInstance but normalizes th rectangle first.
GetPinWidth:
PROC [routingArea: Route.RoutingArea, connections: Route.PinList, channelDirection: Route.Direction]
RETURNS [widestBranchPin, widestTrunkPin: Route.Number];
Find the widest pin in connections in channelDirection.
Include:
PROC [cell:
CD.Object←
NIL, ob:
CD.Object,
position: CD.Position←[0, 0], orientation: CD.Orientation𡤀] RETURNS [application: CD.Instance];
include an object in a cell
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];
convert a line and a width to a rectangle and an orgin
END.