GCTest.mesa
Copyright © 1986 by Xerox Corporation. All rights reversed.
Bryan Preas September 11, 1986 1:29:30 pm PDT
Use with the file GCTest.dale to test routing:
@GCTest.cm
DIRECTORY
CD, CDDirectory, GC, IPMainViewer, RTStructure, PW, Rope;
GCTest: CEDAR PROGRAM
IMPORTS CDDirectory, GC, IPMainViewer, RTStructure, PW =
BEGIN
TestBasicGC: PW.UserProc =
BEGIN
hMaterial: Rope.ROPE ← "metal2";
vMaterial: Rope.ROPE ← "metal";
technologyKey: ATOM ← $cmosB;   -- $cmosA or $cmosB
result: GC.Result;
rules: GC.DesignRules ← GC.CreateDesignRules[technologyKey, hMaterial, vMaterial];
block1: CD.Object ← PW.Get[design, "Block1"];
block2: CD.Object ← PW.Get[design, "Block2"];
block3: CD.Object ← PW.Get[design, "Block3"];
pos1: CD.Position ← [0, 0];
pos2: CD.Position ← [800, 0];
pos3: CD.Position ← [0, 800];
structure: RTStructure.Structure ← GetStructure[name: "GCTest", o1: block1, o2: block2, o3: block3, p1: pos1, p2: pos2, p3: pos3];
gcContext: GC.Context ← GC.CreateContext["GCTest", structure, rules];
GC.DoInitialGlobalRoute[gcContext];
IPMainViewer.BuildViewer["GCTest"];
IPMainViewer.SetTopTo[NARROW[gcContext.topology], structure.name, FALSE];
result ← GC.DoDetailRoute[gcContext];
RETURN[result.object];
END;
GetStructure: PROC [name: Rope.ROPE, o1, o2, o3, o4, o5: CD.Object ← NIL, p1, p2, p3, p4, p5: CD.Position ← [0, 0]] RETURNS [structure: RTStructure.Structure] ~ {
UseAll: RTStructure.CDPinFilterProc ~ {keepIt ← TRUE};
structure ← RTStructure.CreateForRopes[name];
IF o1 # NIL THEN RTStructure.InsertInstance[structure, CDDirectory.Name[o1], p1, original, o1, UseAll];
IF o2 # NIL THEN RTStructure.InsertInstance[structure, CDDirectory.Name[o2], p2, original, o2, UseAll];
IF o3 # NIL THEN RTStructure.InsertInstance[structure, CDDirectory.Name[o3], p3, original, o3, UseAll];
IF o4 # NIL THEN RTStructure.InsertInstance[structure, CDDirectory.Name[o4], p4, original, o4, UseAll];
IF o5 # NIL THEN RTStructure.InsertInstance[structure, CDDirectory.Name[o5], p5, original, o5, UseAll];
};
PW.Register[TestBasicGC, "TestBasicGC"];
END.