IFUCoreCtl.mesa
Copyright © 1985, 1986 by Xerox Corporation. All rights resersed.
Last Edited by: Curry, October 21, 1986 8:57:33 pm PDT
Don Curry October 30, 1986 9:43:38 am PST
DIRECTORY CD, Core, CoreBlock, CoreFrame, CoreName, IFUCoreDrive, PLAOps;
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: BOOLFALSE, 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.