<> <> <> <<>> <> <<>> DIRECTORY CD, CDIO, Core, GC, IPMainViewer, PW, PWCore, Rope, RTCoreUtil, RTStructure, RTTestUtil; GCTestTiny: CEDAR PROGRAM IMPORTS CDIO, GC, PW, PWCore, RTCoreUtil, RTTestUtil SHARES GC = BEGIN PinFilter: RTStructure.CorePinFilterProc ~ { <> rules: GC.DesignRules _ NARROW[userData]; SELECT side FROM bottom, top => keepIt _ rules.horizRules.branchLayer = layer; left, right => keepIt _ rules.vertRules.branchLayer = layer; ENDCASE => keepIt _ FALSE; }; libName: Rope.ROPE _"SCLibCMOSB.dale"; hMaterial: Rope.ROPE _ "metal"; vMaterial: Rope.ROPE _ "metal2"; cellType: Core.CellType _ RTTestUtil.CreateCore[libName]; technologyKey: ATOM _ $cmosB; -- $cmosA or $cmosB name: Rope.ROPE _ "GCTestTiny"; result: GC.Result; context: GC.Context; rules: GC.DesignRules _ GC.CreateDesignRules[technologyKey, hMaterial, vMaterial]; structure: RTStructure.Structure _ GC.CreateStructure[cellType, RTCoreUtil.defaultFlatten, PinFilter, rules, PWCore.extractMode.decoration, NIL]; GC.InitialPlace[structure, CDIO.MakeName[name, "init", CDIO.GetWorkingDirectory[]]]; context _ GC.CreateContext[name, structure, rules]; -- IPMainViewer.BuildViewer[name]; -- IPMainViewer.SetTopTo[NARROW[context.topology], structure.name, FALSE]; GC.DoInitialGlobalRoute[context]; result _ GC.DoDetailRoute[context]; <> [] _ PW.Draw[result.object]; END.