RoutePrivate.mesa
Copyright Ó 1985, 1987 by Xerox Corporation. All rights reserved.
by Bryan Preas, July 10, 1985 11:48:30 am PDT
last edited by Bryan Preas, July 28, 1987 4:03:12 pm PDT
Christian Le Cocq December 7, 1987 3:37:57 pm PST
DIRECTORY CD, DABasics, RefTab, Rope, Route, RTBasic, SymTab;
RoutePrivate: CEDAR DEFINITIONS = BEGIN
RoutingArea: TYPE = REF RoutingAreaRec;
RoutingAreaRec: TYPE = RECORD [
name: Rope.ROPENIL,
ruleParameters: Route.DesignRulesParameters ← NIL,
rules: Route.DesignRules ← NIL,
routingSides: RoutingAreaSides ← NIL,
nets: NetTab ← NIL,
parms: RoutingAreaParms ← NIL,
channelData: REF ANYNIL,
privateData: REF ANYNIL];
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.ROPENIL,
num: NAT ← 1,
branchWidth, trunkWidth: NAT ← 0,
pinList: Route.PinList ← NIL,
internPinList: REF ANYNIL,
netData: REF ANYNIL,
mayExit: BOOLEANTRUE];
Barrier: TYPE = REF BarrierRec;
BarrierRec: TYPE = RECORD[
barriers: RTBasic.PQRectList ← NIL];
A RoutingAreaSide describes one of the four sides of a RoutingArea.
RoutingAreaSide: TYPE = REF RoutingAreaSideRec;
RoutingAreaSides: TYPE = REF RoutingAreaSidesRec;
RoutingAreaSidesRec: TYPE = ARRAY DABasics.Side OF RoutingAreaSide;
RoutingLayerOrNone: TYPE = {trunk, branch, none};
RoutingLayer: TYPE = RoutingLayerOrNone[trunk .. branch];
RoutingAreaSideRec: TYPE = RECORD[
side: DABasics.SideOrNone ← none,
barrierList: RoutingBarrierList ← NIL];
A RoutingBarrier describes one of the routing layers adjacent to the associated side. The barrer extends from the routing area side to the fartherest extent of the barrier rectangle.
RoutingBarrier: TYPE = REF RoutingBarrierRec;
RoutingBarrierList: TYPE = LIST OF RoutingBarrier;
RoutingBarrierRec: TYPE = RECORD[
layer: CD.Layer ← CD.undefLayer,
barrier: LIST OF DABasics.Rect ← NIL];
Routing area parameters
RouterUsed: TYPE = {channel, switchBox, maze};
RoutingAreaParms: TYPE = REF RoutingAreaParmsRec;
RoutingAreaParmsRec: TYPE = RECORD[
routerUsed: RouterUsed,
routingRect: DABasics.Rect ← [0, 0, 1, 1],
widestPin: NAT ← 0,
widestTrunk: NAT ← 0,
widestBranch: NAT ← 0,
numTracksToUse: NAT ← 0,
lambda: DABasics.Number ← 0,
metalLayer: CD.Layer ← CD.undefLayer,
metal2Layer: CD.Layer ← CD.undefLayer,
polyLayer: CD.Layer ← CD.undefLayer,
viaTable: RefTab.Ref ← NIL,  -- hash table for testing contact definitions
entityTable: SymTab.Ref ← NIL  -- hash table to make routing object
];
END.