DIRECTORY CD, CDCells, PW, PWRoute, Rope, RTBasic; PWRouteTestA: CEDAR PROGRAM IMPORTS CD, CDCells, PW, PWRoute, RTBasic = { TestChRouterXA: PW.GeneratorProc = { 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]}; TestChRouterYA: PW.GeneratorProc = { 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]}; TestSbRouterHA: PW.GeneratorProc = { 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 _ RTBasic.IRSize[bottom].y; dx1: INT _ 0; dx2: INT _ RTBasic.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]}; PW.RegisterGenerator[TestChRouterXA, "TestChRouterXA"]; PW.RegisterGenerator[TestChRouterYA, "TestChRouterYA"]; PW.RegisterGenerator[TestSbRouterHA, "TestSbRouterHA"]; }. RPWRouteTestA.mesa Copyright c 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 ΚΎ˜code– "Cedar" stylešœ™Kšœ Οmœ7™BKšœ4Οk™7K˜—šœ4™4Kšœ ™ Kšœ#™#Kšœ™K™&K™ —˜Kšž œžœ žœ˜2—K˜šΟn œžœžœ˜Kšžœžœ žœ˜/K˜—šΠbnœžœ˜$K˜Kšœ%žœI˜qK˜Kšœžœ žœ˜2Kšœžœ žœ ˜4Kšœžœ žœ!˜6Kš œžœ"žœžœ žœ˜^Kšžœ˜K˜—š œžœ˜$K˜Kšœ%žœ]žœžœ˜§K˜Kšœžœ žœ˜/Kšœžœ žœ˜2Kš œžœ"žœžœžœ˜UKšžœ˜—K˜K˜š œžœ˜$K˜Kšœ%žœ—žœ˜ΗK˜Kšœ žœ žœ˜0Kšœ žœO˜\Kšœžœ žœ˜1Kšœ žœ žœ˜,Kšœ žœP˜[Kšœžœ žœ˜+Kšœ žœ žœ˜2Kšœ žœP˜^Kšœžœ žœ˜4Kšœžœ1žœ˜VKšœžœ žœ žœ˜7Kšœžœ#˜+Kšœžœ˜$Kšœžœ˜ Kšœžœ˜$KšœM˜MKšœS˜SK˜Kšžœ˜K˜—Kšžœ5˜7Kšžœ5˜7Kšžœ5˜7Kšœ˜K˜—…— ‚ ’