PWRouteTestA.mesa
Copyright © 1984, 1986 by Xerox Corporation. All rights reversed.
Last Edited by: Preas, February 12, 1986 2:38:05 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, PW, PWRoute, Rope;
PWRouteTestA: CEDAR PROGRAM
IMPORTS CD, CDBasics, PW, PWRoute =
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: PW.Object ← PW.Get[design, "LtPadRouteLeft"];
right: PW.Object ← PW.Get[design, "LtPadRouteRight"];
bottom: PW.Object ← PW.Get[design, "LtPadRouteBottom"];
test: PW.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: PW.Object ← PW.Get[design, "-no name@585"];
bottom: PW.Object ← PW.Get[design, "-no name@573"];
test: PW.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: PW.Object ← PW.Get[design, "SbRight"];
rightXfer: PW.Object ← PWRoute.XferPins[design.technology.key, rightOrig, left, 50, "metal"];
right: PW.Object ← PW.AbutX[rightXfer, rightOrig];
topOrig: PW.Object ← PW.Get[design, "SbTop"];
topXfer: PW.Object ← PWRoute.XferPins[design.technology.key, topOrig, bottom, 50, "metal2"];
top: PW.Object ← PW.AbutY[topXfer, topOrig];
bottomOrig: PW.Object ← PW.Get[design, "SbBottom"];
bottomXfer: PW.Object ← PWRoute.XferPins[design.technology.key, bottomOrig, top, 50, "metal2"];
bottom: PW.Object ← PW.AbutY[bottomOrig, bottomXfer];
sb: PW.Object ← PWRoute.AbutSbRoute[bottom, right, top, NIL, horizontal, routerParams];
column: PW.Object ← PW.AbutListY[LIST[bottom, sb, top]];
test: PW.Object ← PW.CreateEmptyCell[];
dy1: INT ← IRSize[bottom].y;
dx1: INT ← 0;
dx2: INT ← IRSize[column].x;
[] ← PW.IncludeInCell[test, column, [dx1 , 0]];
[] ← PW.IncludeInCell[test, right, [dx1 + dx2, dy1]];
PW.RepositionCell[test];
RETURN[test];
END;
PW.Register[TestChRouterXA, "TestChRouterXA"];
PW.Register[TestChRouterYA, "TestChRouterYA"];
PW.Register[TestSbRouterHA, "TestSbRouterHA"];
END.