DIRECTORY TerminalIO, Rope, Convert, Menus, IPChWidthEst, IPCoTab, IPNetTab, IPPortTab, IPTop, IPToolBox USING [ConstructFileName], IPMVBasicOps; IPMVBasicOpsImpl: CEDAR PROGRAM IMPORTS TerminalIO, Rope, Convert, IPChWidthEst, IPCoTab, IPTop, IPNetTab, IPPortTab, IPToolBox EXPORTS IPMVBasicOps = BEGIN OPEN TIO: TerminalIO, IPMVBasicOps; MenuHit: PUBLIC PROC [top: IPTop.Ref, defaultDir: Rope.ROPE, command: ATOM, mouse: Menus.MouseButton, shift, control: BOOL] RETURNS [reGeom: BOOL _ FALSE, refreshFlag: BOOL _ TRUE] ={ SELECT command FROM $Geom => {TIO.WriteRope["Geometrizing..."]; reGeom _ TRUE}; $CheckPoint => {file: Rope.ROPE _ TIO.RequestRope["Enter File Name for CheckPoint: "]; TIO.WriteRope["Creating CheckPoint..."]; IPTop.DescribeSelf[top, IPToolBox.ConstructFileName[defaultDir, file, "chp"]]; refreshFlag _ FALSE}; $List => { allCompProc: IPCoTab.EachComponentAction ={ SELECT mouse FROM red => IF ~ IPCoTab.CoActive[co] THEN TIO.WriteRope[Rope.Cat[IPCoTab.GetName[co], "\n\t"]]; yellow => TIO.WriteRope[Rope.Cat[IPCoTab.GetName[co], "\n\t"]]; blue => IF IPCoTab.CoActive[co] THEN TIO.WriteRope[Rope.Cat[IPCoTab.GetName[co], "\n\t"]]; ENDCASE => ERROR}; --allCompProc eachNetAction: IPNetTab.EachNetAction ={ printNet: PROC[net: IPNetTab.Net] ={ TIO.WriteRope[Rope.Cat["(", net.name, " ", Convert.RopeFromInt[IPNetTab.NetLength[net]], ")\n\t"]] }; --printNet SELECT mouse FROM red => IF IPNetTab.NetActive[net] THEN printNet[net]; yellow => printNet[net]; blue => IF ~ IPNetTab.NetActive[net] THEN printNet[net]; ENDCASE => ERROR; }; -- eachNetAction eachPortAction: IPPortTab.EachPortAction ={ pCoord: Rope.ROPE; IF port.position = NIL THEN pCoord _ "()" ELSE pCoord _ Rope.Cat["(", Convert.RopeFromInt[port.position.x], Convert.RopeFromInt[port.position.y],")"]; TIO.WriteRope[Rope.Cat[port.name, "\t", pCoord, "\n\t"]]; }; --eachPortAction IF ~shift AND ~ control THEN { howListed: Rope.ROPE _ (SELECT mouse FROM red => "List of Non-Active Components:\n\t", yellow => "List of All Components:\n\t", blue => "List of Active Components:\n\t", ENDCASE => ERROR); TIO.WriteRope[howListed]; top.coTab.AllComponents[allCompProc]}; IF shift THEN { SELECT mouse FROM red => TIO.WriteRope["List of Active (Net Length) Pairs:\n\t"]; yellow => TIO.WriteRope["List of All (Net Length) Pairs:\n\t"]; blue => TIO.WriteRope["List of Non-Active (Net Length) Pairs:\n\t"]; ENDCASE => ERROR; IPNetTab.Nets[top.nets, eachNetAction];}; IF control THEN { SELECT mouse FROM red, yellow, blue => TIO.WriteRope["List of All Ports:\n\t"]; ENDCASE => ERROR; IPPortTab.Ports[top.ports, eachPortAction]; }; refreshFlag _ FALSE}; $EstChs => { totalNetLength, totalActivePins, totalNonActivePins, xDim, yDim: INT; IF control AND shift THEN { IF IPTop.NoTopology[top] THEN RETURN; TIO.WriteRope["\n\tTotalNetLength = "]; TIO.WriteInt[IPNetTab.TotalNetLength[top.nets]]; RETURN; }; -- used for interactive debugging TIO.WriteRope["\nEstimating Channel Width.."]; [totalNetLength, totalActivePins, totalNonActivePins, xDim, yDim] _ IPChWidthEst.EstimateAndAssignChWidth[top]; TIO.WriteRope["\n\tTotalNetLength = "]; TIO.WriteInt[totalNetLength]; TIO.WriteRope["\n\tTotalActivePins = "]; TIO.WriteInt[totalActivePins]; TIO.WriteRope["\n\tTotalNonActivePins = "]; TIO.WriteInt[totalNonActivePins]; TIO.WriteRope["\n\tXDim = "]; TIO.WriteInt[xDim]; TIO.WriteRope["\n\tYDim = "]; TIO.WriteInt[yDim]; TIO.WriteRope["\n"]; reGeom _ TRUE}; $ChkSlf => { TIO.WriteRope["Checking Self..."]; IPTop.CheckSelf[top]; refreshFlag _ FALSE}; ENDCASE => ERROR; }; END. ²--File: IPMVBasicOpsImpl.mesa Last Edited by: CSChow, February 2, 1985 3:34:49 am PST --Print Components --Print Nets --Print Ports --May differentiate later when needed ΚE˜Jšœ™J™7J™šΟk ˜ Icodešœ ˜ Kšœ˜K˜J˜Jšœ ˜ J˜J˜ Jšœ ˜ Jšœ˜J˜$Jšœ ˜ —J˜šœœΟa˜ Kšœ[˜bKšœ˜Iunitšœœœ˜)J˜šΟnœœœ2œ,œœ œœœœ˜·šœ ˜Kšœ œ(œ˜;šœœœ1˜VJšœ%˜(KšœN˜NKšœœ˜—šœ ˜ šœ+˜+šœ˜Kšœœœœ2˜[Kšœ œ2˜?Kšœœœœ2˜ZKšœœΟc ˜ ——šœ(˜(šœ œ˜$Kšœ_˜bKšœ  ˜ —šœ˜Kšœœœ˜5Kšœ˜Kšœœœ˜8Kšœœ˜—Kšœ ˜—K˜šœ+˜+Kšœ œ˜šœœ˜Kšœ˜šœ˜Kšœ%˜%Kšœ*˜*——Kšœ6˜9Kšœ ˜—šœœ œ˜K™šœœœ˜)Kšœ,˜,Kšœ(˜(Kšœ)˜)Kšœœ˜—Jšœ˜Jšœ'˜'—šœœ˜K™ šœ˜Kšœœ6˜@Kšœ œ3˜@Kšœœ:˜EKšœœ˜—Kšœ)˜)—šœ œ˜K™ šœ˜K™%Kšœœ%˜=Kšœœ˜—K˜+Kšœ˜—Jšœœ˜—K˜šœ ˜ JšœAœ˜Ešœ œœ˜Kšœœœ˜%Kšœ$˜'Kšœ-˜0Kšœ˜Kšœ "˜%—J˜Jšœ+˜.J˜Jšœo˜oJ˜Jšœ%œ˜EJšœ&œ˜GJšœ)œ˜MJšœœ˜1Jšœœ˜1Jšœ˜Jšœ œ˜—šœ ˜ Jšœ˜"Jšœ˜Jšœœ˜—K˜Kšœœ˜——J˜Jšœ˜——…— θί