<> <> <> <> <> DIRECTORY Basics, CD, DABasics, Real, RefTab, Rope, Route, RoutePrivate, RTBasic; RouteUtil: CEDAR DEFINITIONS IMPORTS Real = BEGIN LayerToRoutingLayer: PROC [rules: Route.DesignRules, layer: CD.Layer] RETURNS [routingLayer: RoutePrivate.RoutingLayerOrNone] ~ INLINE { RETURN[SELECT layer FROM rules.trunkLayer => trunk, rules.branchLayer => branch, ENDCASE => none]; }; RoutingLayerToLayer: PROC [rules: Route.DesignRules, routingLayer: RoutePrivate.RoutingLayer] RETURNS [layer: CD.Layer] ~ INLINE { RETURN[SELECT routingLayer FROM trunk => rules.trunkLayer, branch => rules.branchLayer, ENDCASE => CD.undefLayer]; }; RoutingLayerName: ARRAY RoutePrivate.RoutingLayerOrNone OF Rope.ROPE; Length: PROC [pos1, pos2: DABasics.Position] RETURNS [DABasics.Number] = INLINE { RETURN[Real.Round[Real.SqRt[Real.FAdd[Real.FMul[Real.FSub[pos1.x, pos2.x], Real.FSub[pos1.x, pos2.x]], Real.FMul[Real.FSub[pos1.y, pos2.y], Real.FSub[pos1.y, pos2.y]]]]]] }; <> <<>> XYToPQ: PROC [rules: Route.DesignRules, pos: DABasics.Position] RETURNS [pqPos: RTBasic.PQPos] ~ INLINE { RETURN[SELECT rules.trunkDirection FROM horizontal => [pos.x, pos.y], vertical => [pos.y, pos.x], ENDCASE => [-1, -1]]; }; <> <<>> PQToXY: PROC [rules: Route.DesignRules, pqPos: RTBasic.PQPos] RETURNS [pos: DABasics.Position] ~ INLINE { RETURN[SELECT rules.trunkDirection FROM horizontal => [pqPos.p, pqPos.q], vertical => [pqPos.q, pqPos.p], ENDCASE => [-1, -1]]; }; <> <<>> CompareResult: PROCEDURE [result1, result2: Route.ResultData] RETURNS [result: Basics.Comparison]; CreateCDPin: PROC [name: Rope.ROPE, rect: DABasics.Rect, lev: CD.Layer_CD.undefLayer] RETURNS [cdPin: CD.Instance]; <> <<>> GetWidthWithContact: PROC [rules: Route.DesignRules, branch: NAT] RETURNS [width: NAT] = INLINE {RETURN[MAX[rules.contactSize, branch]]}; <> <<>> Include: PROC [cell: CD.Object_NIL, ob: CD.Object, position: DABasics.Position_[0, 0], orientation: CD.Orientation_original] RETURNS [application: CD.Instance]; <> GetVia: PROC [size: DABasics.Position, layer1, layer2: CD.Layer, cdLambda: DABasics.Number] RETURNS [cell: CD.Object]; StitchVias: PROC [size: DABasics.Position, layer1, layer2: CD.Layer, cdLambda: DABasics.Number, viaTable: RefTab.Ref] RETURNS [obj: CD.Object]; LineToRect: PROC [pos1, pos2: DABasics.Position, width: DABasics.Number] RETURNS [position: DABasics.Position, size: DABasics.Position]; <> <<>> END.