IFUCoreCtl:
CEDAR
DEFINITIONS =
BEGIN
CellProc:
PROC [section: Section, desc: PLADescription]
RETURNS [cellType: Core.CellType]; -- ctlCellClass
MakePLA: PROC [desc: PLADescription];
MakePLA1: PROC [desc: PLADescription];
MakePLA2: PROC [desc: PLADescription];
ctlCellClass: Core.CellClass;
PLASection: TYPE = REF PLASectionRec;
PLASectionRec:
TYPE =
RECORD [
desc: PLADescription ← NIL,
section: Section ← complete ];
PLADescription: TYPE = REF PLADescriptionRec;
PLADescriptionRec:
TYPE =
RECORD [
name: ROPE ← NIL,
plaType: PLAType ← hot,
plaPhs: PLAPhs ← ALL[unk],
plaPhExt: ROPE ← NIL,
ttt: PLAOps.PLA ← NIL,
capSides: CoreBlock.Sides ← none,
inSh: ROPE ← NIL,
outSh: ROPE ← NIL,
fire: ROPE ← NIL,
fireV: ROPE ← NIL,
nPreChg: ROPE ← NIL,
xlatePublic: XlatePubSeq ← NIL,
includeIns: BOOL ← TRUE,
inDrs: Drives ← NIL,
outDrs: Drives ← NIL,
inDrCT: Core.CellType ← NIL,
outDrCT: Core.CellType ← NIL,
inSBCT: Core.CellType ← NIL,
outBodyCT: Core.CellType ← NIL,
plaInNames: LIST OF ROPE ← NIL,
plaOutNames: LIST OF ROPE ← NIL,
drSignalOrder: LIST OF ROPE ← NIL,
termsPerHeader: INT ← 1000,
smlToBigOut: XsFormSeq ← NIL,
connSeq: REF ConnSeq ← NIL,
nofAndCols: CARDINAL ← 0,
nofOrCols: CARDINAL ← 0,
nofTermCols: CARDINAL ← 1,
fullWidthTerms: BOOL ← FALSE,
valid: BOOL ← FALSE,
data: REF ← NIL ];
Section: TYPE = {complete, outSec, outBody,outDr, inSec, inSB,inDr};
ROPE: TYPE = Core.ROPE;
Ph: TYPE = CoreName.Ph;
Dir: TYPE = IFUCoreDrive.Dir;
RowType: TYPE = IFUCoreDrive.RowType;
PLAType: TYPE = IFUCoreDrive.PLAType;
Drives: TYPE = IFUCoreDrive.Drives;
PLAPh: TYPE = {drIn, drInClk, plaIn, drOutClk, drOut};
PLAPhs: TYPE = ARRAY PLAPh OF Ph ← ALL[unk];
XsFormSeq: TYPE = REF XsFormSeqRec;
XlatePubSeq: TYPE = REF XlatePubSeqRec;
XsFormSeqRec: TYPE = RECORD[SEQUENCE size: CARDINAL OF INT];
XlatePubSeqRec: TYPE = RECORD[SEQUENCE size: CARDINAL OF REF PublicRefRec];
ConnSeq: TYPE = RECORD[SEQUENCE size: CARDINAL OF Connection];
PublicRefRec: TYPE = RECORD[dir: Dir, inverted: BOOL ← FALSE, index: INT ← -1];
Connection:
TYPE =
RECORD[
dr: REF IFUCoreDrive.DriveRec,
index: INT,
isOutput: BOOL,
isLeftSide: BOOL ];
MakeHotPLA: PROC[desc: PLADescription];
MakePreChargedPLA: PROC[desc: PLADescription];
MakeStaticPLA: PROC[desc: PLADescription];
END.