DIRECTORY CD, CDCells, PW, PWRoute, Rope, RTBasic; PWRouteTestB: CEDAR PROGRAM IMPORTS CD, CDCells, PW, PWRoute, Rope, RTBasic = BEGIN TestIFUA: PW.GeneratorProc = BEGIN routerParams: PWRoute.RouterParams _ NEW[PWRoute.RouterParamsRec _ ["metal", "metal2", design.technology.key]]; left: CD.Object _ PW.Get[design, "IFUALeft"]; right: CD.Object _ PW.Get[design, "IFUARight"]; top: CD.Object _ NIL; bottom: CD.Object _ PW.Get[design, "IFUABottom"]; test: CD.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.GeneratorProc = BEGIN routerParams: PWRoute.RouterParams _ NEW[PWRoute.RouterParamsRec _ [trunkLayer: "metal2", branchLayer: "metal", technologyKey: design.technology.key, wireWidthProc: EUWireWidth]]; left: CD.Object _ PW.Get[design, "EUALeft"]; right: CD.Object _ PW.Get[design, "EUARight"]; top: CD.Object _ PW.Get[design, "EUATop"]; bottom: CD.Object _ PW.Get[design, "EUABottom"]; test: CD.Object _ PWRoute.AbutChRouteListX[LIST[left, right], LIST[bottom], LIST[top], routerParams]; RETURN[test]; END; TestEUControl: PW.GeneratorProc = BEGIN routerParams: PWRoute.RouterParams _ NEW[PWRoute.RouterParamsRec _ [trunkLayer: "metal", branchLayer: "metal2", technologyKey: design.technology.key]]; left: CD.Object _ PW.Get[design, "EULeft"]; right: CD.Object _ PW.Get[design, "EURight"]; top: CD.Object _ PW.Get[design, "EUTop"]; bottom: CD.Object _ PW.Get[design, "EUBottom"]; test: CD.Object _ PWRoute.AbutChRouteListY[LIST[bottom, top], LIST[left], LIST[right], routerParams]; RETURN[test]; END; TestSb2SidesB: PW.GeneratorProc = BEGIN routerParams: PWRoute.RouterParams _ NEW[PWRoute.RouterParamsRec _ [trunkLayer: "metal", branchLayer: "metal2", signalSinglePinNets: TRUE]]; vertical: CD.Object _ PW.Get[design, "Vertical"]; horizontal: CD.Object _ PW.Get[design, "Horizontal"]; sb: CD.Object _ PWRoute.AbutSbRoute[NIL, vertical, horizontal, NIL, horizontal, routerParams]; row: CD.Object _ PW.AbutListX[LIST[sb, vertical]]; test: CD.Object _ CDCells.CreateEmptyCell[]; dy: INT _ RTBasic.IRSize[row].y; [] _ CDCells.IncludeOb[cell: test, ob: horizontal, trans: [[0, dy], original]]; [] _ CDCells.IncludeOb[cell: test, ob: row, trans: [[0 , 0], original]]; RTBasic.RepositionCell[test]; RETURN[test]; END; TestIFULeftColumn: PW.GeneratorProc = BEGIN routerParams: PWRoute.RouterParams _ NEW[PWRoute.RouterParamsRec _ [trunkLayer: "metal2", branchLayer: "metal", technologyKey: design.technology.key, opt: noIncompletes]]; left: CD.Object _ PW.Get[design, "IFULtColumnLeft"]; right: CD.Object _ PW.Get[design, "IFULtColumnRight"]; bottom: CD.Object _ PW.Get[design, "IFULtColumnBottom"]; test: CD.Object _ PWRoute.AbutChRouteListX[LIST[left, right], LIST[bottom], NIL, routerParams]; RETURN[test]; END; PW.RegisterGenerator[TestIFULeftColumn, "TestIFULeftColumn"]; PW.RegisterGenerator[TestEURightChannel, "TestEURightChannel"]; PW.RegisterGenerator[TestEUControl, "TestEUControl"]; PW.RegisterGenerator[TestIFUA, "TestIFUControl"]; PW.RegisterGenerator[TestSb2SidesB, "TestSb2SidesB"]; END. 6PWRouteTestB.mesa Copyright Σ 1985, 1986, 1987 by Xerox Corporation. All rights reversed. Bryan Preas December 18, 1986 3:38:15 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: CD.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šœH™HIcode™,J˜—šœ4™4J™Jšœ ™ JšœI™IJšœ™J™&J™ —J˜JšΟk œœ œ˜2J˜šΟn œœœ˜Jšœœ œ˜2šœ˜J˜——šžœœ˜Jš˜J˜Jšœ%œG˜oJ˜Jšœœ œ˜-Jšœœ œ˜/Jšœœ œ˜Jšœœ œ˜1Jš œœ8œΟc œœ ˜nJš œœ#œœœ™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˜š  œœ˜!Jš˜J˜Jšœ%œ]œ˜ŒJ˜Jšœ œ œ˜1Jšœ œ œ˜5Jšœœœœ˜^Jšœœ œ œ˜2Jšœœ$˜,Jšœœ˜ JšœO˜OJšœH˜HJ˜Jšœ˜ Jšœ˜J˜—š œœ˜%Jš˜J˜Jšœ Οb œ™Jšœ%œƒ˜«J˜Jšœœ œ ˜4Jšœœ œ!˜6Jšœœ œ"˜8Jš œœ#œœ œ˜_Jšœ˜ Jšœ˜J˜—Jšœ;˜=Jšœ=˜?Jšœ3˜5Jšœ/˜1Jšœ3˜5Jšœ˜—…— Β