<> <> <> <> <<>> DIRECTORY CD, Rope, Route, RouteDiGraph; RoutePrivate: CEDAR DEFINITIONS = BEGIN PQPosition: TYPE = RECORD[ p: Route.Number, q: Route.Number]; PQRectRef: TYPE = REF PQRect; PQRect: TYPE = RECORD[ c1, c2: PQPosition]; PQRectList: TYPE = LIST OF PQRect; AboveOrBelow: TYPE = {above, below}; Range: TYPE = RECORD [ l, r: Route.Number]; RangeList: TYPE = LIST OF Range; RefRange: TYPE = REF Range; maxNets: NAT = 2000; ZMaxNets: TYPE = NAT[0 .. maxNets]; MaxNets: TYPE = NAT[1 .. maxNets]; NetTab: TYPE = REF NetTabRec; NetTabRec: TYPE = RECORD [ size, count: ZMaxNets, n: ARRAY MaxNets OF Net]; Net: TYPE = REF NetRec; NetRec: TYPE = RECORD[ name: Rope.ROPE _ NIL, netNum, netPart: NAT _ 1, branchWidth, trunkWidth: Route.Number _ 0, pinList: Route.PinList _ NIL, internPinList: REF ANY _ NIL, properties: Route.PropList _ NIL]; Barrier: TYPE = REF BarrierRec; BarrierRec: TYPE = RECORD[ barriers: PQRectList _ NIL, properties: Route.PropList _ NIL]; <> RoutingAreaSide: TYPE = REF RoutingAreaSideRec; RoutingAreaSides: TYPE = REF RoutingAreaSidesRec; RoutingAreaSidesRec: TYPE = ARRAY Route.Side OF RoutingAreaSide; RoutingLayerOrNone: TYPE = {trunk, branch, none}; RoutingLayerName: ARRAY RoutingLayerOrNone OF Rope.ROPE; RoutingLayer: TYPE = RoutingLayerOrNone[trunk .. branch]; RoutingAreaSideRec: TYPE = RECORD[ side: Route.SideOrNone _ none, sideFiducial: Route.Position, barrierList: Route.RoutingBarrierList _ NIL, properties: Route.PropList _ NIL]; <> RouterUsed: TYPE = {channel, switchBox, maze}; RoutingAreaParms: TYPE = REF RoutingAreaParmsRec; RoutingAreaParmsRec: TYPE = RECORD[ object: CD.Object _ NIL, cellName: Rope.ROPE _ NIL, routerUsed: RouterUsed, widestPin: Route.Number _ 0, widestTrunk: Route.Number _ 0, widestBranch: Route.Number _ 0, numTracksToUse: Route.Number _ 0]; END.