CoreRouteFlatProcsImpl.mesa
Copyright Ó 1988 by Xerox Corporation. All rights reserved.
Preas, April 10, 1988 5:38:54 pm PDT
DIRECTORY
CD, CoreRouteFlat, CoreRouteFlatProcs, SymTab;
Instance Manipulation
EnumerateInstances:
PUBLIC PROC [structure: CoreRouteFlat.Structure, action: CoreRouteFlatProcs.EachInstanceAction]
RETURNS [quit:
BOOLEAN ← FALSE] ~ {
enumerates instances in flat structure in unspecified order
instances inserted/deleted during enumeration may or may not be seen
applies action to each object until action returns TRUE or no more instances
returns TRUE if some action returns TRUE
FOR insts:
LIST
OF CoreRouteFlat.Instance ← structure.instances, insts.rest
WHILE insts#
NIL
AND ~quit
DO
quit ← action[insts.first];
ENDLOOP};
EnumerateNetONodes:
PUBLIC PROC [instance: CoreRouteFlat.Instance, action: CoreRouteFlatProcs.EachNetONodeAction]
RETURNS [quit:
BOOLEAN ← FALSE] ~ {
enumerates bound wires on instance in unspecified order
applies action to each bound wires until action returns TRUE or no more bound wires
returns TRUE if some action returns TRUE
FOR netONodes:
LIST
OF CoreRouteFlat.NetONode ← instance.netONodes, netONodes.rest
WHILE netONodes#
NIL
AND ~quit
DO
quit ← action[instance, netONodes.first];
ENDLOOP};
EnumeratePins:
PUBLIC PROC [oNode: CoreRouteFlat.ONode, action: CoreRouteFlatProcs.EachPinAction]
RETURNS [quit:
BOOLEAN ← FALSE] ~ {
enumerates physical pins on ObjectPin in unspecified order
pins inserted/deleted during enumeration may or may not be seen
applies action to each segment until action returns TRUE or no more object pins
returns TRUE if some action returns TRUE
FOR pins:
LIST
OF CoreRouteFlat.Pin ← oNode.pins, pins.rest
WHILE pins#
NIL
AND ~quit
DO
quit ← action[oNode, pins.first];
ENDLOOP};
PosOfONode:
PUBLIC PROC [instance: CoreRouteFlat.Instance, pin: CoreRouteFlat.Pin]
RETURNS [position:
CD.Position] ~ {
returns position of pin with respect to instance
};
Net Manipulation
EnumerateNets:
PUBLIC
PROC [structure: CoreRouteFlat.Structure, action: CoreRouteFlatProcs.EachNetAction]
RETURNS [quit:
BOOLEAN ←
FALSE] ~ {
enumerates nets currently in symbol table in unspecified order
nets inserted/deleted during enumeration may or may not be seen
applies action to each net until action returns TRUE or no more nets
returns TRUE if some action returns TRUE
EachNet: SymTab.EachPairAction ~ {
PROC [key: Key, val: Val] RETURNS [quit: BOOL ← FALSE];
quit ← action[NARROW[val]]};
quit ← SymTab.Pairs[structure.nets, EachNet]};
EnumerateInstONodes:
PUBLIC
PROC [net: CoreRouteFlat.Net, action: CoreRouteFlatProcs.EachInstONodeAction]
RETURNS [quit:
BOOLEAN ←
FALSE] ~ {
enumerates pins on net in unspecified order
pins inserted/deleted during enumeration may or may not be seen
applies action to each pin until action returns TRUE or no more pins
returns TRUE if some action returns TRUE
FOR instONodes:
LIST
OF CoreRouteFlat.InstONode ← net.instONodes, instONodes.rest
WHILE instONodes#
NIL
AND ~quit
DO
quit ← action[net, instONodes.first];
ENDLOOP};