--CacheMInterface.Mesa
--created by RoseTranslate from CacheMInterface.Rose of May 22, 1984 8:23:40 pm PDT for Barth.pa at May 30, 1984 4:30:14 pm PDT
DIRECTORY
RoseTypes, RoseCreate, Dragon, SwitchTypes, NumTypes, EnumTypes, CacheMCAMDriver, CacheMCtl, CacheMRAMDriver, CacheMPads;
CacheMInterface: CEDAR PROGRAM
IMPORTS RoseCreate, NumTypes, EnumTypes, CacheMCAMDriver, CacheMCtl, CacheMRAMDriver, CacheMPads =
--Signal Type decls
MBusCommands: TYPE = Dragon.MBusCommands;
PBusFaults: TYPE = Dragon.PBusFaults;
PBusCommands: TYPE = Dragon.PBusCommands;
RegisterCells: PROC =
BEGIN
CreateMInterfacePorts[];
[] ← RoseCreate.RegisterCellClass[className: "MInterface",
expandProc: MInterfaceExpand,
ioCreator: CreateMInterfaceIO, initializer: NIL,
evals: [],
blackBox: NIL, stateToo: NIL,
ports: MInterfacePorts,
drivePrototype: NEW [MInterfaceDrive]];
END;
CreateMInterfacePorts: PROC = {MInterfacePorts ← RoseCreate.PortsFromFile["CacheMInterface.MInterface.rosePorts"]};
MInterfaceIORef: TYPE = REF MInterfaceIORec;
MInterfaceIORec: TYPE = MACHINE DEPENDENT RECORD [
fill0(0:0..14): [0..32767],
PhA(0:15..15): BOOLEAN,
fill1(1:0..14): [0..32767],
PhB(1:15..15): BOOLEAN,
fill2(2:0..14): [0..32767],
Vdd(2:15..15): BOOLEAN,
fill3(3:0..14): [0..32767],
Gnd(3:15..15): BOOLEAN,
fill4(4:0..14): [0..32767],
PadVdd(4:15..15): BOOLEAN,
fill5(5:0..14): [0..32767],
PadGnd(5:15..15): BOOLEAN,
fill6(6:0..14): [0..32767],
LatchBias(6:15..15): BOOLEAN,
MDataBA(7:0..31): ARRAY [0..2) OF CARDINAL,
fill8(9:0..11): [0..4095],
MCmdBA(9:12..15): MBusCommands,
fill9(10:0..14): [0..32767],
MNShared(10:15..15): BOOLEAN,
fill10(11:0..14): [0..32767],
MParityBA(11:15..15): BOOLEAN,
fill11(12:0..14): [0..32767],
MNError(12:15..15): BOOLEAN,
fill12(13:0..14): [0..32767],
MReadyBA(13:15..15): BOOLEAN,
fill13(14:0..14): [0..32767],
MRq(14:15..15): BOOLEAN,
fill14(15:0..14): [0..32767],
MNewRq(15:15..15): BOOLEAN,
fill15(16:0..14): [0..32767],
MGnt(16:15..15): BOOLEAN,
fill16(17:0..14): [0..32767],
ResetAB(17:15..15): BOOLEAN,
fill17(18:0..14): [0..32767],
DHoldAB(18:15..15): BOOLEAN,
fill18(19:0..14): [0..32767],
DShiftAB(19:15..15): BOOLEAN,
fill19(20:0..14): [0..32767],
DExecuteAB(20:15..15): BOOLEAN,
fill20(21:0..14): [0..32767],
DNSelectAB(21:15..15): BOOLEAN,
fill21(22:0..14): [0..32767],
DDataInAB(22:15..15): BOOLEAN,
fill22(23:0..14): [0..32767],
DDataOutAB(23:15..15): BOOLEAN,
fill23(24:0..14): [0..32767],
PhAb(24:15..15): BOOLEAN,
fill24(25:0..14): [0..32767],
nPhAb(25:15..15): BOOLEAN,
fill25(26:0..14): [0..32767],
PhBb(26:15..15): BOOLEAN,
fill26(27:0..14): [0..32767],
nPhBb(27:15..15): BOOLEAN,
fill27(28:0..14): [0..32767],
PhAh(28:15..15): BOOLEAN,
fill28(29:0..14): [0..32767],
PhBh(29:15..15): BOOLEAN,
fill29(30:0..14): [0..32767],
Resetb(30:15..15): BOOLEAN,
VirtualPage(31:0..31): ARRAY [0..2) OF CARDINAL,
fill31(33:0..9): [0..1023],
VirtualBlock(33:10..15): [0..63],
RealPage(34:0..31): ARRAY [0..2) OF CARDINAL,
nRealPage(36:0..31): ARRAY [0..2) OF CARDINAL,
fill34(38:0..9): [0..1023],
RealBlock(38:10..15): [0..63],
fill35(39:0..9): [0..1023],
nRealBlock(39:10..15): [0..63],
CAMPageAccess(40:0..383): PACKED ARRAY [0 .. 23] OF SwitchTypes.SwitchVal,
nCAMPageAccess(64:0..383): PACKED ARRAY [0 .. 23] OF SwitchTypes.SwitchVal,
CAMBlockAccess(88:0..95): PACKED ARRAY [0 .. 5] OF SwitchTypes.SwitchVal,
nCAMBlockAccess(94:0..95): PACKED ARRAY [0 .. 5] OF SwitchTypes.SwitchVal,
PBits(100:0..1055): PACKED ARRAY [0 .. 65] OF SwitchTypes.SwitchVal,
nPBits(166:0..1055): PACKED ARRAY [0 .. 65] OF SwitchTypes.SwitchVal,
MBits(232:0..1055): PACKED ARRAY [0 .. 65] OF SwitchTypes.SwitchVal,
nMBits(298:0..1055): PACKED ARRAY [0 .. 65] OF SwitchTypes.SwitchVal,
fill44(364:0..14): [0..32767],
nVirtualMatch(364:15..15): BOOLEAN,
fill45(365:0..14): [0..32767],
nMatchPageClean(365:15..15): BOOLEAN,
fill46(366:0..14): [0..32767],
nMatchCellShared(366:15..15): BOOLEAN,
fill47(367:0..14): [0..32767],
nMapValid(367:15..15): BOOLEAN,
fill48(368:0..14): [0..32767],
nRealMatch(368:15..15): BOOLEAN,
fill49(369:0..14): [0..32767],
nVictimClean(369:15..15): BOOLEAN,
fill50(370:0..7): [0..255],
CellAdr(370:8..15): [0..255],
fill51(371:0..7): [0..255],
nCellAdr(371:8..15): [0..255],
fill52(372:0..14): [0..32767],
VirtualAccess(372:15..15): BOOLEAN,
fill53(373:0..14): [0..32767],
nVirtualAccess(373:15..15): BOOLEAN,
fill54(374:0..14): [0..32767],
SelCell(374:15..15): BOOLEAN,
fill55(375:0..14): [0..32767],
SelVictimAdr(375:15..15): BOOLEAN,
fill56(376:0..14): [0..32767],
SelMapAdr(376:15..15): BOOLEAN,
fill57(377:0..14): [0..32767],
SelRealData(377:15..15): BOOLEAN,
fill58(378:0..14): [0..32767],
SelPageFlag(378:15..15): BOOLEAN,
fill59(379:0..14): [0..32767],
SelVictimData(379:15..15): BOOLEAN,
fill60(380:0..14): [0..32767],
SelRealAdr(380:15..15): BOOLEAN,
fill61(381:0..14): [0..32767],
FinishSharedStore(381:15..15): BOOLEAN,
VPValid(382:0..15): SwitchTypes.SwitchVal,
nVPValid(383:0..15): SwitchTypes.SwitchVal,
RPValid(384:0..15): SwitchTypes.SwitchVal,
nRPValid(385:0..15): SwitchTypes.SwitchVal,
RPDirty(386:0..15): SwitchTypes.SwitchVal,
nRPDirty(387:0..15): SwitchTypes.SwitchVal,
Master(388:0..15): SwitchTypes.SwitchVal,
nMaster(389:0..15): SwitchTypes.SwitchVal,
Shared(390:0..15): SwitchTypes.SwitchVal,
nShared(391:0..15): SwitchTypes.SwitchVal,
Victim(392:0..15): SwitchTypes.SwitchVal,
nVictim(393:0..15): SwitchTypes.SwitchVal,
TIP(394:0..15): SwitchTypes.SwitchVal,
nTIP(395:0..15): SwitchTypes.SwitchVal,
Broken(396:0..15): SwitchTypes.SwitchVal,
nBroken(397:0..15): SwitchTypes.SwitchVal,
fill78(398:0..14): [0..32767],
MAdrLow(398:15..15): BOOLEAN,
fill79(399:0..14): [0..32767],
nMAdrLow(399:15..15): BOOLEAN,
fill80(400:0..14): [0..32767],
VictimFeedback(400:15..15): BOOLEAN,
fill81(401:0..14): [0..32767],
nVictimFeedback(401:15..15): BOOLEAN,
fill82(402:0..14): [0..32767],
ShiftVictim(402:15..15): BOOLEAN,
fill83(403:0..14): [0..32767],
nShiftVictim(403:15..15): BOOLEAN,
fill84(404:0..14): [0..32767],
ForceDataSelect(404:15..15): BOOLEAN,
fill85(405:0..14): [0..32767],
MDoneAB(405:15..15): BOOLEAN,
fill86(406:0..14): [0..32767],
MHeldAB(406:15..15): BOOLEAN,
fill87(407:0..12): [0..8191],
MFaultAB(407:13..15): PBusFaults,
fill88(408:0..14): [0..32767],
PKillRequestB(408:15..15): BOOLEAN,
fill89(409:0..14): [0..32767],
PAdrHigh(409:15..15): BOOLEAN,
fill90(410:0..14): [0..32767],
PAdrLowToM(410:15..15): BOOLEAN,
fill91(411:0..11): [0..4095],
PCmdToMAB(411:12..15): PBusCommands,
fill92(412:0..14): [0..32767],
DoShiftBA(412:15..15): BOOLEAN,
fill93(413:0..14): [0..32767],
DoExecuteBA(413:15..15): BOOLEAN,
fill94(414:0..14): [0..32767],
DoHoldBA(414:15..15): BOOLEAN,
fill95(415:0..14): [0..32767],
ShiftDataToPCAM(415:15..15): BOOLEAN,
fill96(416:0..14): [0..32767],
ShiftDataToMCtlPads(416:15..15): BOOLEAN];
-- port indices:
MInterfaceCAMPageAccessPortIndex: CARDINAL = 36;
MInterfaceNCAMPageAccessPortIndex: CARDINAL = 37;
MInterfaceCAMBlockAccessPortIndex: CARDINAL = 38;
MInterfaceNCAMBlockAccessPortIndex: CARDINAL = 39;
MInterfacePBitsPortIndex: CARDINAL = 40;
MInterfaceNPBitsPortIndex: CARDINAL = 41;
MInterfaceMBitsPortIndex: CARDINAL = 42;
MInterfaceNMBitsPortIndex: CARDINAL = 43;
MInterfaceVPValidPortIndex: CARDINAL = 62;
MInterfaceNVPValidPortIndex: CARDINAL = 63;
MInterfaceRPValidPortIndex: CARDINAL = 64;
MInterfaceNRPValidPortIndex: CARDINAL = 65;
MInterfaceRPDirtyPortIndex: CARDINAL = 66;
MInterfaceNRPDirtyPortIndex: CARDINAL = 67;
MInterfaceMasterPortIndex: CARDINAL = 68;
MInterfaceNMasterPortIndex: CARDINAL = 69;
MInterfaceSharedPortIndex: CARDINAL = 70;
MInterfaceNSharedPortIndex: CARDINAL = 71;
MInterfaceVictimPortIndex: CARDINAL = 72;
MInterfaceNVictimPortIndex: CARDINAL = 73;
MInterfaceTIPPortIndex: CARDINAL = 74;
MInterfaceNTIPPortIndex: CARDINAL = 75;
MInterfaceBrokenPortIndex: CARDINAL = 76;
MInterfaceNBrokenPortIndex: CARDINAL = 77;
MInterfaceDrive: TYPE = MACHINE DEPENDENT RECORD [
fill0(0:0..14): [0 .. 32768),
PhA(0:15..15): BOOLEAN,
fill1(1:0..14): [0 .. 32768),
PhB(1:15..15): BOOLEAN,
fill2(2:0..14): [0 .. 32768),
Vdd(2:15..15): BOOLEAN,
fill3(3:0..14): [0 .. 32768),
Gnd(3:15..15): BOOLEAN,
fill4(4:0..14): [0 .. 32768),
PadVdd(4:15..15): BOOLEAN,
fill5(5:0..14): [0 .. 32768),
PadGnd(5:15..15): BOOLEAN,
fill6(6:0..14): [0 .. 32768),
LatchBias(6:15..15): BOOLEAN,
fill7(7:0..14): [0 .. 32768),
MDataBA(7:15..15): BOOLEAN,
fill8(8:0..14): [0 .. 32768),
MCmdBA(8:15..15): BOOLEAN,
fill9(9:0..14): [0 .. 32768),
MNShared(9:15..15): BOOLEAN,
fill10(10:0..14): [0 .. 32768),
MParityBA(10:15..15): BOOLEAN,
fill11(11:0..14): [0 .. 32768),
MNError(11:15..15): BOOLEAN,
fill12(12:0..14): [0 .. 32768),
MReadyBA(12:15..15): BOOLEAN,
fill13(13:0..14): [0 .. 32768),
MRq(13:15..15): BOOLEAN,
fill14(14:0..14): [0 .. 32768),
MNewRq(14:15..15): BOOLEAN,
fill15(15:0..14): [0 .. 32768),
MGnt(15:15..15): BOOLEAN,
fill16(16:0..14): [0 .. 32768),
ResetAB(16:15..15): BOOLEAN,
fill17(17:0..14): [0 .. 32768),
DHoldAB(17:15..15): BOOLEAN,
fill18(18:0..14): [0 .. 32768),
DShiftAB(18:15..15): BOOLEAN,
fill19(19:0..14): [0 .. 32768),
DExecuteAB(19:15..15): BOOLEAN,
fill20(20:0..14): [0 .. 32768),
DNSelectAB(20:15..15): BOOLEAN,
fill21(21:0..14): [0 .. 32768),
DDataInAB(21:15..15): BOOLEAN,
fill22(22:0..14): [0 .. 32768),
DDataOutAB(22:15..15): BOOLEAN,
fill23(23:0..14): [0 .. 32768),
PhAb(23:15..15): BOOLEAN,
fill24(24:0..14): [0 .. 32768),
nPhAb(24:15..15): BOOLEAN,
fill25(25:0..14): [0 .. 32768),
PhBb(25:15..15): BOOLEAN,
fill26(26:0..14): [0 .. 32768),
nPhBb(26:15..15): BOOLEAN,
fill27(27:0..14): [0 .. 32768),
PhAh(27:15..15): BOOLEAN,
fill28(28:0..14): [0 .. 32768),
PhBh(28:15..15): BOOLEAN,
fill29(29:0..14): [0 .. 32768),
Resetb(29:15..15): BOOLEAN,
fill30(30:0..14): [0 .. 32768),
VirtualPage(30:15..15): BOOLEAN,
fill31(31:0..14): [0 .. 32768),
VirtualBlock(31:15..15): BOOLEAN,
fill32(32:0..14): [0 .. 32768),
RealPage(32:15..15): BOOLEAN,
fill33(33:0..14): [0 .. 32768),
nRealPage(33:15..15): BOOLEAN,
fill34(34:0..14): [0 .. 32768),
RealBlock(34:15..15): BOOLEAN,
fill35(35:0..14): [0 .. 32768),
nRealBlock(35:15..15): BOOLEAN,
fill36(36:0..14): [0 .. 32768),
CAMPageAccess(36:15..15): BOOLEAN,
fill37(37:0..14): [0 .. 32768),
nCAMPageAccess(37:15..15): BOOLEAN,
fill38(38:0..14): [0 .. 32768),
CAMBlockAccess(38:15..15): BOOLEAN,
fill39(39:0..14): [0 .. 32768),
nCAMBlockAccess(39:15..15): BOOLEAN,
fill40(40:0..14): [0 .. 32768),
PBits(40:15..15): BOOLEAN,
fill41(41:0..14): [0 .. 32768),
nPBits(41:15..15): BOOLEAN,
fill42(42:0..14): [0 .. 32768),
MBits(42:15..15): BOOLEAN,
fill43(43:0..14): [0 .. 32768),
nMBits(43:15..15): BOOLEAN,
fill44(44:0..14): [0 .. 32768),
nVirtualMatch(44:15..15): BOOLEAN,
fill45(45:0..14): [0 .. 32768),
nMatchPageClean(45:15..15): BOOLEAN,
fill46(46:0..14): [0 .. 32768),
nMatchCellShared(46:15..15): BOOLEAN,
fill47(47:0..14): [0 .. 32768),
nMapValid(47:15..15): BOOLEAN,
fill48(48:0..14): [0 .. 32768),
nRealMatch(48:15..15): BOOLEAN,
fill49(49:0..14): [0 .. 32768),
nVictimClean(49:15..15): BOOLEAN,
fill50(50:0..14): [0 .. 32768),
CellAdr(50:15..15): BOOLEAN,
fill51(51:0..14): [0 .. 32768),
nCellAdr(51:15..15): BOOLEAN,
fill52(52:0..14): [0 .. 32768),
VirtualAccess(52:15..15): BOOLEAN,
fill53(53:0..14): [0 .. 32768),
nVirtualAccess(53:15..15): BOOLEAN,
fill54(54:0..14): [0 .. 32768),
SelCell(54:15..15): BOOLEAN,
fill55(55:0..14): [0 .. 32768),
SelVictimAdr(55:15..15): BOOLEAN,
fill56(56:0..14): [0 .. 32768),
SelMapAdr(56:15..15): BOOLEAN,
fill57(57:0..14): [0 .. 32768),
SelRealData(57:15..15): BOOLEAN,
fill58(58:0..14): [0 .. 32768),
SelPageFlag(58:15..15): BOOLEAN,
fill59(59:0..14): [0 .. 32768),
SelVictimData(59:15..15): BOOLEAN,
fill60(60:0..14): [0 .. 32768),
SelRealAdr(60:15..15): BOOLEAN,
fill61(61:0..14): [0 .. 32768),
FinishSharedStore(61:15..15): BOOLEAN,
fill62(62:0..14): [0 .. 32768),
VPValid(62:15..15): BOOLEAN,
fill63(63:0..14): [0 .. 32768),
nVPValid(63:15..15): BOOLEAN,
fill64(64:0..14): [0 .. 32768),
RPValid(64:15..15): BOOLEAN,
fill65(65:0..14): [0 .. 32768),
nRPValid(65:15..15): BOOLEAN,
fill66(66:0..14): [0 .. 32768),
RPDirty(66:15..15): BOOLEAN,
fill67(67:0..14): [0 .. 32768),
nRPDirty(67:15..15): BOOLEAN,
fill68(68:0..14): [0 .. 32768),
Master(68:15..15): BOOLEAN,
fill69(69:0..14): [0 .. 32768),
nMaster(69:15..15): BOOLEAN,
fill70(70:0..14): [0 .. 32768),
Shared(70:15..15): BOOLEAN,
fill71(71:0..14): [0 .. 32768),
nShared(71:15..15): BOOLEAN,
fill72(72:0..14): [0 .. 32768),
Victim(72:15..15): BOOLEAN,
fill73(73:0..14): [0 .. 32768),
nVictim(73:15..15): BOOLEAN,
fill74(74:0..14): [0 .. 32768),
TIP(74:15..15): BOOLEAN,
fill75(75:0..14): [0 .. 32768),
nTIP(75:15..15): BOOLEAN,
fill76(76:0..14): [0 .. 32768),
Broken(76:15..15): BOOLEAN,
fill77(77:0..14): [0 .. 32768),
nBroken(77:15..15): BOOLEAN,
fill78(78:0..14): [0 .. 32768),
MAdrLow(78:15..15): BOOLEAN,
fill79(79:0..14): [0 .. 32768),
nMAdrLow(79:15..15): BOOLEAN,
fill80(80:0..14): [0 .. 32768),
VictimFeedback(80:15..15): BOOLEAN,
fill81(81:0..14): [0 .. 32768),
nVictimFeedback(81:15..15): BOOLEAN,
fill82(82:0..14): [0 .. 32768),
ShiftVictim(82:15..15): BOOLEAN,
fill83(83:0..14): [0 .. 32768),
nShiftVictim(83:15..15): BOOLEAN,
fill84(84:0..14): [0 .. 32768),
ForceDataSelect(84:15..15): BOOLEAN,
fill85(85:0..14): [0 .. 32768),
MDoneAB(85:15..15): BOOLEAN,
fill86(86:0..14): [0 .. 32768),
MHeldAB(86:15..15): BOOLEAN,
fill87(87:0..14): [0 .. 32768),
MFaultAB(87:15..15): BOOLEAN,
fill88(88:0..14): [0 .. 32768),
PKillRequestB(88:15..15): BOOLEAN,
fill89(89:0..14): [0 .. 32768),
PAdrHigh(89:15..15): BOOLEAN,
fill90(90:0..14): [0 .. 32768),
PAdrLowToM(90:15..15): BOOLEAN,
fill91(91:0..14): [0 .. 32768),
PCmdToMAB(91:15..15): BOOLEAN,
fill92(92:0..14): [0 .. 32768),
DoShiftBA(92:15..15): BOOLEAN,
fill93(93:0..14): [0 .. 32768),
DoExecuteBA(93:15..15): BOOLEAN,
fill94(94:0..14): [0 .. 32768),
DoHoldBA(94:15..15): BOOLEAN,
fill95(95:0..14): [0 .. 32768),
ShiftDataToPCAM(95:15..15): BOOLEAN,
fill96(96:0..14): [0 .. 32768),
ShiftDataToMCtlPads(96:15..15): BOOLEAN];
MInterfaceExpand: ExpandProc = {
PrivateLookupNode: PROC [name: ROPE] RETURNS [node: Node] = {node ← RoseCreate.LookupNode[from: thisCell, path: LIST[name]]};
PhA: Node ← PrivateLookupNode["PhA"];
PhB: Node ← PrivateLookupNode["PhB"];
Vdd: Node ← PrivateLookupNode["Vdd"];
Gnd: Node ← PrivateLookupNode["Gnd"];
PadVdd: Node ← PrivateLookupNode["PadVdd"];
PadGnd: Node ← PrivateLookupNode["PadGnd"];
LatchBias: Node ← PrivateLookupNode["LatchBias"];
MDataBA: Node ← PrivateLookupNode["MDataBA"];
MCmdBA: Node ← PrivateLookupNode["MCmdBA"];
MNShared: Node ← PrivateLookupNode["MNShared"];
MParityBA: Node ← PrivateLookupNode["MParityBA"];
MNError: Node ← PrivateLookupNode["MNError"];
MReadyBA: Node ← PrivateLookupNode["MReadyBA"];
MRq: Node ← PrivateLookupNode["MRq"];
MNewRq: Node ← PrivateLookupNode["MNewRq"];
MGnt: Node ← PrivateLookupNode["MGnt"];
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"];
PhAb: Node ← PrivateLookupNode["PhAb"];
nPhAb: Node ← PrivateLookupNode["nPhAb"];
PhBb: Node ← PrivateLookupNode["PhBb"];
nPhBb: Node ← PrivateLookupNode["nPhBb"];
PhAh: Node ← PrivateLookupNode["PhAh"];
PhBh: Node ← PrivateLookupNode["PhBh"];
Resetb: Node ← PrivateLookupNode["Resetb"];
VirtualPage: Node ← PrivateLookupNode["VirtualPage"];
VirtualBlock: Node ← PrivateLookupNode["VirtualBlock"];
RealPage: Node ← PrivateLookupNode["RealPage"];
nRealPage: Node ← PrivateLookupNode["nRealPage"];
RealBlock: Node ← PrivateLookupNode["RealBlock"];
nRealBlock: Node ← PrivateLookupNode["nRealBlock"];
CAMPageAccess: Node ← PrivateLookupNode["CAMPageAccess"];
nCAMPageAccess: Node ← PrivateLookupNode["nCAMPageAccess"];
CAMBlockAccess: Node ← PrivateLookupNode["CAMBlockAccess"];
nCAMBlockAccess: Node ← PrivateLookupNode["nCAMBlockAccess"];
PBits: Node ← PrivateLookupNode["PBits"];
nPBits: Node ← PrivateLookupNode["nPBits"];
MBits: Node ← PrivateLookupNode["MBits"];
nMBits: Node ← PrivateLookupNode["nMBits"];
nVirtualMatch: Node ← PrivateLookupNode["nVirtualMatch"];
nMatchPageClean: Node ← PrivateLookupNode["nMatchPageClean"];
nMatchCellShared: Node ← PrivateLookupNode["nMatchCellShared"];
nMapValid: Node ← PrivateLookupNode["nMapValid"];
nRealMatch: Node ← PrivateLookupNode["nRealMatch"];
nVictimClean: Node ← PrivateLookupNode["nVictimClean"];
CellAdr: Node ← PrivateLookupNode["CellAdr"];
nCellAdr: Node ← PrivateLookupNode["nCellAdr"];
VirtualAccess: Node ← PrivateLookupNode["VirtualAccess"];
nVirtualAccess: Node ← PrivateLookupNode["nVirtualAccess"];
SelCell: Node ← PrivateLookupNode["SelCell"];
SelVictimAdr: Node ← PrivateLookupNode["SelVictimAdr"];
SelMapAdr: Node ← PrivateLookupNode["SelMapAdr"];
SelRealData: Node ← PrivateLookupNode["SelRealData"];
SelPageFlag: Node ← PrivateLookupNode["SelPageFlag"];
SelVictimData: Node ← PrivateLookupNode["SelVictimData"];
SelRealAdr: Node ← PrivateLookupNode["SelRealAdr"];
FinishSharedStore: Node ← PrivateLookupNode["FinishSharedStore"];
VPValid: Node ← PrivateLookupNode["VPValid"];
nVPValid: Node ← PrivateLookupNode["nVPValid"];
RPValid: Node ← PrivateLookupNode["RPValid"];
nRPValid: Node ← PrivateLookupNode["nRPValid"];
RPDirty: Node ← PrivateLookupNode["RPDirty"];
nRPDirty: Node ← PrivateLookupNode["nRPDirty"];
Master: Node ← PrivateLookupNode["Master"];
nMaster: Node ← PrivateLookupNode["nMaster"];
Shared: Node ← PrivateLookupNode["Shared"];
nShared: Node ← PrivateLookupNode["nShared"];
Victim: Node ← PrivateLookupNode["Victim"];
nVictim: Node ← PrivateLookupNode["nVictim"];
TIP: Node ← PrivateLookupNode["TIP"];
nTIP: Node ← PrivateLookupNode["nTIP"];
Broken: Node ← PrivateLookupNode["Broken"];
nBroken: Node ← PrivateLookupNode["nBroken"];
MAdrLow: Node ← PrivateLookupNode["MAdrLow"];
nMAdrLow: Node ← PrivateLookupNode["nMAdrLow"];
VictimFeedback: Node ← PrivateLookupNode["VictimFeedback"];
nVictimFeedback: Node ← PrivateLookupNode["nVictimFeedback"];
ShiftVictim: Node ← PrivateLookupNode["ShiftVictim"];
nShiftVictim: Node ← PrivateLookupNode["nShiftVictim"];
ForceDataSelect: Node ← PrivateLookupNode["ForceDataSelect"];
MDoneAB: Node ← PrivateLookupNode["MDoneAB"];
MHeldAB: Node ← PrivateLookupNode["MHeldAB"];
MFaultAB: Node ← PrivateLookupNode["MFaultAB"];
PKillRequestB: Node ← PrivateLookupNode["PKillRequestB"];
PAdrHigh: Node ← PrivateLookupNode["PAdrHigh"];
PAdrLowToM: Node ← PrivateLookupNode["PAdrLowToM"];
PCmdToMAB: Node ← PrivateLookupNode["PCmdToMAB"];
DoShiftBA: Node ← PrivateLookupNode["DoShiftBA"];
DoExecuteBA: Node ← PrivateLookupNode["DoExecuteBA"];
DoHoldBA: Node ← PrivateLookupNode["DoHoldBA"];
ShiftDataToPCAM: Node ← PrivateLookupNode["ShiftDataToPCAM"];
ShiftDataToMCtlPads: Node ← PrivateLookupNode["ShiftDataToMCtlPads"];
MDataI: Node ← RoseCreate.CreateNode[within: thisCell, name: "MDataI", type: NumTypes.NumType[32]];
NodeCreateHack1: PROC [name: ROPE] RETURNS [node: Node] = {node ← RoseCreate.CreateNode[within: thisCell, name: name, type: NumTypes.boolType]};
MDataDrive: Node ← NodeCreateHack1["MDataDrive"];
MDataIDrive: Node ← NodeCreateHack1["MDataIDrive"];
MDataPipeBypass: Node ← NodeCreateHack1["MDataPipeBypass"];
MDataPipeTransfer: Node ← NodeCreateHack1["MDataPipeTransfer"];
MParityI: Node ← NodeCreateHack1["MParityI"];
MCmdIn: Node ← RoseCreate.CreateNode[within: thisCell, name: "MCmdIn", type: EnumTypes.EnumType["Dragon.MBusCommands"]];
MCmdOutBA: Node ← RoseCreate.CreateNode[within: thisCell, name: "MCmdOutBA", type: EnumTypes.EnumType["Dragon.MBusCommands"]];
MCmdDrive: Node ← NodeCreateHack1["MCmdDrive"];
MCmdDriveToDataTransport: Node ← NodeCreateHack1["MCmdDriveToDataTransport"];
MCmdDriveToNoOp: Node ← NodeCreateHack1["MCmdDriveToNoOp"];
MNSharedSenseBA: Node ← NodeCreateHack1["MNSharedSenseBA"];
MNSharedDriveHigh: Node ← NodeCreateHack1["MNSharedDriveHigh"];
MNSharedDriveLow: Node ← NodeCreateHack1["MNSharedDriveLow"];
MNErrorDriveLow: Node ← NodeCreateHack1["MNErrorDriveLow"];
MReadySense: Node ← NodeCreateHack1["MReadySense"];
MRqIBA: Node ← NodeCreateHack1["MRqIBA"];
MNewRqIBA: Node ← NodeCreateHack1["MNewRqIBA"];
MNewRqEnableBA: Node ← NodeCreateHack1["MNewRqEnableBA"];
MGntSense: Node ← NodeCreateHack1["MGntSense"];
ShiftDataToMRAM: Node ← NodeCreateHack1["ShiftDataToMRAM"];
ShiftDataToMCtl: Node ← NodeCreateHack1["ShiftDataToMCtl"];
ShiftDataToMCAM: Node ← NodeCreateHack1["ShiftDataToMCAM"];
ShiftEqual: Node ← NodeCreateHack1["ShiftEqual"];
nShiftEqual: Node ← NodeCreateHack1["nShiftEqual"];
ShiftFeedBack: Node ← NodeCreateHack1["ShiftFeedBack"];
nShiftFeedBack: Node ← NodeCreateHack1["nShiftFeedBack"];
ShiftShift: Node ← NodeCreateHack1["ShiftShift"];
nShiftShift: Node ← NodeCreateHack1["nShiftShift"];
PageAccessToAccess: Node ← NodeCreateHack1["PageAccessToAccess"];
BlockAccessToAccess: Node ← NodeCreateHack1["BlockAccessToAccess"];
PageVirtualToAccess: Node ← NodeCreateHack1["PageVirtualToAccess"];
BlockVirtualToAccess: Node ← NodeCreateHack1["BlockVirtualToAccess"];
MatchToAccess: Node ← NodeCreateHack1["MatchToAccess"];
MDataToMatch: Node ← NodeCreateHack1["MDataToMatch"];
AccessToMatch: Node ← NodeCreateHack1["AccessToMatch"];
PageAccessToMData: Node ← NodeCreateHack1["PageAccessToMData"];
nPageAccessToMData: Node ← NodeCreateHack1["nPageAccessToMData"];
BlockAccessToMData: Node ← NodeCreateHack1["BlockAccessToMData"];
nBlockAccessToMData: Node ← NodeCreateHack1["nBlockAccessToMData"];
AccessToPageBlockAccess: Node ← NodeCreateHack1["AccessToPageBlockAccess"];
nAccessToPageBlockAccess: Node ← NodeCreateHack1["nAccessToPageBlockAccess"];
ShiftToPageBlockAccess: Node ← NodeCreateHack1["ShiftToPageBlockAccess"];
nShiftToPageBlockAccess: Node ← NodeCreateHack1["nShiftToPageBlockAccess"];
AccessDrive: Node ← NodeCreateHack1["AccessDrive"];
nAccessDrive: Node ← NodeCreateHack1["nAccessDrive"];
PageBlockAccessToShift: Node ← NodeCreateHack1["PageBlockAccessToShift"];
nPageBlockAccessToShift: Node ← NodeCreateHack1["nPageBlockAccessToShift"];
nCAMAccessPrecharge: Node ← NodeCreateHack1["nCAMAccessPrecharge"];
nMBitsPrecharge: Node ← NodeCreateHack1["nMBitsPrecharge"];
MuxRight: Node ← NodeCreateHack1["MuxRight"];
MuxLeft: Node ← NodeCreateHack1["MuxLeft"];
MBitsDrive: Node ← NodeCreateHack1["MBitsDrive"];
nMBitsDrive: Node ← NodeCreateHack1["nMBitsDrive"];
MRamRegToMDataI: Node ← NodeCreateHack1["MRamRegToMDataI"];
nMRamRegToMDataI: Node ← NodeCreateHack1["nMRamRegToMDataI"];
SenseMBits: Node ← NodeCreateHack1["SenseMBits"];
SenseMDataI: Node ← NodeCreateHack1["SenseMDataI"];
ParityIn: Node ← NodeCreateHack1["ParityIn"];
ParityOut: Node ← NodeCreateHack1["ParityOut"];
SensePBitsLeft: Node ← NodeCreateHack1["SensePBitsLeft"];
SensePBitsRight: Node ← NodeCreateHack1["SensePBitsRight"];
DrivePBits: Node ← NodeCreateHack1["DrivePBits"];
nDrivePBits: Node ← NodeCreateHack1["nDrivePBits"];
MRamRegToMBits: Node ← NodeCreateHack1["MRamRegToMBits"];
nMRamRegToMBits: Node ← NodeCreateHack1["nMRamRegToMBits"];
ShiftToMBits: Node ← NodeCreateHack1["ShiftToMBits"];
nShiftToMBits: Node ← NodeCreateHack1["nShiftToMBits"];
MBitsToShift: Node ← NodeCreateHack1["MBitsToShift"];
nMBitsToShift: Node ← NodeCreateHack1["nMBitsToShift"];
[] ← RoseCreate.CreateCell[within: thisCell, instanceName: "mCAMDriver", className: "MCAMDriver", interfaceNodes: ""];
[] ← RoseCreate.CreateCell[within: thisCell, instanceName: "mCtl", className: "MCtl", interfaceNodes: ""];
[] ← RoseCreate.CreateCell[within: thisCell, instanceName: "mRAMDriver", className: "MRAMDriver", interfaceNodes: ""];
[] ← RoseCreate.CreateCell[within: thisCell, instanceName: "mDataPads", className: "MDataPads", interfaceNodes: ""];
[] ← RoseCreate.CreateCell[within: thisCell, instanceName: "mCtlPads", className: "MCtlPads", interfaceNodes: ""];
};
CreateMInterfaceIO: IOCreator = {
cell.realCellStuff.switchIO ← NEW [MInterfaceIORec];
cell.realCellStuff.newIO ← NEW [MInterfaceIORec];
cell.realCellStuff.oldIO ← NEW [MInterfaceIORec];
};
MInterfacePorts: Ports ← NEW [PortsRep[97]];
RegisterCells[];
END.