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]]};
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;
TestSb2SidesB:
PW.UserProc =
BEGIN
routerParams: PWRoute.RouterParams ← NEW[PWRoute.RouterParamsRec ← [trunkLayer: "metal", branchLayer: "metal2", signalSinglePinNets: TRUE]];
vertical: PW.Object ← PW.Get[design, "Vertical"];
horizontal: PW.Object ← PW.Get[design, "Horizontal"];
sb: PW.Object ← PWRoute.AbutSbRoute[NIL, vertical, horizontal, NIL, horizontal, routerParams];
row: PW.Object ← PW.AbutListX[LIST[sb, vertical]];
test: PW.Object ← PW.CreateEmptyCell[];
dy: INT ← IRSize[row].y;
[] ← PW.IncludeInCell[test, horizontal, [0, dy]];
[] ← PW.IncludeInCell[test, row, [0 , 0]];
PW.RepositionCell[test];
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[TestChRouterYA, "TestChRouterYA"];
PW.Register[TestSbRouterHA, "TestSbRouterHA"];
PW.Register[TestSb2SidesB, "TestSb2SidesB"];
END.