DIRECTORY Buttons, ChoiceButtons, Core, CoreFlat, RefTab, IO, PlotGraph, Ports, Rope, NewRosemary, ViewerClasses; NewRosemaryUser: CEDAR DEFINITIONS = BEGIN CreateTester: PROC [testerName: Rope.ROPE, cellType: Core.CellType, cutSet: CoreFlat.CutSet _ NIL] RETURNS [tester: Tester]; CellTypeTester: PROC [cellType: Core.CellType] RETURNS [tester: Tester]; Start: PROC [tester: Tester]; Abort: PROC [tester: Tester]; Interrupt: PROC [tester: Tester]; SingleEval: PROC [tester: Tester]; Proceed: PROC [tester: Tester]; SetProceedUntil: PROC [tester: Tester, eval: INT, step: INT _ 0]; SetTrace: PROC [tester: Tester, on: BOOL _ FALSE]; SetRecord: PROC [tester: Tester, record: RecordFlavor _ eval]; RecordFlavor: TYPE = {nothing, eval, step}; SetPlot: PROC [tester: Tester, record: PlotFlavor _ eval]; PlotFlavor: TYPE = {eval, waveStep, step}; RegisterTestProc: PROC [testerName: Rope.ROPE, testName: ROPE, testProc: TestProc]; TestProc: TYPE = PROC [simulation: Rosemary.Simulation, cellType: Core.CellType, Eval: TestEvalProc]; TestEvalProc: TYPE = PROC [memory: BOOL _ TRUE, clockEval: BOOL _ FALSE, checkPorts: BOOL _ TRUE]; AddWireToPlot: PROC [tester: Tester, wire: CoreFlat.FlatWire] RETURNS [msg: ROPE _ NIL]; RemoveWireFromPlot: PROC [tester: Tester, wire: CoreFlat.FlatWire] RETURNS [found: BOOL _ FALSE]; WireValue: PROC [tester: Tester, flatWire: CoreFlat.FlatWire, eval: INT, step: INT _ 0] RETURNS [value: NewRosemary.LevelSequence]; AddStateToPlot: PROC [tester: Tester, flatCell: CoreFlat.FlatCellType, data: REF ANY _ NIL] RETURNS [msg: ROPE _ NIL]; RemoveStateFromPlot: PROC [tester: Tester, flatCell: CoreFlat.FlatCellType, data: REF ANY _ NIL] RETURNS [found: BOOL _ FALSE]; stateToMaxCharsProcProp: ATOM; -- $RoseStateToMaxCharsProc StateToMaxCharsProc: TYPE = PROC [stateAny: REF ANY, data: REF ANY _ NIL] RETURNS [maxChars: NAT _ 0]; stateToRopeProcProp: ATOM; -- $RoseStateToRopeProc StateToRopeProc: TYPE = PROC [stateAny: REF ANY, value: NewRosemary.LevelSequence, data: REF ANY _ NIL] RETURNS [rope: Rope.ROPE]; StateValue: PROC [tester: Tester, flatCell: CoreFlat.FlatCellType, eval: INT, step: INT _ 0] RETURNS [value: NewRosemaryLevelSequence]; END. ¦NewRosemaryUser.mesa Copyright Σ 1985, 1986, 1988 by Xerox Corporation. All rights reserved. Barth, June 9, 1988 4:29:56 pm PDT Simulation Creation and Control Creates a simulation and a viewer for it. The viewer has three panels, the control panel, the plot panel and the typescript panel. There is a sliding bar between the plot panel and typescript panel. The control panel has a menu line for selecting the test procedure to be called if more than one test procedure is registered with same testerName. It also contains the simulation state as one of {idle, initializing, running, interrupted}. It displays the time as a pair of integers, the eval count, and the MOSSIM step count within the eval. It has a pair of integers to control stopping the simulation at a specific eval and step value. Get the Tester associated with a CellType State Display and Access If msg is not NIL then something bad happened and the wire was not added to the plot. Gets the value of the wire at the specific time. May raise Rosemary.NotInstantiated. Will return NIL if information is not available. Adds the state vector of the specified flatCell to the plot. Implementation calls stateToRope found by CoreProperties.InheritCellTypeProp for each displayed state or calls Ports.LSToRope if not found. Put this on the cell type or cell class. Sets the maximum number of characters that will be returned by the StateToRopeProc Put this on the cell type or cell class to provide coercion from level sequence to rope. The level sequence is owned by the Rosemary implementation. The client should not alter the contents nor should it retain the ref with the expectation that the value will not change. Gets the value of the cell state encoded as an LS. May raise Rosemary.NotInstantiated. Will return NIL if information is not available. Data Structures Not intended to be understood by clients. Not here yet. Waiting for lower levels to be finished. Κ?˜codešœ™KšœH™HK™"—K˜šΟk œ1œ5˜qK˜—KšΟnœœ œ˜*head™š ž œœœ5œœ˜|K™ƒK˜—šžœœœ˜HK™)K™—šžœœ˜J˜—šžœœ˜J˜—šž œœ˜!J˜—šž œœ˜"J˜—šžœœ˜J˜—šžœœœœ˜AJ˜—šžœœœœ˜2J˜—šž œœ/˜>Kšœœ˜+J˜—šžœœ-˜:Kšœ œ˜*J˜—šžœœœ œ˜SJ˜—šœ œœP˜eK˜—Kšœœœ œœ œœœœ˜b—™š ž œœ+œœœ˜XK™UK˜—š žœœ+œ œœ˜aK˜—š ž œœ5œœœ$˜ƒKšœcœ!™‡K™—šžœœ9œœœœœœ˜vKšœΙ™ΙK™—šžœœ9œœœœ œœ˜K™—šœœΟc˜:K™(K™—šœœœ œœœœœœ œ˜fK™RK˜—šœœŸ˜2K™XK™—šœœœ œœ*œœœœ œ˜‚K™·K™—š ž œœ9œœœ#˜‡Kšœˆ™ˆ——™K™)K™7K™—Jšœ˜J˜—…—–{