DIRECTORY CD, CDBasics, CDCells, PW, PWRoute, Rope, RTBasic; PWRouteTestB: CEDAR PROGRAM IMPORTS CD, CDBasics, 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. 0PWRouteTestB.mesa Copyright c 1985, 1986 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šœ Οmœ7™BIcode™,J˜—šœ4™4J™Jšœ ™ JšœI™IJšœ™J™&J™ —J˜JšΟk œžœ ž œ˜