DIRECTORY CD, CDCells, CDIO, CDOps, Convert, DABasics, Rope, Route, RoutePrivate; RouteTest5: CEDAR PROGRAM IMPORTS CD, CDCells, CDIO, CDOps, Convert, Rope, Route = BEGIN EnumerateChannelNets: Route.EnumerateChannelNetsProc ~ { nets: LIST OF NetDef _ NARROW[channelData]; UNTIL nets = NIL DO net: NetDef _ nets.first; eachNet[net.name, EnumerateChannelPins, net.exitLeftOrBottom, net.exitRightOrTop, net.mayExit, net.trunkSize, NIL, net.netData]; nets _ nets.rest; ENDLOOP}; EnumerateChannelPins: Route.EnumerateChannelPinsProc ~ { pins: LIST OF Route.Pin _ NARROW[netData]; UNTIL pins = NIL DO pin: Route.Pin _ pins.first; bottomOrLeft: BOOL _ pin.side = bottom; eachPin[bottomOrLeft, pin.min, pin.max, pin.depth, pin.layer]; pins _ pins.rest; ENDLOOP}; BrokenNet: Route.BrokenNetProc ~ { newLabel _ Rope.Cat[sourceNet, "-", Convert.RopeFromInt[regionNumber], "/", Convert.RopeFromInt[numberOfRegions]]}; NetDef: TYPE = REF NetDefRec; NetDefRec: TYPE = RECORD [ name: Rope.ROPE, exitLeftOrBottom, exitRightOrTop: BOOL _ FALSE, mayExit: BOOL _ TRUE, trunkSize: CD.Number _ 0, netData: LIST OF Route.Pin _ NIL]; name: Rope.ROPE _ "RouteTest5"; technology: CD.Technology _ CD.FetchTechnology[$cmosB]; metal: CD.Layer _ CD.FetchLayer[technology, $met]; metal2: CD.Layer _ CD.FetchLayer[technology, $met2]; rules: Route.DesignRulesParameters _ Route.DefaultDesignRulesParameters[technology, metal2, metal, horizontal]; a1: Route.Pin _ NEW[Route.PinRec _ [40, 72, 0, metal, bottom]]; a2: Route.Pin _ NEW[Route.PinRec _ [120, 132, 0, metal, top]]; a3: Route.Pin _ NEW[Route.PinRec _ [176, 208, 0, metal, top]]; a: NetDef _ NEW[NetDefRec _ ["a", TRUE, FALSE, FALSE, 0, LIST[a1, a2, a3]]]; b1: Route.Pin _ NEW[Route.PinRec _ [232, 264, 0, metal, bottom]]; b2: Route.Pin _ NEW[Route.PinRec _ [460, 492, 0, metal, top]]; b3: Route.Pin _ NEW[Route.PinRec _ [286, 326, 0, metal, top]]; b: NetDef _ NEW[NetDefRec _ ["b", FALSE, FALSE, TRUE, 0, LIST[b1, b2, b3]]]; nets: LIST OF NetDef _ LIST[a, b]; object: CD.Object _ Route.Channel[EnumerateChannelNets, 0, 540, rules, name, BrokenNet, NIL, nets].object; design: CD.Design _ CDOps.CreateDesign[technology]; [ ] _ CDCells.IncludeOb[design: design, ob: object]; [ ] _ CDIO.WriteDesign[design, name]; END. ¦RouteTest5.mesa Copyright Ó 1985, 1987 by Xerox Corporation. All rights reserved. Last Edited by: Preas, November 16, 1987 6:20:57 pm PST Christian Le Cocq December 2, 1987 12:47:10 pm PST PROC [channelData: REF, eachNet: EachChannelNetProc]; PROC [channelData, netData: REF, eachPin: EachChannelPinProc]; [channelData, netData: REF, sourceNet: Label, regionNumber, numberOfRegions: NAT] RETURNS [newLabel: Label] �ÊʘJšœ™JšœB™BšœÏk ™7Icode™2—J™š� œ˜ Jš�œ �œ6˜G—J˜šÐbl œ�œ�˜J˜Jš�œ�œ �œ˜6Jšœ�˜J˜—šÏnœ$˜8Jš�œ�œ™5Jšœ�œ�œ �œ˜+š�œ�œ�˜Jšœ˜Kšœn�œ˜€Kšœ˜Kš�œ˜ K˜——šŸœ$˜8Jšœ>™>Jšœ�œ�œ �œ ˜*š�œ�œ�˜Jšœ˜Kšœ�œ˜'Kšœ>˜>Kšœ˜Kš�œ˜ K˜——šŸ œ˜"Kšœk™kKšœs˜sK˜—Jšœ�œ�œ ˜šœ �œ�œ˜Jšœ �œ˜Jšœ"�œ�œ˜/Jšœ �œ�œ˜Jšœ �œ ˜Jšœ �œ�œ �œ˜"—J˜Jšœ˜Jšœ �œ�œ˜7Jšœ�œ �œ˜2Jšœ�œ �œ˜4Jšœo˜oJšœ�œ,˜?Jšœ�œ+˜>Jšœ�œ+˜>Jš œ �œ�œ�œ�œ�œ˜LJšœ�œ.˜AJšœ�œ+˜>Jšœ�œ+˜>Jš œ �œ�œ�œ�œ�œ˜LJšœ"˜"Jšœ�œCŸ œ˜jJšœ�œ)˜3Jšœ4˜4J˜šœ�œ˜'J˜—Jš�œ˜J˜J˜—…—Ò B