PWRouteTestA.mesa
Copyright © 1985, 1986 by Xerox Corporation. All rights reversed.
Last Edited by: Preas, December 18, 1986 3:51:41 pm PST
Use with the file PWRouteTestA.dale to test routing:
PWRoute.load
cdread PWRouteTestA or PWRouteTestB
run PWRouteTestA
middle click P in the ChipNDale viewer
select the appropriate generator
DIRECTORY
CD, CDBasics, CDCells, PW, PWRoute, Rope, RTBasic;
PWRouteTestA: CEDAR PROGRAM
IMPORTS CD, CDBasics, CDCells, PW, PWRoute, RTBasic =
BEGIN
ROPE: TYPE = Rope.ROPE;
IRSize: PROC [obj: PW.Object] RETURNS [size: CD.Position] =
{size ← CDBasics.SizeOfRect[CD.InterestRect[obj]]};
TestChRouterXA: PW.UserProc =
BEGIN
routerParams: PWRoute.RouterParams ← NEW[PWRoute.RouterParamsRec ← [trunkLayer: "metal2", branchLayer: "metal"]];
left: CD.Object← PW.Get[design, "LtPadRouteLeft"];
right: CD.Object← PW.Get[design, "LtPadRouteRight"];
bottom: CD.Object← PW.Get[design, "LtPadRouteBottom"];
test: CD.Object← PWRoute.AbutChRouteListX[LIST[left, right], LIST[bottom], NIL, routerParams];
RETURN[test];
END;
TestChRouterYA: PW.UserProc =
BEGIN
routerParams: PWRoute.RouterParams ← NEW[PWRoute.RouterParamsRec ← [trunkLayer: "metal", branchLayer: "metal2", signalSinglePinNets: FALSE, signalBreakAtExit: FALSE]];
top: CD.Object← PW.Get[design, "-no name@585"];
bottom: CD.Object← PW.Get[design, "-no name@573"];
test: CD.Object← PWRoute.AbutChRouteListY[LIST[bottom, top], NIL, NIL, routerParams];
RETURN[test];
END;
TestSbRouterHA: PW.UserProc =
BEGIN
routerParams: PWRoute.RouterParams ← NEW[PWRoute.RouterParamsRec ← [trunkLayer: "metal", branchLayer: "metal2", technologyKey: design.technology.key, opt: noIncompletes, signalSinglePinNets: FALSE]];
rightOrig: CD.Object← PW.Get[design, "SbRight"];
rightXfer: CD.Object← PWRoute.XferPins[design.technology.key, rightOrig, left, 50, "metal"];
right: CD.Object← PW.AbutX[rightXfer, rightOrig];
topOrig: CD.Object← PW.Get[design, "SbTop"];
topXfer: CD.Object← PWRoute.XferPins[design.technology.key, topOrig, bottom, 50, "metal2"];
top: CD.Object← PW.AbutY[topXfer, topOrig];
bottomOrig: CD.Object← PW.Get[design, "SbBottom"];
bottomXfer: CD.Object← PWRoute.XferPins[design.technology.key, bottomOrig, top, 50, "metal2"];
bottom: CD.Object← PW.AbutY[bottomOrig, bottomXfer];
sb: CD.Object← PWRoute.AbutSbRoute[bottom, right, top, NIL, horizontal, routerParams];
column: CD.Object← PW.AbutListY[LIST[bottom, sb, top]];
test: CD.Object← CDCells.CreateEmptyCell[];
dy1: INT ← IRSize[bottom].y;
dx1: INT ← 0;
dx2: INT ← IRSize[column].x;
[] ← CDCells.IncludeOb[cell: test, ob: column, trans: [[dx1 , 0], original]];
[] ← CDCells.IncludeOb[cell: test, ob: right, trans: [[dx1 + dx2, dy1], original]];
RTBasic.RepositionCell[test];
RETURN[test];
END;
PW.Register[TestChRouterXA, "TestChRouterXA"];
PW.Register[TestChRouterYA, "TestChRouterYA"];
PW.Register[TestSbRouterHA, "TestSbRouterHA"];
END.