GCGlobalRouteImpl.mesa
Copyright © 1986 by Xerox Corporation. All rights reserved.
Bryan Preas, January 15, 1987 3:12:04 pm PST
DIRECTORY
GC, GCPrivate, GCCIG, Rope, RouteDiGraph, RTStructure;
GCGlobalRouteImpl: CEDAR PROGRAM
IMPORTS GCCIG, GCPrivate, Rope, RouteDiGraph, RTStructure
EXPORTS GCPrivate = {
DoInitialGlobalRoute: PUBLIC PROC [context: GC.Context] = {
Determine strategic paths for the wiring among the cells.
EachNet: RTStructure.EachNetAction ~ {
connectionStrength: GCCIG.ConnectionStrength ←
IF Rope.Equal[net.name, "Vdd"] OR Rope.Equal[net.name, "Gnd"] THEN power
ELSE goodInternal;
nodeSetList: GCCIG.NodeSetList ← GCCIG.InsertNet[cig, net, connectionStrength];
IF GCCIG.Length[nodeSetList] > 1 THEN GCCIG.ShortestPath[cig, nodeSetList, net];
GCCIG.RemoveNodes[cig, nodeSetList];
};
cig: GCCIG.Graph;
GCPrivate.DestroyChannels[context];
GCPrivate.CreateChannels[context];
GCPrivate.AssignCoordinates[context];
IF context.topologicalOrder # NIL THEN
RouteDiGraph.DestroyGraph[NARROW[context.topologicalOrder]];
context.topologicalOrder ← GCPrivate.FindTopologicalOrder[NARROW[context.topology]];
cig ← GCCIG.Create[context];
[] ← RTStructure.EnumerateNets[context.structure, EachNet];
GCPrivate.AssignCoordinates[context];
GCCIG.Destroy[cig];
};
}.