DIRECTORY Cabbage, CD, Connections, PW, PWPins, Rope; CabbageTest: CEDAR PROGRAM IMPORTS Cabbage, Connections, PW, PWPins = BEGIN TestBasicCabbage: PW.GeneratorProc = BEGIN routerParams: Cabbage.PadRingParams _ NEW[Cabbage.PadRingParamsRec _ [horizLayer: "metal2", vertLayer: "metal", technologyKey: design.technology.key, outerBTChanWidth: 24, powerBTCellWidth: 20, outerLRChanWidth: 30, powerLRCellWidth: 22]]; left: CD.Object _ PW.Get[design, "BasicLeft"]; right: CD.Object _ PW.Get[design, "BasicRight"]; top: CD.Object _ PW.Get[design, "BasicTop"]; bottom: CD.Object _ PW.Get[design, "BasicBottom"]; inner: CD.Object _ PW.Get[design, "BasicInner"]; innerPos: CD.Position _ Cabbage.Center[inner, NIL, bottom, NIL, right, NIL, top, NIL, left, routerParams]; connections: Connections.Table _ GetConnections[inner, bottom, right, top, left]; test: CD.Object _ Cabbage.PadRoute[inner, NIL, bottom, NIL, right, NIL, top, NIL, left, innerPos, connections, routerParams]; RETURN[test]; END; TestPadLimited: PW.GeneratorProc = BEGIN routerParams: Cabbage.PadRingParams _ NEW[Cabbage.PadRingParamsRec _ [horizLayer: "metal2", vertLayer: "metal", technologyKey: design.technology.key, outerBTChanWidth: 24, powerBTCellWidth: 60, outerLRChanWidth: 32, powerLRCellWidth: 80]]; left: CD.Object _ PW.Get[design, "PinLimitedLeft"]; right: CD.Object _ PW.Get[design, "PinLimitedRight"]; top: CD.Object _ PW.Get[design, "PinLimitedTop"]; bottom: CD.Object _ PW.Get[design, "PinLimitedBottom"]; inner: CD.Object _ PW.Get[design, "PinLimitedInner"]; innerPos: CD.Position _ Cabbage.Center[inner, NIL, bottom, NIL, right, NIL, top, NIL, left, routerParams]; connections: Connections.Table _ GetConnections[inner, bottom, right, top, left]; test: CD.Object _ Cabbage.PadLimitedRoute[inner, NIL, bottom, NIL, right, NIL, top, NIL, left, innerPos, connections, routerParams]; RETURN[test]; END; TestPowerPL: PW.GeneratorProc = BEGIN routerParams: Cabbage.PadRingParams _ NEW[Cabbage.PadRingParamsRec _ [horizLayer: "metal2", vertLayer: "metal", technologyKey: design.technology.key, outerBTChanWidth: 32, powerBTCellWidth: 75, outerLRChanWidth: 32, powerLRCellWidth: 60]]; left: CD.Object _ PW.Get[design, "PowerPLLeft"]; right: CD.Object _ PW.Get[design, "PowerPLRight"]; top: CD.Object _ PW.Get[design, "PowerPLTop"]; bottom: CD.Object _ PW.Get[design, "PowerPLBottom"]; inner: CD.Object _ PW.Get[design, "PowerPLInner"]; innerPos: CD.Position _ Cabbage.Center[inner, NIL, bottom, NIL, right, NIL, top, NIL, left, routerParams]; connections: Connections.Table _ GetConnections[inner, bottom, right, top, left]; test: CD.Object _ Cabbage.PadLimitedRoute[inner, NIL, bottom, NIL, right, NIL, top, NIL, left, innerPos, connections, routerParams]; RETURN[test]; END; GetConnections: PROC [inner, bottom, right, top, left: CD.Object] RETURNS [connections: Connections.Table] ~ { UseAll: Connections.PinFilterProc ~ {keepIt _ TRUE}; UseTop: Connections.PinFilterProc ~ {keepIt _ PWPins.GetSide[obj, inst].side=top}; UseLeft: Connections.PinFilterProc ~ {keepIt _ PWPins.GetSide[obj, inst].side=left}; UseBottom: Connections.PinFilterProc ~ {keepIt _ PWPins.GetSide[obj, inst].side=bottom}; UseRight: Connections.PinFilterProc ~ {keepIt _ PWPins.GetSide[obj, inst].side=right}; connections _ Connections.CreateForRopes[]; Connections.InsertPins[connections, inner, UseAll]; Connections.InsertPins[connections, bottom, UseTop]; Connections.InsertPins[connections, right, UseLeft]; Connections.InsertPins[connections, top, UseBottom]; Connections.InsertPins[connections, left, UseRight]; }; PW.RegisterGenerator[TestBasicCabbage, "TestBasicCabbage"]; PW.RegisterGenerator[TestPadLimited, "TestPadLimited"]; PW.RegisterGenerator[TestPowerPL, "TestPowerPL"]; END. τCabbageTest.mesa Copyright Σ 1986, 1987 by Xerox Corporation. All rights reversed. Bryan Preas May 22, 1986 12:25:02 pm PDT Bertrand Serlet April 27, 1987 0:47:15 am PDT Use with the file CabbageTest.dale to test routing: CabbageTest.cm ΚŠ˜– "Cedar" stylešœ™JšœB™BIcodešœ%Οk™(Kšœ-™-J˜—šœ3™3J™—J˜š œ˜ Jšœ œœ˜+—J˜šΟn œœœ˜Jšœœ œ˜2J˜—šΠbnœœ˜$Jš˜Jšœ&œΖ˜οJ˜Jšœœ œ˜.Jšœœ œ˜0Jšœœ œ˜,Jšœœ œ˜2Jšœœ œ˜0Jš œ œ"œ œ œœ˜jJšœQ˜QJš œœ"œ œ œœ-˜}Jšœ˜ Jšœ˜J˜—šžœœ˜"Jš˜Jšœ&œΖ˜οJ˜Jšœœ œ˜3Jšœœ œ ˜5Jšœœ œ˜1Jšœœ œ!˜7Jšœœ œ ˜5Jš œ œ"œ œ œœ˜jJšœQ˜QJš œœ)œ œ œœ-˜„Jšœ˜ Jšœ˜J˜—šž œœ˜Jš˜Jšœ&œΖ˜οJ˜Jšœœ œ˜0Jšœœ œ˜2Jšœœ œ˜.Jšœœ œ˜4Jšœœ œ˜2Jš œ œ"œ œ œœ˜jJšœQ˜QJš œœ)œ œ œœ-˜„Jšœ˜ Jšœ˜J˜—šžœœ#œ œ%˜nKšžœ(œ˜4KšžœL˜RKšžœM˜TKšž œO˜XKšžœN˜VK˜Kšœ+˜+Kšœ3˜3Kšœ4˜4Kšœ4˜4Kšœ4˜4Kšœ4˜4K˜—J˜Jšœ9˜;Jšœ5˜7Jšœ/˜1Jšœ˜—…—ͺ(