PWPLAStack:
CEDAR
DEFINITIONS =
BEGIN
ROPE: TYPE = Rope.ROPE;
RopeList: TYPE = LIST OF ROPE;
PLADescription: TYPE = REF PLADescriptionRec;
PLADescriptionRec:
TYPE =
RECORD [
plaSpecFile: ROPE ← NIL,
symTab: SymTab.Ref ← NIL,
tttFile: ROPE ← NIL,
pla: PLAOps.PLA ← NIL,
inputNames: LIST OF ROPE ← NIL,
outputNames: LIST OF ROPE ← NIL,
passInNames: LIST OF ROPE ← NIL,
passOutNames: LIST OF ROPE ← NIL,
signalOrder: LIST OF ROPE ← NIL,
connSeq: ConnSeq ← NIL,
design: CD.Design ← NIL,
tileDefDesign: CD.Design ← NIL,
glueTiles: GlueTiles ← NIL,
andTiles: NormalTiles ← NIL,
orTiles: NormalTiles ← NIL,
nofAndCols: CARDINAL ← 0,
nofOrCols: CARDINAL ← 0,
nofRows: CARDINAL ← 0,
nextTerm: PLAOps.Term ← NIL,
nextConn: INT ← 0,
rows: RowsRef ← NIL,
smlToBigOut: XsFormSeq ← NIL,
param: PLAParams ← NIL ];
PLAParams: TYPE = REF PLAParamsRec;
PLAParamsRec:
TYPE =
RECORD [
tileSet: ROPE ← NIL,
rowsPerHeader: INT ← Never, -- SPACING between header rows;
insPerExtra: INT ← Never, -- SPACING between extra columns;
outsPerExtra: INT ← Never, -- SPACING between extra columns;
doCompleteSum: BOOL ← TRUE,
csAddMerges: BOOL ← FALSE,
csAddConsensus: BOOL ← FALSE,
doMinimization: BOOL ← FALSE,
timeOutMinutes: CARDINAL ← 20 ];
RowsRef: TYPE = REF RowsRec;
RowsRec: TYPE = RECORD[SEQUENCE size: CARDINAL OF RowRef];
RowRef: TYPE = REF RowRec;
RowRec:
TYPE =
RECORD[
type: RowType,
and: ColSeqRef,
or: ColSeqRef ];
ColSeqRef: TYPE = REF ColSeqRec;
ColSeqRec: TYPE = RECORD[SEQUENCE size: CARDINAL OF NormalCellType];
XsFormSeq: TYPE = REF XsFormSeqRec;
XsFormSeqRec: TYPE = RECORD[SEQUENCE size: CARDINAL OF INT];
ConnSeq: TYPE = REF ConnSeqRec;
ConnSeqRec: TYPE = RECORD[SEQUENCE size: CARDINAL OF Connection];
Connection:
TYPE =
RECORD[
index: INT,
isOutput: BOOL,
isLeftSide: BOOL ];
NormalTiles: TYPE = REF NormalTilesRec;
GlueTiles: TYPE = REF GlueTilesRec;
NormalTilesRec: TYPE = ARRAY RowType OF ARRAY NormalCellType OF CD.Object;
GlueTilesRec: TYPE = ARRAY RowType OF ARRAY GlueCellType OF CD.Object;
RowType: TYPE = {header, conn, dataUp, dataDn};
NormalCellType: TYPE = {left, right, nc, extra};
GlueCellType: TYPE = {leftSide, between, rightSide};
Never:
INT =
INT.
LAST-100;
CreatePLAFromDesc: PROC [desc: PLADescription] RETURNS [plaCell: CD.Object];
PWPLAStackProc: PW.UserProc;
END.