<> <> <> <> <<>> DIRECTORY CDCommandOps, CDProperties, CDSequencer, Core, CoreOps, CoreProperties, Rope, Rosemary, RosemaryUser, SinixOps, Sisyph, TerminalIO; RoseTestProcImpl: CEDAR PROGRAM IMPORTS CDCommandOps, CDProperties, CoreOps, CoreProperties, Rope, Rosemary, RosemaryUser, SinixOps, Sisyph, TerminalIO = BEGIN ExtractAndRosemaryTest: PROC [comm: CDSequencer.Command] ~ { cellType: Core.CellType _ SinixOps.SelectedCellType[comm.design, Sisyph.mode].root; public: Core.Wire _ cellType.public; Vdd: Core.Wire _ CoreOps.FindWire[public, "Vdd"]; Gnd: Core.Wire _ CoreOps.FindWire[public, "Gnd"]; tester: RosemaryUser.Tester _ NIL; testButtons: LIST OF Rope.ROPE _ NIL; IF Vdd=NIL THEN TerminalIO.PutRope["RoseTestProc: Couldn't find Vdd\n"] ELSE [] _ Rosemary.SetFixedWire[Vdd, H]; IF Gnd=NIL THEN TerminalIO.PutRope["RoseTestProc: Couldn't find Gnd\n"] ELSE [] _ Rosemary.SetFixedWire[Gnd, L]; FOR tbl: LIST OF REF ANY _ NARROW[CoreProperties.GetCellTypeProp[cellType, $Tests]], tbl.rest UNTIL tbl=NIL DO testButtons _ CONS[CoreOps.FixStupidRef[tbl.first], testButtons]; ENDLOOP; tester _ RosemaryUser.TestProcedureViewer[ cellType: cellType, testButtons: testButtons, name: Rope.Cat[CoreOps.GetCellTypeName[cellType], " Test"], displayWires: RosemaryUser.DisplayPortLeafWires[cellType], cutSet: NARROW[CoreProperties.GetCellTypeProp[cellType, $CutSet]]]; CDProperties.PutDesignProp[comm.design, $DAUserRoseDisplay, tester.display]; }; CDCommandOps.RegisterWithMenu[menu: $OtherProgramMenu, entry: "Extract and Rosemary Test", key: $ExtractAndRosemaryTest, proc: ExtractAndRosemaryTest, queue: doQueue]; END. <<>>