DIRECTORY CD, CDCells, CDIO, CDOps, DABasics, Rope, Route, RoutePrivate; RouteTest3: CEDAR PROGRAM IMPORTS CD, CDCells, CDIO, CDOps, 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 = left; eachPin[bottomOrLeft, 8*pin.min, 8*pin.max, 8*pin.depth, pin.layer]; pins _ pins.rest; ENDLOOP}; 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 _ "RouteTest3"; 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, vertical]; a1: Route.Pin _ NEW[Route.PinRec _ [40, 80, 0, metal2, left]]; a2: Route.Pin _ NEW[Route.PinRec _ [120, 128, 0, metal2, right]]; a3: Route.Pin _ NEW[Route.PinRec _ [200, 208, 0, metal2, right]]; a: NetDef _ NEW[NetDefRec _ ["a", TRUE, TRUE, TRUE, 0, LIST[a1, a2, a3]]]; b1: Route.Pin _ NEW[Route.PinRec _ [120, 128, 0, metal2, left]]; b2: Route.Pin _ NEW[Route.PinRec _ [40, 80, 0, metal2, right]]; b: NetDef _ NEW[NetDefRec _ ["b", FALSE, FALSE, TRUE, 0, LIST[b1, b2]]]; nets: LIST OF NetDef _ LIST[a, b]; object: CD.Object _ Route.Channel[EnumerateChannelNets, 8*0, 8*250, rules, name, NIL, NIL, nets].object; design: CD.Design _ CDOps.CreateDesign[technology]; [ ] _ CDCells.IncludeOb[design: design, ob: object]; [ ] _ CDIO.WriteDesign[design, name]; END. 6RouteTest3.mesa Copyright Σ 1985, 1987 by Xerox Corporation. All rights reserved. Last Edited by: Preas, July 17, 1987 6:57:53 pm PDT Christian Le Cocq December 2, 1987 12:45:58 pm PST PROC [channelData: REF, eachNet: EachChannelNetProc]; PROC [channelData, netData: REF, eachPin: EachChannelPinProc]; Κ™˜Jšœ™JšœB™Bšœ0Οk™3Icode™2—J™š œ˜ Jšœ œ-˜>—J˜šΠln œœ˜J˜Jšœœ œ˜/J˜—šΟnœ$˜8Jšœœ™5Jšœœœ œ˜+šœœ˜Jšœ˜Kšœnœ˜€Kšœ˜Kšœ˜ K˜——šŸœ$˜8Jšœ>™>Jšœœœ œ ˜*šœœ˜Jšœ˜Kšœœ˜%KšœD˜DKšœ˜Kšœ˜ K˜——Jšœœœ ˜šœ œœ˜Jšœ œ˜Jšœ"œœ˜/Jšœ œœ˜Jšœ œ ˜Jšœ œœ œ˜"—J˜Jšœ˜Jšœ œœ˜7Jšœœ œ˜2Jšœœ œ˜4Jšœm˜mJšœœ+˜>Jšœœ.˜AJšœœ.˜AJš œ œœœœœ˜JJšœœ-˜@Jšœœ,˜?Jš œ œœœœœ ˜HJšœ"˜"Jšœœ^˜hJšœœ)˜3Jšœ4˜4J˜šœœ˜'J˜—Jšœ˜J˜J˜—…—ΰ ―