<> <> <> <> DIRECTORY CD, CDRects, CDRoutingObjects, PW, Rope; TestPW: CEDAR PROGRAM IMPORTS CD, CDRects, CDRoutingObjects, PW = BEGIN TestPWX: PW.GeneratorProc = { RETURN [PW.AbutX[PW.Get[design, "a"], PW.Get[design, "b"]]]; }; <<>> TestMapFunction: PW.GeneratorProc = { BinaryCount: PROC [x, y: INT] RETURNS [CD.Object] = { RETURN [SELECT TRUE FROM y=0 => edge, ENDCASE => contact]; }; contact: CD.Object _ PW.Get[design, "contact"]; edge: CD.Object _ PW.Get[design, "edge"]; RETURN [PW.MapFunction[BinaryCount, 0, 16, 0, 4]]; }; TestRoutingCellP: PW.GeneratorProc = { met: CD.Layer = CD.FetchLayer[design.technology, $met]; pdif: CD.Layer = CD.FetchLayer[design.technology, $wpdif]; node1: CDRoutingObjects.Node _ CDRoutingObjects.CreateNode[LIST [ [CDRects.CreateRect[[10 * ]]; node2: CDRoutingObjects.Node _ CDRoutingObjects.CreateNode[LIST [ [CDRects.CreateRect[[3 * [CDRects.CreateRect[[4 * ]]; RETURN [CDRoutingObjects.CreateRoutingObject[ir: [0, 0, 10 * }; TestRoutingCellN: PW.GeneratorProc = { met: CD.Layer = CD.FetchLayer[design.technology, $met]; ndif: CD.Layer = CD.FetchLayer[design.technology, $ndif]; node1: CDRoutingObjects.Node _ CDRoutingObjects.CreateNode[LIST [ [CDRects.CreateRect[[10 * ]]; node2: CDRoutingObjects.Node _ CDRoutingObjects.CreateNode[LIST [ [CDRects.CreateRect[[3 * [CDRects.CreateRect[[4 * ]]; RETURN [CDRoutingObjects.CreateRoutingObject[ir: [0, 0, 10 * }; TestRotated: PW.GeneratorProc = { RETURN [PW.CreateRotation[TestRoutingCellP[design, key, context, data], rotate90, "RotatedRouting", LIST [[$Foo, $Bar]]]]; }; PW.RegisterGenerator[TestPWX, "TestPWX"]; PW.RegisterGenerator[TestMapFunction, "TestMapFunction"]; PW.RegisterGenerator[TestRoutingCellP, "TestRoutingCellP"]; PW.RegisterGenerator[TestRoutingCellN, "TestRoutingCellN"]; PW.RegisterGenerator[TestRotated, "TestRotated"]; END. <<>>