IMatrix.mesa
Copyright © 1986 by Xerox Corporation. All rights reserved.
Written by: Pradeep Sindhu, October 9, 1987 10:08:12 pm PDT
Pradeep Sindhu, October 13, 1987 6:33:56 pm PDT
This interface defines incidence matrices and provides operations on them. The interface and its implementation are being written for the particular application of exhaustive testing of the cache's microcode flow graph, so they will undoubtedly contain verbiage specific to this application.
IMatrix: CEDAR DEFINITIONS
~ BEGIN
Type Defs
IVector: TYPE = REF IVectorRec;
IVectorRec:
TYPE =
RECORD [
SEQUENCE size: NAT OF NAT
];
IM: TYPE = REF IMRec;
IMRec:
TYPE =
RECORD [
SEQUENCE size: NAT OF IVector
];
Buf: TYPE = REF BufRec;
BufRec:
TYPE =
RECORD [
first, last: NAT ← 0,
pcs: SEQUENCE size: NAT OF NAT
];
IMSeq: PUBLIC TYPE = REF IMSeqRec;
IMSeqRec:
TYPE =
RECORD [
buf: Buf,
ims: SEQUENCE size: NAT OF IM
];
Basic Procs
ConformanceCheck: SIGNAL;
DisallowedPath: PUBLIC SIGNAL [from, to: NAT];
Create: PROC [size: NAT] RETURNS [im: IM];
Copy: PROC [from: IM] RETURNS [to: IM];
Multiply: PROC [left, right: IM] RETURNS[result: IM];
Size: PROC [im1, im2: IM] RETURNS [size: NAT];
Equal: PROC [im1, im2: IM] RETURNS [BOOL];
ApplyProc: TYPE = PROC [i, j: NAT];
Enumerate: PROC [im: IM, p: ApplyProc];
Higher Level Procs
CreateIMSeq: PROC [im: IM] RETURNS [imSeq: IMSeq];
InitIMSeq: PROC [imSeq: IMSeq];
UpdateIMSeq: PROC [imSeq: IMSeq, pc: NAT];
END.