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:
BOOL ←
TRUE]
RETURNS [vectorFile: VectorFile];
CloseVectorFile:
PROC [vectorFile: VectorFile];
WriteVector:
PROC [vectorFile: VectorFile, neverSayExpect:
BOOL ←
FALSE];
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.