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.ROPE ← NIL,
ruleParameters: Route.DesignRulesParameters ← NIL,
rules: Route.DesignRules ← NIL,
routingSides: RoutingAreaSides ← NIL,
nets: NetTab ← NIL,
parms: RoutingAreaParms ← NIL,
channelData: REF ANY ← NIL,
privateData: REF ANY ← NIL];
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,
num: NAT ← 1,
branchWidth, trunkWidth: NAT ← 0,
pinList: Route.PinList ← NIL,
internPinList: REF ANY ← NIL,
netData: REF ANY ← NIL,
mayExit: BOOLEAN ← TRUE];
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.