DIRECTORY CD, CDCells, CDIO, CDOps, DABasics, Rope, Route, RoutePrivate; RouteTest6: CEDAR PROGRAM IMPORTS CD, CDCells, CDIO, CDOps, Route = BEGIN EnumerateSwitchBoxNets: Route.EnumerateSwitchBoxNetsProc ~ { nets: LIST OF NetDef _ NARROW[switchBoxData]; UNTIL nets = NIL DO net: NetDef _ nets.first; eachNet[net.name, EnumerateSwitchBoxPins, net.trunkSize, NIL, net.netData]; nets _ nets.rest; ENDLOOP}; EnumerateSwitchBoxPins: Route.EnumerateSwitchBoxPinsProc ~ { pins: LIST OF Route.Pin _ NARROW[netData]; UNTIL pins = NIL DO pin: Route.Pin _ pins.first; eachPin[pin.side, 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, trunkSize: CD.Number _ 0, netData: LIST OF Route.Pin _ NIL]; name: Rope.ROPE _ "RouteTest6"; 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, metal, metal2, horizontal]; a1: Route.Pin _ NEW[Route.PinRec _ [40, 44, 0, metal2, bottom]]; a2: Route.Pin _ NEW[Route.PinRec _ [120, 124, 0, metal2, top]]; a3: Route.Pin _ NEW[Route.PinRec _ [200, 204, 0, metal2, top]]; a: NetDef _ NEW[NetDefRec _ ["a", 0, LIST[a1, a2, a3]]]; b1: Route.Pin _ NEW[Route.PinRec _ [120, 124, 0, metal2, bottom]]; b2: Route.Pin _ NEW[Route.PinRec _ [40, 44, 0, metal2, top]]; b: NetDef _ NEW[NetDefRec _ ["b", 0, LIST[b1, b2]]]; c1: Route.Pin _ NEW[Route.PinRec _ [180, 184, 0, metal2, top]]; c2: Route.Pin _ NEW[Route.PinRec _ [40, 44, 0, metal, left]]; c: NetDef _ NEW[NetDefRec _ ["c", 0, LIST[c1, c2]]]; d1: Route.Pin _ NEW[Route.PinRec _ [160, 164, 0, metal2, bottom]]; d2: Route.Pin _ NEW[Route.PinRec _ [40, 44, 0, metal, right]]; d: NetDef _ NEW[NetDefRec _ ["d", 0, LIST[d1, d2]]]; nets: LIST OF NetDef _ LIST[a, b, c, d]; rect: DABasics.Rect _ [8*0, 8*0, 8*300, 8*100]; object: CD.Object _ Route.SwitchBox[EnumerateSwitchBoxNets, rect, rules, name, NIL, nets].object; design: CD.Design _ CDOps.CreateDesign[technology]; [ ] _ CDCells.IncludeOb[design: design, ob: object]; [ ] _ CDIO.WriteDesign[design, name]; END. RouteTest6.mesa Copyright Σ 1985, 1987, 1988 by Xerox Corporation. All rights reserved. Last Edited by: Preas, February 22, 1988 3:11:58 pm PST -- PROC [switchBoxData: REF, eachNet: EachSwitchBoxNetProc]; PROC [switchBoxData, netData: REF, eachPin: EachSwitchBoxPinsPinProc]; ΚΊ˜Icodešœ™KšœH™HšœΟk ™7K™—K™š œ˜ Kšœ œ-˜>—K˜šΠln œœ˜K˜Kšœœ œ˜'Kšœ˜K˜—šΟnœ&˜Kšœ œœ ˜4Kšœœœ œ ˜(K˜/KšœœEœ˜aKšœœ)˜3Kšœ4˜4K˜šœœ˜'K˜—Kšœ˜K˜K˜—…—Ί ’