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
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 ANY ← NIL,
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: DABasics.Number ← 0,
pinList: PinList ← NIL,
internPinList: REF ANYNIL,
netData: REF ANYNIL,
mayExit: BOOLEANTRUE];
Pin: TYPE = REF PinRec;
PinList: TYPE = LIST OF Pin;
PinRec: TYPE = RECORD[
min, max, depth: CD.Number ← 0,
layer: CD.Layer,
side: DABasics.Side];
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: DABasics.Number ← 0,
widestTrunk: DABasics.Number ← 0,
widestBranch: DABasics.Number ← 0,
numTracksToUse: DABasics.Number ← 0,
viaTable: RefTab.Ref ← NIL,  -- hash table for testing contact definitions
entityTable: SymTab.Ref ← NIL  -- hash table to make routing object
];
END.