RosemaryVector.mesa
Copyright © 1985, 1986 by Xerox Corporation. All rights reserved.
Barth, January 5, 1988 11:38:07 am PST
Jean-Marc Frailong February 8, 1988 12:20:02 pm PST
DIRECTORY Core, CoreFlat, IO, Ports, Rope, Rosemary;
RosemaryVector: CEDAR DEFINITIONS = BEGIN
OpenVectorFile: PROC [fileName: Rope.ROPE, port: Ports.Port, read: BOOLTRUE] RETURNS [vectorFile: VectorFile];
CloseVectorFile: PROC [vectorFile: VectorFile];
WriteVector: PROC [vectorFile: VectorFile, neverSayExpect: BOOLFALSE];
ReadVector: PROC [vectorFile: VectorFile];
CreateTarget: PROC [simulation: Rosemary.Simulation, flatCell: CoreFlat.FlatCellType, test: Ports.Port] RETURNS [target: Target];
Same semantics as BindTestPort
SampleTarget: PROC [target: Target, test: Ports.Port];
Capture the state of the target into a Rosemary port
By convention, the following drives are used (to the exclusion of any other !!):
inspect => port should not drive and device should be TS (should not happen as untestable...)
none => do not drive nor check anything (should not happen as untestable...)
force => port should drive and device should be TS
drive => port should drive & have same resulting value
expect => port should not drive & should receive value
Target: TYPE ~ REF TargetRep;
TargetRep: TYPE ~ RECORD [
flatCell: CoreFlat.FlatCellType, -- the target flat CT
dut: Core.CellType, -- the target CT
portRoseValues: Rosemary.RoseValues ← NIL, -- that constitute the port connections
scratchValue: Ports.LevelSequence ← NIL, -- working storage
insideDrive, outsideDrive, compositeDrive: Ports.DriveSequence ← NIL, -- working storage
mayBeTS: Ports.BoolSequence ← NIL -- working storage
];
VectorFile: TYPE = REF VectorFileRec;
VectorFileRec: TYPE = RECORD [
port: Ports.Port,
stream: IO.STREAM];
END.