DIRECTORY Cabbage, CD, Connections, PW, PWPins, Rope; CabbageTest: CEDAR PROGRAM IMPORTS Cabbage, Connections, PW, PWPins = BEGIN TestBasicCabbage: PW.UserProc = BEGIN routerParams: Cabbage.PadRingParams _ NEW[Cabbage.PadRingParamsRec _ [horizLayer: "metal2", vertLayer: "metal", technologyKey: design.technology.key, wireWidthProc: NIL, outerChanWidth: 300, powerCellWidth: 500]]; left: Cabbage.Object _ PW.Get[design, "BasicLeft"]; right: Cabbage.Object _ PW.Get[design, "BasicRight"]; top: Cabbage.Object _ PW.Get[design, "BasicTop"]; bottom: Cabbage.Object _ PW.Get[design, "BasicBottom"]; inner: Cabbage.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: Cabbage.Object _ Cabbage.PadRoute[inner, NIL, bottom, NIL, right, NIL, top, NIL, left, innerPos, connections, routerParams]; RETURN[test]; END; TestPadLimited: PW.UserProc = BEGIN routerParams: Cabbage.PadRingParams _ NEW[Cabbage.PadRingParamsRec _ [horizLayer: "metal2", vertLayer: "metal", technologyKey: design.technology.key, wireWidthProc: NIL, outerChanWidth: 300, powerCellWidth: 500]]; left: Cabbage.Object _ PW.Get[design, "PinLimitedLeft"]; right: Cabbage.Object _ PW.Get[design, "PinLimitedRight"]; top: Cabbage.Object _ PW.Get[design, "PinLimitedTop"]; bottom: Cabbage.Object _ PW.Get[design, "PinLimitedBottom"]; inner: Cabbage.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: Cabbage.Object _ Cabbage.PadLimitedRoute[inner, NIL, bottom, NIL, right, NIL, top, NIL, left, innerPos, connections, routerParams]; RETURN[test]; END; TestPowerPL: PW.UserProc = BEGIN routerParams: Cabbage.PadRingParams _ NEW[Cabbage.PadRingParamsRec _ [horizLayer: "metal2", vertLayer: "metal", technologyKey: design.technology.key, wireWidthProc: NIL, outerChanWidth: 200, powerCellWidth: 500]]; left: Cabbage.Object _ PW.Get[design, "PowerPLLeft"]; right: Cabbage.Object _ PW.Get[design, "PowerPLRight"]; top: Cabbage.Object _ PW.Get[design, "PowerPLTop"]; bottom: Cabbage.Object _ PW.Get[design, "PowerPLBottom"]; inner: Cabbage.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: Cabbage.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: Cabbage.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.Register[TestBasicCabbage, "TestBasicCabbage"]; PW.Register[TestPadLimited, "TestPadLimited"]; PW.Register[TestPowerPL, "TestPowerPL"]; END. ΒCabbageTest.mesa Copyright c 1986 by Xerox Corporation. All rights reversed. Bryan Preas May 22, 1986 12:25:02 pm PDT Use with the file CabbageTest.dale to test routing: @CabbageTest.cm ΚF˜– "Cedar" stylešœ™Jšœ Οmœ1™