DIRECTORY CD, CDBasics, PW, PWRoute, Rope; PWRouteTestB: CEDAR PROGRAM IMPORTS CD, CDBasics, PW, PWRoute, Rope = BEGIN IRSize: PROC [obj: PW.Object] RETURNS [size: CD.Position] = {size _ CDBasics.SizeOfRect[CD.InterestRect[obj]]}; TestIFUA: PW.UserProc = BEGIN routerParams: PWRoute.RouterParams _ NEW[PWRoute.RouterParamsRec _ ["metal", "metal2", design.technology.key]]; left: PW.Object _ PW.Get[design, "IFUALeft"]; right: PW.Object _ PW.Get[design, "IFUARight"]; top: PW.Object _ NIL; bottom: PW.Object _ PW.Get[design, "IFUABottom"]; test: PW.Object _ PWRoute.MakeChannel[bottom, top, left, right, NIL -- rect --, routerParams, FALSE, channel]; RETURN[test]; END; EUWireWidth: PWRoute.WireWidthProc ~ { IF Rope.Equal[netName, "Vdd"] OR Rope.Equal[netName, "Gnd"] THEN wireWidth _ 736 ELSE wireWidth _ 32}; TestEURightChannel: PW.UserProc = BEGIN routerParams: PWRoute.RouterParams _ NEW[PWRoute.RouterParamsRec _ [trunkLayer: "metal2", branchLayer: "metal", technologyKey: design.technology.key, wireWidthProc: EUWireWidth]]; left: PW.Object _ PW.Get[design, "EUALeft"]; right: PW.Object _ PW.Get[design, "EUARight"]; top: PW.Object _ PW.Get[design, "EUATop"]; bottom: PW.Object _ PW.Get[design, "EUABottom"]; test: PW.Object _ PWRoute.AbutChRouteListX[LIST[left, right], LIST[bottom], LIST[top], routerParams]; RETURN[test]; END; TestEUControl: PW.UserProc = BEGIN routerParams: PWRoute.RouterParams _ NEW[PWRoute.RouterParamsRec _ [trunkLayer: "metal", branchLayer: "metal2", technologyKey: design.technology.key]]; left: PW.Object _ PW.Get[design, "EULeft"]; right: PW.Object _ PW.Get[design, "EURight"]; top: PW.Object _ PW.Get[design, "EUTop"]; bottom: PW.Object _ PW.Get[design, "EUBottom"]; test: PW.Object _ PWRoute.AbutChRouteListY[LIST[bottom, top], LIST[left], LIST[right], 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; TestIFULeftColumn: PW.UserProc = BEGIN routerParams: PWRoute.RouterParams _ NEW[PWRoute.RouterParamsRec _ [trunkLayer: "metal2", branchLayer: "metal", technologyKey: design.technology.key, opt: noIncompletes]]; left: PW.Object _ PW.Get[design, "IFULtColumnLeft"]; right: PW.Object _ PW.Get[design, "IFULtColumnRight"]; bottom: PW.Object _ PW.Get[design, "IFULtColumnBottom"]; test: PW.Object _ PWRoute.AbutChRouteListX[LIST[left, right], LIST[bottom], NIL, routerParams]; RETURN[test]; END; PW.Register[TestIFULeftColumn, "TestIFULeftColumn"]; PW.Register[TestEURightChannel, "TestEURightChannel"]; PW.Register[TestEUControl, "TestEUControl"]; PW.Register[TestIFUA, "TestIFUControl"]; PW.Register[TestSb2SidesB, "TestSb2SidesB"]; END. ,PWRouteTestB.mesa Copyright c 1985, 1986 by Xerox Corporation. All rights reversed. Bryan Preas March 26, 1986 6:06:29 pm PST Use with the file PWRouteTestB.dale to test routing: CDCmosB PWRoute.load cdread PWRouteTest -- NOTE: PWRouteTest.dale must be in the /// directory run PWRouteTest middle click P in the ChipNDale viewer select the appropriate generator test: PW.Object _ PWRoute.AbutChRouteListY[LIST[bottom, top], LIST[left], LIST[right], routerParams]; use design RightChannel.dale use design EUControl.dale use design IFULeftColumn.dale Κ;˜– "Cedar" stylešœ™Jšœ Οmœ7™BIcode™)J˜—šœ4™4J™Jšœ ™ JšœI™IJšœ™J™&J™ —J˜šΟk œ˜ Jšžœ žœ˜ —J˜šΟn œžœžœ˜Jšžœžœ žœ˜*šžœ˜J˜—š Ÿœžœžœžœžœ ˜;Jšœ3˜3J˜—šŸœžœ ˜Jšž˜J˜Jšœ%žœG˜oJ˜Jšœžœ žœ˜-Jšœžœ žœ˜/Jšœžœ žœ˜Jšœžœ žœ˜1Jš œžœ8žœΟc œžœ ˜nJšœe™eJšžœ˜ Jšžœ˜J˜—šŸ œ˜&Kšžœžœžœ˜PKšžœ˜K˜—šΠbnœžœ ˜!Jšž˜J˜Jšœ™Jšœ%žœ‹˜³J˜Jšœžœ žœ˜,Jšœžœ žœ˜.Jšœžœ žœ˜*Jšœžœ žœ˜0Jš œžœ#žœžœ žœ˜eJšžœ˜ Jšžœ˜J˜—š‘ œžœ ˜Jšž˜J˜Jšœ™Jšœ%žœo˜—J˜Jšœžœ žœ˜+Jšœžœ žœ˜-Jšœžœ žœ˜)Jšœžœ žœ˜/Jš œžœ#žœžœžœ˜eJšžœ˜ Jšžœ˜—J˜šΟb œžœ ˜Jšž˜J˜Jšœ%žœd˜ŒJ˜Jšœ žœ žœ˜1Jšœ žœ žœ˜5JšœžœX˜^Jšœžœ žœ žœ˜2Jšœžœ žœ˜'Jšœžœ˜Jšœžœ*˜1Jšœžœ#˜*J˜Jšžœ˜ Jšžœ˜J˜—š‘œžœ ˜ Jšž˜J˜Jšœ ‘ œ™Jšœ%žœƒ˜«J˜Jšœžœ žœ ˜4Jšœžœ žœ!˜6Jšœžœ žœ"˜8Jš œžœ#žœžœ žœ˜_Jšžœ˜ Jšžœ˜J˜—Jšžœ2˜4Jšžœ4˜6Jšžœ*˜,Jšžœ&˜(Jšžœ*˜,Jšžœ˜——…— χ