DIRECTORY CD, CDCells, CDDirectory, CDIO, CDOps, Rope, Route, RouteUtil, TerminalIO; RouteTest: CEDAR PROGRAM IMPORTS CD, CDCells, CDDirectory, CDIO, CDOps, Rope, Route, RouteUtil, TerminalIO SHARES Route = BEGIN c1, c2, c3, d1, d2, d3: Route.Pin; c1cd, c2cd, c3cd, d1cd, d2cd, d3cd: CD.Instance; result: Route.RoutingResult; design: CD.Design; object: CD.Object; technology: CD.Technology _ CD.FetchTechnology[$cmos]; metal: Route.Layer _ CD.FetchLayer[technology, $met]; metal2: Route.Layer _ CD.FetchLayer[technology, $met2]; rules: Route.DesignRules _ Route.CreateDesignRules[$cmos, metal, metal2, horizontal]; routingArea: Route.RoutingArea _ Route.CreateRoutingArea["RouteTestA", rules]; Route.IncludeRoutingAreaSide[routingArea, bottom, [0, 0]]; Route.IncludeRoutingAreaSide[routingArea, top, [0, 0]]; c1cd _ RouteUtil.CreateCDPin["c1", [98, 0, 102, -4], metal2]; c1 _ Route.CreatePin[c1cd, bottom]; c2cd _ RouteUtil.CreateCDPin["c2", [134, 0, 138, 4], metal2]; c2 _ Route.CreatePin[c2cd, top]; c3cd _ RouteUtil.CreateCDPin["c3", [180, 0, 184, 4], metal2]; c3 _ Route.CreatePin[c3cd, bottom]; Route.IncludeNet[routingArea, "c", LIST[c1, c2, c3]]; d1cd _ RouteUtil.CreateCDPin["d1", [136, 0, 140, -4], metal2]; d1 _ Route.CreatePin[d1cd, bottom]; d2cd _ RouteUtil.CreateCDPin["d2", [100, 0, 104, 4], metal2]; d2 _ Route.CreatePin[d2cd, top]; d3cd _ RouteUtil.CreateCDPin["d3", [180, 0, 184, 4], metal2]; d3 _ Route.CreatePin[d3cd, top]; Route.IncludeNet[routingArea, "d", LIST[d1, d2, d3]]; result _ Route.ChannelRoute[routingArea, [[0, 0], [200, 0], [0, 30], [0,0]], [0, 0, 200, 30], full]; design _ CDOps.CreateDesign[technology]; object _ Route.RetrieveRouting[result, result.routingArea.name, NIL, NIL].object; [ ] _ CDCells.IncludeOb[design: design, cell: NIL, ob: object, position: [0, 0], orientation: 0, cellCSystem: interrestCoords, obCSystem: interrestCoords, mode: dontPropagate]; IF CDIO.WriteDesign[design, result.routingArea.name] THEN BEGIN newCellName: Rope.ROPE _ CDDirectory.Name[object]; IF ~Rope.Equal[result.routingArea.name, newCellName] THEN TerminalIO.WriteRope[Rope.Cat["cell name changed to: ", newCellName, "\n"]]; END ELSE TerminalIO.WriteRope["Error: design not written\n"]; END. Ύ///route/RouteTestA.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Last Edited by: Preas, August 20, 1985 4:18:31 pm PDT Bryan Preas August 23, 1985 6:25:49 pm PDT Κ˜Jšœ™Jšœ Οmœ1™<™5Icode™*—J™šΟk œ˜ Jšžœ˜J˜Jšœ ˜ Jšžœ˜J˜Jšœ˜Jšœ˜J˜ Jšœ ˜ —J˜šœ žœž˜J˜Jšžœžœžœ+˜QJšžœ˜—˜Jšž˜Jšœ"˜"Jšœ0˜0Jšœ˜Jšœžœ˜Jšœžœ˜J˜Jšœ žœžœ˜6Jšœ5˜5Jšœ7˜7JšœU˜UJšœN˜NJšœ:˜:Jšœ7˜7Jšœ=˜=Jšœ#˜#Jšœ=˜=Jšœ ˜ Jšœ=˜=Jšœ#˜#Jšœ#žœ˜5Jšœ>˜>Jšœ#˜#Jšœ=˜=Jšœ ˜ Jšœ=˜=Jšœ ˜ Jšœ#žœ˜5Jšœd˜dJšœ(˜(Jšœ@žœžœ ˜Qšœ(˜(Jšœ9˜9JšœO˜O—J˜šžœžœ/ž˜:Jšž˜Jšœžœ˜2šžœ3ž˜9JšœL˜L—Jšž˜—šž˜J˜4J˜—Jšžœ˜—J˜J˜—…—΄ ˆ