<> <> <> <> <> <> DIRECTORY CD, CDCells, CDDirectory, CDProperties, CDRects, CMos, Core, CoreOps, PW, Onion, PWCore, RefTab, Rope, SymTab, TerminalIO; OnionTest: CEDAR PROGRAM IMPORTS CDCells, CDDirectory, CDProperties, CDRects, CMos, CoreOps, Onion, PW, PWCore, RefTab = BEGIN Wire: TYPE = Core.Wire; net1: Wire _ CoreOps.CreateWire[name: "net1"]; net2: Wire _ CoreOps.CreateWire[name: "net2"]; net3: Wire _ CoreOps.CreateWire[name: "net3"]; net4: Wire _ CoreOps.CreateWire[name: "net4"]; net5: Wire _ CoreOps.CreateWire[name: "net5"]; Inner: PROC RETURNS [inner: CD.Object] = { inner _ CDCells.CreateEmptyCell[]; CDProperties.PutPropOnObject[inner, PWCore.netsProp, RefTab.Create[]]; [] _ PW.IncludeInCell[inner, CDRects.CreateRect[[80, 6], CMos.met], [0, 0]]; [] _ PW.IncludeInCell[inner, CDRects.CreateRect[[80, 6], CMos.met], [0, 74]]; [] _ PW.IncludeInCell[inner, CDRects.CreateRect[[6, 80], CMos.met], [0, 0]]; [] _ PW.IncludeInCell[inner, CDRects.CreateRect[[6, 80], CMos.met], [74, 0]]; [] _ Onion.IncludePin[inner, net1, CMos.pol, [4, 20], [0, 30]]; [] _ Onion.IncludePin[inner, net1, CMos.met, [2, 6], [50, 74]]; [] _ Onion.IncludePin[inner, net1, CMos.met2, [8, 8], [72, 40]]; [] _ Onion.IncludePin[inner, net2, CMos.pol, [6, 6], [0, 10]]; [] _ Onion.IncludePin[inner, net2, CMos.met2, [22, 4], [4, 76]]; [] _ Onion.IncludePin[inner, net3, CMos.met, [8, 6], [72, 10]]; [] _ Onion.IncludePin[inner, net4, CMos.met, [6, 6], [74, 30]]; [] _ CDCells.RepositionCell[inner, NIL]; }; Outer: PROC RETURNS [outer: CD.Object] = { outer _ CDCells.CreateEmptyCell[]; CDProperties.PutPropOnObject[outer, PWCore.netsProp, RefTab.Create[]]; [] _ PW.IncludeInCell[outer, CDRects.CreateRect[[300, 8], CMos.pol], [0, 0]]; [] _ PW.IncludeInCell[outer, CDRects.CreateRect[[300, 8], CMos.pol], [0, 392]]; [] _ PW.IncludeInCell[outer, CDRects.CreateRect[[8, 400], CMos.pol], [0, 0]]; [] _ PW.IncludeInCell[outer, CDRects.CreateRect[[8, 400], CMos.pol], [292, 0]]; [] _ Onion.IncludePin[outer, net1, CMos.met, [6, 20], [0, 80]]; [] _ Onion.IncludePin[outer, net1, CMos.met, [2, 6], [200, 0]]; [] _ Onion.IncludePin[outer, net2, CMos.met, [38, 6], [70, 0]]; [] _ Onion.IncludePin[outer, net2, CMos.met, [4, 8], [296, 60]]; [] _ Onion.IncludePin[outer, net2, CMos.met, [6, 2], [60, 398]]; [] _ Onion.IncludePin[outer, net3, CMos.met, [6, 4], [294, 170]]; [] _ Onion.IncludePin[outer, net5, CMos.met, [6, 10], [140, 0]]; [] _ CDCells.RepositionCell[outer, NIL]; }; RingWidthSpecial: Onion.RingWidthProc = { ringWidth _ IF netWire=net2 THEN 22 ELSE 8; }; MyProc: PW.UserProc = BEGIN inner, outer, result: CD.Object; myParameters: Onion.LayersParameters _ Onion.defaultLayersParameters; inner _ Inner[]; outer _ Outer[]; <> <> myParameters.wireExtendProc _ Onion.WireExtendPolToMetForPads; myParameters.ringWidth _ RingWidthSpecial; [] _ CDDirectory.Include[design, inner, "inner"]; [] _ CDDirectory.Include[design, outer, "outer"]; result _ Onion.LRSRoute[design, Onion.MakeInner[design, inner], outer, [100, 120], myParameters].cell; <> RETURN[result]; END; PW.Register[MyProc, "OnionTest"]; END. <<>>