CoreRouteFlatProcsImpl.mesa
Copyright Ó 1988 by Xerox Corporation. All rights reserved.
Preas, April 10, 1988 5:38:54 pm PDT
Provides acces procedures for CoreRouteFlat structures
DIRECTORY
CD, CoreRouteFlat, CoreRouteFlatProcs, SymTab;
CoreRouteFlatProcsImpl: CEDAR PROGRAM
IMPORTS SymTab
EXPORTS CoreRouteFlatProcs
~ BEGIN
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: BOOLEANFALSE] ~ {
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: BOOLEANFALSE] ~ {
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};
END.