IFUImpl.Mesa
created by RoseTranslate 3.1.3 of September 5, 1985 12:14:34 pm PDT
created from IFU.Rose of March 18, 1986 3:23:57 pm PST
created for McCreight.pa
created at March 18, 1986 6:00:05 pm PST
DIRECTORY
RoseTypes, IFU, RoseCreate, DragOpsCross, IFUPLAMainControl, IFUPLAInstrDecode, LizardRosemary, PrintTV, AMBridge, IO, SwitchTypes, Dragon, NumTypes, EnumTypes, IFUData3;
IFUImpl: CEDAR PROGRAM
IMPORTS RoseCreate, PrintTV, AMBridge, IO, NumTypes, EnumTypes, IFUData3
EXPORTS IFU
= BEGIN OPEN
RoseTypes, IFU;
Signal Type decls
ALUOps: TYPE = Dragon.ALUOps;
CondSelects: TYPE = Dragon.CondSelects;
PBusCommands: TYPE = Dragon.PBusCommands;
PBusFaults: TYPE = Dragon.PBusFaults;
RegisterCells: PROC =
BEGIN
END;
otherss: SymbolTable ← RoseCreate.GetOtherss["IFU.partsAssertions"];
OldIFU: TYPE = RECORD [args: IFUArgs, ct: CellType];
oldIFU: LIST OF OldIFU ← NIL;
IFU: PUBLIC PROC [args: IFUArgs] RETURNS [ct: CellType]
= BEGIN
FOR old: LIST OF OldIFU ← oldIFU, old.rest WHILE old # NIL DO
IF old.first.args = args THEN RETURN [old.first.ct]
ENDLOOP;
ct ← RoseCreate.RegisterCellType[name: IFUName[args],
expandProc: IFUExpand,
ioCreator: CreateIFUIO, driveCreator: CreateIFUDrive,
evals: [],
tests: LIST[],
ports: CreateIFUPorts[args]
,
typeData: NEW [IFUArgs ← args]];
oldIFU ← CONS[[args, ct], oldIFU];
END;
IFUName: PROC [args: IFUArgs] RETURNS [name: ROPE] = {
to: IO.STREAMIO.ROS[]; to.PutRope["IFU"];
TRUSTED {PrintTV.Print[tv: AMBridge.TVForReferent[NEW [IFUArgs ← args]], put: to, depth: 2]};
name ← IO.RopeFromROS[to]};
CreateIFUPorts: PROC [args: IFUArgs] RETURNS [ports: Ports] = {ports ← RoseCreate.PortsFromFile["IFU.IFU.rosePorts"]};
IFUSwitchIORef: TYPE = REF IFUSwitchIORec;
IFUSwitchIORec: TYPE = RECORD [
KBus: PACKED ARRAY [0 .. 32) OF SwitchTypes.SwitchVal
,EUAluOp2AB: PACKED ARRAY [0 .. 4) OF SwitchTypes.SwitchVal
,EUCondSel2AB: PACKED ARRAY [0 .. 4) OF SwitchTypes.SwitchVal
,EUSt3AisCBus2BA: SwitchTypes.SwitchVal
,EUCondition2B: SwitchTypes.SwitchVal
,EURes3BisPBus3AB: SwitchTypes.SwitchVal
,EUWriteToPBus3AB: SwitchTypes.SwitchVal
,DPCmnd3A: PACKED ARRAY [0 .. 8) OF SwitchTypes.SwitchVal
,DPData: PACKED ARRAY [0 .. 32) OF SwitchTypes.SwitchVal
,DPRejectB: SwitchTypes.SwitchVal
,DPFaultB: PACKED ARRAY [0 .. 4) OF SwitchTypes.SwitchVal
,IPCmnd3A: PACKED ARRAY [0 .. 8) OF SwitchTypes.SwitchVal
,IPRejectB: SwitchTypes.SwitchVal
,IPFaultB: PACKED ARRAY [0 .. 4) OF SwitchTypes.SwitchVal
,IPData: PACKED ARRAY [0 .. 32) OF SwitchTypes.SwitchVal
,ResetAB: SwitchTypes.SwitchVal
,DHoldAB: SwitchTypes.SwitchVal
,DShiftAB: SwitchTypes.SwitchVal
,DExecuteAB: SwitchTypes.SwitchVal
,DNSelectAB: SwitchTypes.SwitchVal
,DDataInAB: SwitchTypes.SwitchVal
,DDataOutAB: SwitchTypes.SwitchVal
,RescheduleAB: SwitchTypes.SwitchVal
,PhA: SwitchTypes.SwitchVal
,PhB: SwitchTypes.SwitchVal
];
IFUSimpleIORef: TYPE = REF IFUSimpleIORec;
IFUSimpleIORec: TYPE = RECORD [
KBus: ARRAY [0..2) OF CARDINAL
,fill1: [0 .. 4095],
EUAluOp2AB: ALUOps
,fill2: [0 .. 4095],
EUCondSel2AB: CondSelects
,fill3: [0 .. 32767],
EUSt3AisCBus2BA: BOOLEAN
,fill4: [0 .. 32767],
EUCondition2B: BOOLEAN
,fill5: [0 .. 32767],
EURes3BisPBus3AB: BOOLEAN
,fill6: [0 .. 32767],
EUWriteToPBus3AB: BOOLEAN
,fill7: [0 .. 255],
DPCmnd3A: PBusCommands
,DPData: ARRAY [0..2) OF CARDINAL
,fill9: [0 .. 32767],
DPRejectB: BOOLEAN
,fill10: [0 .. 4095],
DPFaultB: PBusFaults
,fill11: [0 .. 255],
IPCmnd3A: PBusCommands
,fill12: [0 .. 32767],
IPRejectB: BOOLEAN
,fill13: [0 .. 4095],
IPFaultB: PBusFaults
,IPData: ARRAY [0..2) OF CARDINAL
,fill15: [0 .. 32767],
ResetAB: BOOLEAN
,fill16: [0 .. 32767],
DHoldAB: BOOLEAN
,fill17: [0 .. 32767],
DShiftAB: BOOLEAN
,fill18: [0 .. 32767],
DExecuteAB: BOOLEAN
,fill19: [0 .. 32767],
DNSelectAB: BOOLEAN
,fill20: [0 .. 32767],
DDataInAB: BOOLEAN
,fill21: [0 .. 32767],
DDataOutAB: BOOLEAN
,fill22: [0 .. 32767],
RescheduleAB: BOOLEAN
,fill23: [0 .. 32767],
PhA: BOOLEAN
,fill24: [0 .. 32767],
PhB: BOOLEAN
];
IFUDriveRef: TYPE = REF IFUDriveRec;
IFUDriveRec: TYPE = RECORD [driveRecordInitialPadding: DriveTagType, drive: PACKED ARRAY IFUPort OF DriveLevel];
IFUPort: TYPE = {
KBus, EUAluOp2AB, EUCondSel2AB, EUSt3AisCBus2BA, EUCondition2B, EURes3BisPBus3AB, EUWriteToPBus3AB, DPCmnd3A, DPData, DPRejectB, DPFaultB, IPCmnd3A, IPRejectB, IPFaultB, IPData, ResetAB, DHoldAB, DShiftAB, DExecuteAB, DNSelectAB, DDataInAB, DDataOutAB, RescheduleAB, PhA, PhB, IFUPortTypePad25, IFUPortTypePad26, IFUPortTypePad27};
CreateIFUIO: PROC [ct: CellType, switch: BOOL] RETURNS [ioAsAny: REF ANY] --IOCreator-- = {
args: REF IFUArgs ← NARROW[ct.typeData];
{OPEN args;
ioAsAny ← IF switch THEN NEW[IFUSwitchIORec] ELSE NEW[IFUSimpleIORec];
};
};
CreateIFUDrive: PROC [ct: CellType] RETURNS [driveAsAny: REF ANY] --DriveCreator-- = {
args: REF IFUArgs ← NARROW[ct.typeData];
{OPEN args;
driveAsAny ← NEW[IFUDriveRec];
};
};
IFUExpand: PROC [thisCell: Cell, to: ExpansionReceiver] --ExpandProc-- = {
args: REF IFUArgs ← NARROW[thisCell.type.typeData];
{OPEN args;
PrivateLookupNode: PROC [name: ROPE] RETURNS [node: Node] = {node ← RoseCreate.LookupNode[from: thisCell, path: LIST[name]]};
KBus: Node ← PrivateLookupNode["KBus"];
EUAluOp2AB: Node ← PrivateLookupNode["EUAluOp2AB"];
EUCondSel2AB: Node ← PrivateLookupNode["EUCondSel2AB"];
EUSt3AisCBus2BA: Node ← PrivateLookupNode["EUSt3AisCBus2BA"];
EUCondition2B: Node ← PrivateLookupNode["EUCondition2B"];
EURes3BisPBus3AB: Node ← PrivateLookupNode["EURes3BisPBus3AB"];
EUWriteToPBus3AB: Node ← PrivateLookupNode["EUWriteToPBus3AB"];
DPCmnd3A: Node ← PrivateLookupNode["DPCmnd3A"];
DPData: Node ← PrivateLookupNode["DPData"];
DPRejectB: Node ← PrivateLookupNode["DPRejectB"];
DPFaultB: Node ← PrivateLookupNode["DPFaultB"];
IPCmnd3A: Node ← PrivateLookupNode["IPCmnd3A"];
IPRejectB: Node ← PrivateLookupNode["IPRejectB"];
IPFaultB: Node ← PrivateLookupNode["IPFaultB"];
IPData: Node ← PrivateLookupNode["IPData"];
ResetAB: Node ← PrivateLookupNode["ResetAB"];
DHoldAB: Node ← PrivateLookupNode["DHoldAB"];
DShiftAB: Node ← PrivateLookupNode["DShiftAB"];
DExecuteAB: Node ← PrivateLookupNode["DExecuteAB"];
DNSelectAB: Node ← PrivateLookupNode["DNSelectAB"];
DDataInAB: Node ← PrivateLookupNode["DDataInAB"];
DDataOutAB: Node ← PrivateLookupNode["DDataOutAB"];
RescheduleAB: Node ← PrivateLookupNode["RescheduleAB"];
PhA: Node ← PrivateLookupNode["PhA"];
PhB: Node ← PrivateLookupNode["PhB"];
others: SymbolTable ← RoseCreate.GetOthers[otherss, "IFU"];
NodeCreateHack1: PROC [name: ROPE] RETURNS [node: Node] = {node ← to.class.NodeInstance[erInstance: to.instance, name: name, type: NumTypes.NumType[32], other: RoseCreate.GetOther[others, name]]};
XBus: Node ← NodeCreateHack1["XBus"];
NodeCreateHack2: PROC [name: ROPE] RETURNS [node: Node] = {node ← to.class.NodeInstance[erInstance: to.instance, name: name, type: NumTypes.boolType, other: RoseCreate.GetOther[others, name]]};
X2ASrcLit0BA: Node ← NodeCreateHack2["X2ASrcLit0BA"];
X2ASrcLit1BA: Node ← NodeCreateHack2["X2ASrcLit1BA"];
Stage1BHoldBA: Node ← NodeCreateHack2["Stage1BHoldBA"];
LoadStage1Ac: Node ← NodeCreateHack2["LoadStage1Ac"];
LoadStage1Bc: Node ← NodeCreateHack2["LoadStage1Bc"];
LoadStage2Ac: Node ← NodeCreateHack2["LoadStage2Ac"];
BubbleStage2A1BA: Node ← NodeCreateHack2["BubbleStage2A1BA"];
NormalStage2A1BA: Node ← NodeCreateHack2["NormalStage2A1BA"];
AbortStage2B2AB: Node ← NodeCreateHack2["AbortStage2B2AB"];
NormalStage2B2AB: Node ← NodeCreateHack2["NormalStage2B2AB"];
LoadStage3Ac: Node ← NodeCreateHack2["LoadStage3Ac"];
AbortStage3A2BA: Node ← NodeCreateHack2["AbortStage3A2BA"];
NormalStage3A2BA: Node ← NodeCreateHack2["NormalStage3A2BA"];
MicroExcptJmpAB: Node ← to.class.NodeInstance[erInstance: to.instance, name: "MicroExcptJmpAB", type: EnumTypes.EnumType["IFUPLAMainControl.MicroExcptJmp"], other: RoseCreate.GetOther[others, "MicroExcptJmpAB"]];
ExceptionCodeAB: Node ← to.class.NodeInstance[erInstance: to.instance, name: "ExceptionCodeAB", type: EnumTypes.EnumType["IFUPLAMainControl.ExceptionCode"], other: RoseCreate.GetOther[others, "ExceptionCodeAB"]];
NodeCreateHack3: PROC [name: ROPE] RETURNS [node: Node] = {node ← to.class.NodeInstance[erInstance: to.instance, name: name, type: NumTypes.NumType[8], other: RoseCreate.GetOther[others, name]]};
MicroCycleAB: Node ← NodeCreateHack3["MicroCycleAB"];
GetNextInstBA: Node ← NodeCreateHack2["GetNextInstBA"];
MacroJumpBA: Node ← NodeCreateHack2["MacroJumpBA"];
MicroCycleNextBA: Node ← to.class.NodeInstance[erInstance: to.instance, name: "MicroCycleNextBA", type: EnumTypes.EnumType["IFUPLAInstrDecode.MicroCycleNext"], other: RoseCreate.GetOther[others, "MicroCycleNextBA"]];
InstReadyAB: Node ← NodeCreateHack2["InstReadyAB"];
OpAB: Node ← NodeCreateHack3["OpAB"];
AlphaAB: Node ← NodeCreateHack3["AlphaAB"];
BetaAB: Node ← NodeCreateHack3["BetaAB"];
GammaAB: Node ← NodeCreateHack3["GammaAB"];
DeltaAB: Node ← NodeCreateHack3["DeltaAB"];
OpBA: Node ← NodeCreateHack3["OpBA"];
AlphaBA: Node ← NodeCreateHack3["AlphaBA"];
BetaBA: Node ← NodeCreateHack3["BetaBA"];
OpLengthBA: Node ← to.class.NodeInstance[erInstance: to.instance, name: "OpLengthBA", type: NumTypes.NumType[3], other: RoseCreate.GetOther[others, "OpLengthBA"]];
JumpOffsetSelAB: Node ← to.class.NodeInstance[erInstance: to.instance, name: "JumpOffsetSelAB", type: EnumTypes.EnumType["IFUPLAFetchPreDecode.JumpOffsetSel"], other: RoseCreate.GetOther[others, "JumpOffsetSelAB"]];
RschWaiting2BA: Node ← NodeCreateHack2["RschWaiting2BA"];
UserMode0AB: Node ← NodeCreateHack2["UserMode0AB"];
TrapsEnbled2BA: Node ← NodeCreateHack2["TrapsEnbled2BA"];
ClearTrapsEnbledBA: Node ← NodeCreateHack2["ClearTrapsEnbledBA"];
ClearUserModeBA: Node ← NodeCreateHack2["ClearUserModeBA"];
KPadsIn0BA: Node ← NodeCreateHack2["KPadsIn0BA"];
KPadsIn3BA: Node ← NodeCreateHack2["KPadsIn3BA"];
X2ALitSourceBA: Node ← to.class.NodeInstance[erInstance: to.instance, name: "X2ALitSourceBA", type: EnumTypes.EnumType["IFUPLAInstrDecode.X2ALitSource"], other: RoseCreate.GetOther[others, "X2ALitSourceBA"]];
PCBusB: Node ← NodeCreateHack1["PCBusB"];
PCStkTopAB: Node ← NodeCreateHack1["PCStkTopAB"];
PCForLogAB: Node ← NodeCreateHack1["PCForLogAB"];
PCPipe3BA: Node ← NodeCreateHack1["PCPipe3BA"];
PCNextBA: Node ← to.class.NodeInstance[erInstance: to.instance, name: "PCNextBA", type: EnumTypes.EnumType["IFUPLAInstrDecode.PCNext"], other: RoseCreate.GetOther[others, "PCNextBA"]];
PCBusSrcB: Node ← to.class.NodeInstance[erInstance: to.instance, name: "PCBusSrcB", type: EnumTypes.EnumType["IFUPLAInstrDecode.PCBusSrc"], other: RoseCreate.GetOther[others, "PCBusSrcB"]];
PCPipeSrcBA: Node ← to.class.NodeInstance[erInstance: to.instance, name: "PCPipeSrcBA", type: EnumTypes.EnumType["IFUPLAInstrDecode.PCPipeSrc"], other: RoseCreate.GetOther[others, "PCPipeSrcBA"]];
Push0BA: Node ← NodeCreateHack2["Push0BA"];
Pop0BA: Node ← NodeCreateHack2["Pop0BA"];
Push2BA: Node ← NodeCreateHack2["Push2BA"];
Push3BA: Node ← NodeCreateHack2["Push3BA"];
Pop3BA: Node ← NodeCreateHack2["Pop3BA"];
PushPendingAB: Node ← NodeCreateHack2["PushPendingAB"];
PopPendingAB: Node ← NodeCreateHack2["PopPendingAB"];
PushPendingBA: Node ← NodeCreateHack2["PushPendingBA"];
PopPendingBA: Node ← NodeCreateHack2["PopPendingBA"];
IStkNearlyFullBA: Node ← NodeCreateHack2["IStkNearlyFullBA"];
LBusB: Node ← NodeCreateHack3["LBusB"];
LStkTopAB: Node ← NodeCreateHack3["LStkTopAB"];
LPipe3BA: Node ← NodeCreateHack3["LPipe3BA"];
LAB: Node ← NodeCreateHack3["LAB"];
SAB: Node ← NodeCreateHack3["SAB"];
DeltaSBA: Node ← NodeCreateHack3["DeltaSBA"];
PopSa0BA: Node ← NodeCreateHack2["PopSa0BA"];
PopSb0BA: Node ← NodeCreateHack2["PopSb0BA"];
PushSc0BA: Node ← NodeCreateHack2["PushSc0BA"];
LSourceLtBA: Node ← to.class.NodeInstance[erInstance: to.instance, name: "LSourceLtBA", type: EnumTypes.EnumType["IFUPLAInstrDecode.LSourceLt"], other: RoseCreate.GetOther[others, "LSourceLtBA"]];
LSourceRtBA: Node ← to.class.NodeInstance[erInstance: to.instance, name: "LSourceRtBA", type: EnumTypes.EnumType["IFUPLAInstrDecode.LSourceRt"], other: RoseCreate.GetOther[others, "LSourceRtBA"]];
SSourceLtBA: Node ← to.class.NodeInstance[erInstance: to.instance, name: "SSourceLtBA", type: EnumTypes.EnumType["IFUPLAInstrDecode.SSourceLt"], other: RoseCreate.GetOther[others, "SSourceLtBA"]];
SSourceRtBA: Node ← to.class.NodeInstance[erInstance: to.instance, name: "SSourceRtBA", type: EnumTypes.EnumType["IFUPLAInstrDecode.SSourceRt"], other: RoseCreate.GetOther[others, "SSourceRtBA"]];
NodeCreateHack4: PROC [name: ROPE] RETURNS [node: Node] = {node ← to.class.NodeInstance[erInstance: to.instance, name: name, type: EnumTypes.EnumType["IFUPLAInstrDecode.ABCSourceLt"], other: RoseCreate.GetOther[others, name]]};
ASourceLtBA: Node ← NodeCreateHack4["ASourceLtBA"];
NodeCreateHack5: PROC [name: ROPE] RETURNS [node: Node] = {node ← to.class.NodeInstance[erInstance: to.instance, name: name, type: EnumTypes.EnumType["IFUPLAInstrDecode.ABCSourceRt"], other: RoseCreate.GetOther[others, name]]};
ASourceRtBA: Node ← NodeCreateHack5["ASourceRtBA"];
ASourceOffBA: Node ← to.class.NodeInstance[erInstance: to.instance, name: "ASourceOffBA", type: EnumTypes.EnumType["IFUPLAInstrDecode.PlusOffset"], other: RoseCreate.GetOther[others, "ASourceOffBA"]];
BSourceLtBA: Node ← NodeCreateHack4["BSourceLtBA"];
BSourceRtBA: Node ← NodeCreateHack5["BSourceRtBA"];
BSourceOffBA: Node ← to.class.NodeInstance[erInstance: to.instance, name: "BSourceOffBA", type: EnumTypes.EnumType["IFUPLAInstrDecode.PlusOffset"], other: RoseCreate.GetOther[others, "BSourceOffBA"]];
CSourceLtBA: Node ← NodeCreateHack4["CSourceLtBA"];
CSourceRtBA: Node ← NodeCreateHack5["CSourceRtBA"];
CSourceOffBA: Node ← to.class.NodeInstance[erInstance: to.instance, name: "CSourceOffBA", type: EnumTypes.EnumType["IFUPLAInstrDecode.MinusOffset"], other: RoseCreate.GetOther[others, "CSourceOffBA"]];
X1ASrcStackBA: Node ← NodeCreateHack2["X1ASrcStackBA"];
X1ADstStackBA: Node ← NodeCreateHack2["X1ADstStackBA"];
XBusStackEldestBA: Node ← NodeCreateHack2["XBusStackEldestBA"];
XBusStackLBA: Node ← NodeCreateHack2["XBusStackLBA"];
X1ASrcSLimitAc: Node ← NodeCreateHack2["X1ASrcSLimitAc"];
X1ADstSLimitAc: Node ← NodeCreateHack2["X1ADstSLimitAc"];
X2ASrcStatusBA: Node ← NodeCreateHack2["X2ASrcStatusBA"];
X1ADstStatusBA: Node ← NodeCreateHack2["X1ADstStatusBA"];
AReg0BA: Node ← NodeCreateHack3["AReg0BA"];
BReg0BA: Node ← NodeCreateHack3["BReg0BA"];
CReg0BA: Node ← NodeCreateHack3["CReg0BA"];
ARegIsC2BA: Node ← NodeCreateHack2["ARegIsC2BA"];
ARegIsC3BA: Node ← NodeCreateHack2["ARegIsC3BA"];
BRegIsC2BA: Node ← NodeCreateHack2["BRegIsC2BA"];
BRegIsC3BA: Node ← NodeCreateHack2["BRegIsC3BA"];
ALUOpNeedsField0BA: Node ← NodeCreateHack2["ALUOpNeedsField0BA"];
ALUOpNeedsField1BA: Node ← NodeCreateHack2["ALUOpNeedsField1BA"];
C0IsFieldCtlBA: Node ← NodeCreateHack2["C0IsFieldCtlBA"];
C2IsFieldCtlAB: Node ← NodeCreateHack2["C2IsFieldCtlAB"];
C3IsFieldCtlAB: Node ← NodeCreateHack2["C3IsFieldCtlAB"];
CRegIsField3B: Node ← NodeCreateHack2["CRegIsField3B"];
EUAluLeftSrc1B: Node ← to.class.NodeInstance[erInstance: to.instance, name: "EUAluLeftSrc1B", type: EnumTypes.EnumType["Dragon.ALULeftSources"], other: RoseCreate.GetOther[others, "EUAluLeftSrc1B"]];
EUAluRightSrc1B: Node ← to.class.NodeInstance[erInstance: to.instance, name: "EUAluRightSrc1B", type: EnumTypes.EnumType["Dragon.ALURightSources"], other: RoseCreate.GetOther[others, "EUAluRightSrc1B"]];
EUStore2ASrc1B: Node ← to.class.NodeInstance[erInstance: to.instance, name: "EUStore2ASrc1B", type: EnumTypes.EnumType["Dragon.Store2ASources"], other: RoseCreate.GetOther[others, "EUStore2ASrc1B"]];
EStkOverflow1BA: Node ← NodeCreateHack2["EStkOverflow1BA"];
EStkOverflow2BA: Node ← NodeCreateHack2["EStkOverflow2BA"];
DPCmnd0BA: Node ← to.class.NodeInstance[erInstance: to.instance, name: "DPCmnd0BA", type: EnumTypes.EnumType["Dragon.PBusCommands"], other: RoseCreate.GetOther[others, "DPCmnd0BA"]];
DPCmndRd0BA: Node ← NodeCreateHack2["DPCmndRd0BA"];
DPCmndRd2BA: Node ← NodeCreateHack2["DPCmndRd2BA"];
DPCmndRd3BA: Node ← NodeCreateHack2["DPCmndRd3BA"];
KIsRtOp0BA: Node ← NodeCreateHack2["KIsRtOp0BA"];
KIsRtOp1BA: Node ← NodeCreateHack2["KIsRtOp1BA"];
FCtlIsRtOp0BA: Node ← NodeCreateHack2["FCtlIsRtOp0BA"];
FCtlIsRtOp1BA: Node ← NodeCreateHack2["FCtlIsRtOp1BA"];
EUAluOp0BA: Node ← to.class.NodeInstance[erInstance: to.instance, name: "EUAluOp0BA", type: EnumTypes.EnumType["Dragon.ALUOps"], other: RoseCreate.GetOther[others, "EUAluOp0BA"]];
EUCondSel0BA: Node ← to.class.NodeInstance[erInstance: to.instance, name: "EUCondSel0BA", type: EnumTypes.EnumType["Dragon.CondSelects"], other: RoseCreate.GetOther[others, "EUCondSel0BA"]];
EUCondSel3AB: Node ← to.class.NodeInstance[erInstance: to.instance, name: "EUCondSel3AB", type: EnumTypes.EnumType["Dragon.CondSelects"], other: RoseCreate.GetOther[others, "EUCondSel3AB"]];
NodeCreateHack6: PROC [name: ROPE] RETURNS [node: Node] = {node ← to.class.NodeInstance[erInstance: to.instance, name: name, type: EnumTypes.EnumType["IFUPLAMainControl.CondEffect"], other: RoseCreate.GetOther[others, name]]};
EUCondEffect0BA: Node ← NodeCreateHack6["EUCondEffect0BA"];
EUCondEffect1BA: Node ← NodeCreateHack6["EUCondEffect1BA"];
EUCondEffect2AB: Node ← NodeCreateHack6["EUCondEffect2AB"];
EUCondEffect2BA: Node ← NodeCreateHack6["EUCondEffect2BA"];
EUSt3AisCBus1BA: Node ← NodeCreateHack2["EUSt3AisCBus1BA"];
EUAluLeftSrc1AB: Node ← to.class.NodeInstance[erInstance: to.instance, name: "EUAluLeftSrc1AB", type: EnumTypes.EnumType["Dragon.ALULeftSources"], other: RoseCreate.GetOther[others, "EUAluLeftSrc1AB"]];
EUAluRightSrc1AB: Node ← to.class.NodeInstance[erInstance: to.instance, name: "EUAluRightSrc1AB", type: EnumTypes.EnumType["Dragon.ALURightSources"], other: RoseCreate.GetOther[others, "EUAluRightSrc1AB"]];
EUStore2ASrc1AB: Node ← to.class.NodeInstance[erInstance: to.instance, name: "EUStore2ASrc1AB", type: EnumTypes.EnumType["Dragon.Store2ASources"], other: RoseCreate.GetOther[others, "EUStore2ASrc1AB"]];
DPRejectedBA: Node ← NodeCreateHack2["DPRejectedBA"];
IPFaulted0BA: Node ← NodeCreateHack2["IPFaulted0BA"];
IPFaulted2BA: Node ← NodeCreateHack2["IPFaulted2BA"];
InstStarting0BA: Node ← NodeCreateHack2["InstStarting0BA"];
InstStarting2BA: Node ← NodeCreateHack2["InstStarting2BA"];
RescheduleBA: Node ← NodeCreateHack2["RescheduleBA"];
ResetBA: Node ← NodeCreateHack2["ResetBA"];
DHold0BA: Node ← NodeCreateHack2["DHold0BA"];
DHold1AB: Node ← NodeCreateHack2["DHold1AB"];
[] ← to.class.CellInstance[erInstance: to.instance, instanceName: "logger", typeName: IFUData3.IFULogger[[logRef:logRef, lizardSimRef:lizardSimRef]].name, other: RoseCreate.GetOther[others, "logger"], interfaceNodes: ""];
[] ← to.class.CellInstance[erInstance: to.instance, instanceName: "fetch", typeName: "Fetch", other: RoseCreate.GetOther[others, "fetch"], interfaceNodes: ""];
[] ← to.class.CellInstance[erInstance: to.instance, instanceName: "x2ALitGen", typeName: "X2ALitGen", other: RoseCreate.GetOther[others, "x2ALitGen"], interfaceNodes: ""];
[] ← to.class.CellInstance[erInstance: to.instance, instanceName: "pcForm", typeName: "PCForm", other: RoseCreate.GetOther[others, "pcForm"], interfaceNodes: ""];
[] ← to.class.CellInstance[erInstance: to.instance, instanceName: "stack", typeName: "Stack", other: RoseCreate.GetOther[others, "stack"], interfaceNodes: ""];
[] ← to.class.CellInstance[erInstance: to.instance, instanceName: "lFormation", typeName: "LFormation", other: RoseCreate.GetOther[others, "lFormation"], interfaceNodes: ""];
[] ← to.class.CellInstance[erInstance: to.instance, instanceName: "sFormation", typeName: "SFormation", other: RoseCreate.GetOther[others, "sFormation"], interfaceNodes: ""];
[] ← to.class.CellInstance[erInstance: to.instance, instanceName: "sLimitTest", typeName: "SLimitTest", other: RoseCreate.GetOther[others, "sLimitTest"], interfaceNodes: ""];
[] ← to.class.CellInstance[erInstance: to.instance, instanceName: "sDelta", typeName: "SDelta", other: RoseCreate.GetOther[others, "sDelta"], interfaceNodes: ""];
[] ← to.class.CellInstance[erInstance: to.instance, instanceName: "aBCFormation", typeName: "ABCFormation", other: RoseCreate.GetOther[others, "aBCFormation"], interfaceNodes: ""];
[] ← to.class.CellInstance[erInstance: to.instance, instanceName: "ifuStatus", typeName: "IFUStatus", other: RoseCreate.GetOther[others, "ifuStatus"], interfaceNodes: ""];
[] ← to.class.CellInstance[erInstance: to.instance, instanceName: "kBusPads", typeName: "KBusPads", other: RoseCreate.GetOther[others, "kBusPads"], interfaceNodes: ""];
[] ← to.class.CellInstance[erInstance: to.instance, instanceName: "mainControl", typeName: "MainControl", other: RoseCreate.GetOther[others, "mainControl"], interfaceNodes: ""];
[] ← to.class.CellInstance[erInstance: to.instance, instanceName: "microCycle", typeName: "MicroCycle", other: RoseCreate.GetOther[others, "microCycle"], interfaceNodes: ""];
[] ← to.class.CellInstance[erInstance: to.instance, instanceName: "instrDecode", typeName: "InstrDecode", other: RoseCreate.GetOther[others, "instrDecode"], interfaceNodes: ""];
[] ← to.class.CellInstance[erInstance: to.instance, instanceName: "interlock", typeName: "Interlock", other: RoseCreate.GetOther[others, "interlock"], interfaceNodes: ""];
[] ← to.class.CellInstance[erInstance: to.instance, instanceName: "controlPipe", typeName: "ControlPipe", other: RoseCreate.GetOther[others, "controlPipe"], interfaceNodes: ""];
[] ← to.class.CellInstance[erInstance: to.instance, instanceName: "misc", typeName: "Misc", other: RoseCreate.GetOther[others, "misc"], interfaceNodes: ""];
};
};
RegisterCells[];
END.