<> <> <> <> <> <<>> <> <<>> DIRECTORY CD, CDCells USING [CreateEmptyCell], CDPinObjects, CDRects USING [CreateRect], CMos, PW, PWBasics; PWTestA: CEDAR PROGRAM IMPORTS CDCells, CDPinObjects, CDRects, CMos, PW, PWBasics = BEGIN OPEN PW, PWBasics; CellWithFourCorners: PROC [design: CD.Design, size: CD.DesignPosition] RETURNS [cell: CD.ObPtr] = BEGIN cell _ CDCells.CreateEmptyCell[]; [] _ IncludeApplication[cell, CDRects.CreateRect[[4, size.y], CMos.pol], [0, 0]]; [] _ IncludeApplication[cell, CDRects.CreateRect[[size.x, 4], CMos.ndif], [0, size.y / 2]]; [] _ IncludeApplication[cell, CDRects.CreateRect[[4, size.y], CMos.pol], [size.x / 2, 0]]; [] _ IncludeApplication[cell, CDRects.CreateRect[[size.x, 4], CMos.ndif], [0, size.y - 4]]; [] _ IncludeApplication[cell, CDRects.CreateRect[[size.x, 4], CMos.ndif], [0, size.y - 12]]; [] _ IncludeApplication[cell, CDRects.CreateRect[[size.x, 4], CMos.ndif], [0, 8]]; [] _ IncludeApplication[cell, CDRects.CreateRect[[size.x, 4], CMos.ndif], [0, 18]]; [] _ IncludeApplication[cell, CDRects.CreateRect[[6, size.y], CMos.met], [size.x - 6, 0]]; [] _ IncludeApplication[cell, CDRects.CreateRect[[size.x, 6], CMos.met2], [0, 0]]; <> END; PutPin: PROC [cell: CD.ObPtr, name: ROPE, rect: CD.DesignRect] = BEGIN [] _ IncludeApplication[cell, CDPinObjects.CreatePinOb[[rect.x2-rect.x1, rect.y2-rect.y1]], [rect.x1, rect.y1]]; END; MyProc: UserProc = BEGIN abobj: CD.ObPtr _ CellWithFourCorners[design, [50, 120]]; ab, cd: InstName; PutPin[abobj, "LeftPin", [0, 25, 2, 27]]; PutPin[abobj, "RightPin", [48, 15, 50, 17]]; PutPin[abobj, "TopPin", [20, 118, 22, 120]]; PutPin[abobj, "BottomPin", [12, 0, 14, 2]]; RepositionCell[design, abobj]; ab _ NameFromObj[abobj]; <> <> <> <> <> <> <> <> <> <> <> <> <> cd _ Array[ab, 8, 4]; <> RETURN [cd ]; END; Register[MyProc, "PWTestA"]; END. <<>> <<>>