--CacheMCtl.Mesa
--created by RoseTranslate from CacheMCtl.Rose of May 22, 1984 8:24:17 pm PDT for Barth.pa at May 30, 1984 4:29:31 pm PDT
DIRECTORY
RoseTypes, RoseCreate, Dragon, SwitchTypes, NumTypes, Mnemonics, CacheMCtlSequencer, CacheMCtlEntryCtl, CacheMCtlFlagCtl, CacheMCtlRAMCtl, CacheMCtlCAMCtl;
CacheMCtl: CEDAR PROGRAM
IMPORTS RoseCreate, NumTypes, Mnemonics, CacheMCtlSequencer, CacheMCtlEntryCtl, CacheMCtlFlagCtl, CacheMCtlRAMCtl, CacheMCtlCAMCtl =
--Signal Type decls
PBusFaults: TYPE = Dragon.PBusFaults;
PBusCommands: TYPE = Dragon.PBusCommands;
MBusCommands: TYPE = Dragon.MBusCommands;
RegisterCells: PROC =
BEGIN
CreateMCtlPorts[];
[] ← RoseCreate.RegisterCellClass[className: "MCtl",
expandProc: MCtlExpand,
ioCreator: CreateMCtlIO, initializer: NIL,
evals: [],
blackBox: NIL, stateToo: NIL,
ports: MCtlPorts,
drivePrototype: NEW [MCtlDrive]];
END;
CreateMCtlPorts: PROC = {MCtlPorts ← RoseCreate.PortsFromFile["CacheMCtl.MCtl.rosePorts"]};
MCtlIORef: TYPE = REF MCtlIORec;
MCtlIORec: TYPE = MACHINE DEPENDENT RECORD [
fill0(0:0..14): [0..32767],
Vdd(0:15..15): BOOLEAN,
fill1(1:0..14): [0..32767],
Gnd(1:15..15): BOOLEAN,
fill2(2:0..14): [0..32767],
LatchBias(2:15..15): BOOLEAN,
fill3(3:0..14): [0..32767],
PhAb(3:15..15): BOOLEAN,
fill4(4:0..14): [0..32767],
PhBb(4:15..15): BOOLEAN,
fill5(5:0..14): [0..32767],
PhAh(5:15..15): BOOLEAN,
fill6(6:0..14): [0..32767],
PhBh(6:15..15): BOOLEAN,
fill7(7:0..14): [0..32767],
Resetb(7:15..15): BOOLEAN,
fill8(8:0..14): [0..32767],
nVirtualMatch(8:15..15): BOOLEAN,
fill9(9:0..14): [0..32767],
nMatchPageClean(9:15..15): BOOLEAN,
fill10(10:0..14): [0..32767],
nMatchCellShared(10:15..15): BOOLEAN,
fill11(11:0..14): [0..32767],
nMapValid(11:15..15): BOOLEAN,
fill12(12:0..14): [0..32767],
nRealMatch(12:15..15): BOOLEAN,
fill13(13:0..14): [0..32767],
nVictimClean(13:15..15): BOOLEAN,
fill14(14:0..7): [0..255],
CellAdr(14:8..15): [0..255],
fill15(15:0..7): [0..255],
nCellAdr(15:8..15): [0..255],
fill16(16:0..14): [0..32767],
VirtualAccess(16:15..15): BOOLEAN,
fill17(17:0..14): [0..32767],
nVirtualAccess(17:15..15): BOOLEAN,
fill18(18:0..14): [0..32767],
SelCell(18:15..15): BOOLEAN,
fill19(19:0..14): [0..32767],
SelVictimAdr(19:15..15): BOOLEAN,
fill20(20:0..14): [0..32767],
SelMapAdr(20:15..15): BOOLEAN,
fill21(21:0..14): [0..32767],
SelRealData(21:15..15): BOOLEAN,
fill22(22:0..14): [0..32767],
SelPageFlag(22:15..15): BOOLEAN,
fill23(23:0..14): [0..32767],
SelVictimData(23:15..15): BOOLEAN,
fill24(24:0..14): [0..32767],
SelRealAdr(24:15..15): BOOLEAN,
fill25(25:0..14): [0..32767],
FinishSharedStore(25:15..15): BOOLEAN,
VPValid(26:0..15): SwitchTypes.SwitchVal,
nVPValid(27:0..15): SwitchTypes.SwitchVal,
RPValid(28:0..15): SwitchTypes.SwitchVal,
nRPValid(29:0..15): SwitchTypes.SwitchVal,
RPDirty(30:0..15): SwitchTypes.SwitchVal,
nRPDirty(31:0..15): SwitchTypes.SwitchVal,
Master(32:0..15): SwitchTypes.SwitchVal,
nMaster(33:0..15): SwitchTypes.SwitchVal,
Shared(34:0..15): SwitchTypes.SwitchVal,
nShared(35:0..15): SwitchTypes.SwitchVal,
Victim(36:0..15): SwitchTypes.SwitchVal,
nVictim(37:0..15): SwitchTypes.SwitchVal,
TIP(38:0..15): SwitchTypes.SwitchVal,
nTIP(39:0..15): SwitchTypes.SwitchVal,
Broken(40:0..15): SwitchTypes.SwitchVal,
nBroken(41:0..15): SwitchTypes.SwitchVal,
fill42(42:0..14): [0..32767],
MAdrLow(42:15..15): BOOLEAN,
fill43(43:0..14): [0..32767],
nMAdrLow(43:15..15): BOOLEAN,
fill44(44:0..14): [0..32767],
VictimFeedback(44:15..15): BOOLEAN,
fill45(45:0..14): [0..32767],
nVictimFeedback(45:15..15): BOOLEAN,
fill46(46:0..14): [0..32767],
ShiftVictim(46:15..15): BOOLEAN,
fill47(47:0..14): [0..32767],
nShiftVictim(47:15..15): BOOLEAN,
fill48(48:0..14): [0..32767],
ForceDataSelect(48:15..15): BOOLEAN,
fill49(49:0..14): [0..32767],
MDoneAB(49:15..15): BOOLEAN,
fill50(50:0..14): [0..32767],
MHeldAB(50:15..15): BOOLEAN,
fill51(51:0..12): [0..8191],
MFaultAB(51:13..15): PBusFaults,
fill52(52:0..14): [0..32767],
PKillRequestB(52:15..15): BOOLEAN,
fill53(53:0..14): [0..32767],
PAdrHigh(53:15..15): BOOLEAN,
fill54(54:0..14): [0..32767],
PAdrLowToM(54:15..15): BOOLEAN,
fill55(55:0..11): [0..4095],
PCmdToMAB(55:12..15): PBusCommands,
fill56(56:0..14): [0..32767],
DoShiftBA(56:15..15): BOOLEAN,
fill57(57:0..14): [0..32767],
DoExecuteBA(57:15..15): BOOLEAN,
fill58(58:0..14): [0..32767],
DoHoldBA(58:15..15): BOOLEAN,
MDataI(59:0..31): ARRAY [0..2) OF CARDINAL,
fill60(61:0..14): [0..32767],
MDataDrive(61:15..15): BOOLEAN,
fill61(62:0..14): [0..32767],
MDataIDrive(62:15..15): BOOLEAN,
fill62(63:0..14): [0..32767],
MDataPipeBypass(63:15..15): BOOLEAN,
fill63(64:0..14): [0..32767],
MDataPipeTransfer(64:15..15): BOOLEAN,
fill64(65:0..11): [0..4095],
MCmdIn(65:12..15): MBusCommands,
fill65(66:0..11): [0..4095],
MCmdOutBA(66:12..15): MBusCommands,
fill66(67:0..14): [0..32767],
MCmdDrive(67:15..15): BOOLEAN,
fill67(68:0..14): [0..32767],
MCmdDriveToDataTransport(68:15..15): BOOLEAN,
fill68(69:0..14): [0..32767],
MCmdDriveToNoOp(69:15..15): BOOLEAN,
fill69(70:0..14): [0..32767],
MNSharedSenseBA(70:15..15): BOOLEAN,
fill70(71:0..14): [0..32767],
MNSharedDriveHigh(71:15..15): BOOLEAN,
fill71(72:0..14): [0..32767],
MNSharedDriveLow(72:15..15): BOOLEAN,
fill72(73:0..14): [0..32767],
MNErrorDriveLow(73:15..15): BOOLEAN,
fill73(74:0..14): [0..32767],
MReadySense(74:15..15): BOOLEAN,
fill74(75:0..14): [0..32767],
MRqIBA(75:15..15): BOOLEAN,
fill75(76:0..14): [0..32767],
MNewRqIBA(76:15..15): BOOLEAN,
fill76(77:0..14): [0..32767],
MNewRqEnableBA(77:15..15): BOOLEAN,
fill77(78:0..14): [0..32767],
MGntSense(78:15..15): BOOLEAN,
fill78(79:0..14): [0..32767],
ShiftDataToMCtl(79:15..15): BOOLEAN,
fill79(80:0..14): [0..32767],
ShiftDataToMCAM(80:15..15): BOOLEAN,
fill80(81:0..14): [0..32767],
ShiftEqual(81:15..15): BOOLEAN,
fill81(82:0..14): [0..32767],
nShiftEqual(82:15..15): BOOLEAN,
fill82(83:0..14): [0..32767],
ShiftFeedBack(83:15..15): BOOLEAN,
fill83(84:0..14): [0..32767],
nShiftFeedBack(84:15..15): BOOLEAN,
fill84(85:0..14): [0..32767],
ShiftShift(85:15..15): BOOLEAN,
fill85(86:0..14): [0..32767],
nShiftShift(86:15..15): BOOLEAN,
fill86(87:0..14): [0..32767],
PageAccessToAccess(87:15..15): BOOLEAN,
fill87(88:0..14): [0..32767],
BlockAccessToAccess(88:15..15): BOOLEAN,
fill88(89:0..14): [0..32767],
PageVirtualToAccess(89:15..15): BOOLEAN,
fill89(90:0..14): [0..32767],
BlockVirtualToAccess(90:15..15): BOOLEAN,
fill90(91:0..14): [0..32767],
MatchToAccess(91:15..15): BOOLEAN,
fill91(92:0..14): [0..32767],
MDataToMatch(92:15..15): BOOLEAN,
fill92(93:0..14): [0..32767],
AccessToMatch(93:15..15): BOOLEAN,
fill93(94:0..14): [0..32767],
PageAccessToMData(94:15..15): BOOLEAN,
fill94(95:0..14): [0..32767],
nPageAccessToMData(95:15..15): BOOLEAN,
fill95(96:0..14): [0..32767],
BlockAccessToMData(96:15..15): BOOLEAN,
fill96(97:0..14): [0..32767],
nBlockAccessToMData(97:15..15): BOOLEAN,
fill97(98:0..14): [0..32767],
AccessToPageBlockAccess(98:15..15): BOOLEAN,
fill98(99:0..14): [0..32767],
nAccessToPageBlockAccess(99:15..15): BOOLEAN,
fill99(100:0..14): [0..32767],
ShiftToPageBlockAccess(100:15..15): BOOLEAN,
fill100(101:0..14): [0..32767],
nShiftToPageBlockAccess(101:15..15): BOOLEAN,
fill101(102:0..14): [0..32767],
AccessDrive(102:15..15): BOOLEAN,
fill102(103:0..14): [0..32767],
nAccessDrive(103:15..15): BOOLEAN,
fill103(104:0..14): [0..32767],
PageBlockAccessToShift(104:15..15): BOOLEAN,
fill104(105:0..14): [0..32767],
nPageBlockAccessToShift(105:15..15): BOOLEAN,
fill105(106:0..14): [0..32767],
nCAMAccessPrecharge(106:15..15): BOOLEAN,
fill106(107:0..14): [0..32767],
nMBitsPrecharge(107:15..15): BOOLEAN,
fill107(108:0..14): [0..32767],
MuxRight(108:15..15): BOOLEAN,
fill108(109:0..14): [0..32767],
MuxLeft(109:15..15): BOOLEAN,
fill109(110:0..14): [0..32767],
MBitsDrive(110:15..15): BOOLEAN,
fill110(111:0..14): [0..32767],
nMBitsDrive(111:15..15): BOOLEAN,
fill111(112:0..14): [0..32767],
MRamRegToMDataI(112:15..15): BOOLEAN,
fill112(113:0..14): [0..32767],
nMRamRegToMDataI(113:15..15): BOOLEAN,
fill113(114:0..14): [0..32767],
SenseMBits(114:15..15): BOOLEAN,
fill114(115:0..14): [0..32767],
SenseMDataI(115:15..15): BOOLEAN,
fill115(116:0..14): [0..32767],
ParityIn(116:15..15): BOOLEAN,
fill116(117:0..14): [0..32767],
ParityOut(117:15..15): BOOLEAN,
fill117(118:0..14): [0..32767],
SensePBitsLeft(118:15..15): BOOLEAN,
fill118(119:0..14): [0..32767],
SensePBitsRight(119:15..15): BOOLEAN,
fill119(120:0..14): [0..32767],
DrivePBits(120:15..15): BOOLEAN,
fill120(121:0..14): [0..32767],
nDrivePBits(121:15..15): BOOLEAN,
fill121(122:0..14): [0..32767],
MRamRegToMBits(122:15..15): BOOLEAN,
fill122(123:0..14): [0..32767],
nMRamRegToMBits(123:15..15): BOOLEAN,
fill123(124:0..14): [0..32767],
ShiftToMBits(124:15..15): BOOLEAN,
fill124(125:0..14): [0..32767],
nShiftToMBits(125:15..15): BOOLEAN,
fill125(126:0..14): [0..32767],
MBitsToShift(126:15..15): BOOLEAN,
fill126(127:0..14): [0..32767],
nMBitsToShift(127:15..15): BOOLEAN];
-- port indices:
MCtlVPValidPortIndex: CARDINAL = 26;
MCtlNVPValidPortIndex: CARDINAL = 27;
MCtlRPValidPortIndex: CARDINAL = 28;
MCtlNRPValidPortIndex: CARDINAL = 29;
MCtlRPDirtyPortIndex: CARDINAL = 30;
MCtlNRPDirtyPortIndex: CARDINAL = 31;
MCtlMasterPortIndex: CARDINAL = 32;
MCtlNMasterPortIndex: CARDINAL = 33;
MCtlSharedPortIndex: CARDINAL = 34;
MCtlNSharedPortIndex: CARDINAL = 35;
MCtlVictimPortIndex: CARDINAL = 36;
MCtlNVictimPortIndex: CARDINAL = 37;
MCtlTIPPortIndex: CARDINAL = 38;
MCtlNTIPPortIndex: CARDINAL = 39;
MCtlBrokenPortIndex: CARDINAL = 40;
MCtlNBrokenPortIndex: CARDINAL = 41;
MCtlDrive: TYPE = MACHINE DEPENDENT RECORD [
fill0(0:0..14): [0 .. 32768),
Vdd(0:15..15): BOOLEAN,
fill1(1:0..14): [0 .. 32768),
Gnd(1:15..15): BOOLEAN,
fill2(2:0..14): [0 .. 32768),
LatchBias(2:15..15): BOOLEAN,
fill3(3:0..14): [0 .. 32768),
PhAb(3:15..15): BOOLEAN,
fill4(4:0..14): [0 .. 32768),
PhBb(4:15..15): BOOLEAN,
fill5(5:0..14): [0 .. 32768),
PhAh(5:15..15): BOOLEAN,
fill6(6:0..14): [0 .. 32768),
PhBh(6:15..15): BOOLEAN,
fill7(7:0..14): [0 .. 32768),
Resetb(7:15..15): BOOLEAN,
fill8(8:0..14): [0 .. 32768),
nVirtualMatch(8:15..15): BOOLEAN,
fill9(9:0..14): [0 .. 32768),
nMatchPageClean(9:15..15): BOOLEAN,
fill10(10:0..14): [0 .. 32768),
nMatchCellShared(10:15..15): BOOLEAN,
fill11(11:0..14): [0 .. 32768),
nMapValid(11:15..15): BOOLEAN,
fill12(12:0..14): [0 .. 32768),
nRealMatch(12:15..15): BOOLEAN,
fill13(13:0..14): [0 .. 32768),
nVictimClean(13:15..15): BOOLEAN,
fill14(14:0..14): [0 .. 32768),
CellAdr(14:15..15): BOOLEAN,
fill15(15:0..14): [0 .. 32768),
nCellAdr(15:15..15): BOOLEAN,
fill16(16:0..14): [0 .. 32768),
VirtualAccess(16:15..15): BOOLEAN,
fill17(17:0..14): [0 .. 32768),
nVirtualAccess(17:15..15): BOOLEAN,
fill18(18:0..14): [0 .. 32768),
SelCell(18:15..15): BOOLEAN,
fill19(19:0..14): [0 .. 32768),
SelVictimAdr(19:15..15): BOOLEAN,
fill20(20:0..14): [0 .. 32768),
SelMapAdr(20:15..15): BOOLEAN,
fill21(21:0..14): [0 .. 32768),
SelRealData(21:15..15): BOOLEAN,
fill22(22:0..14): [0 .. 32768),
SelPageFlag(22:15..15): BOOLEAN,
fill23(23:0..14): [0 .. 32768),
SelVictimData(23:15..15): BOOLEAN,
fill24(24:0..14): [0 .. 32768),
SelRealAdr(24:15..15): BOOLEAN,
fill25(25:0..14): [0 .. 32768),
FinishSharedStore(25:15..15): BOOLEAN,
fill26(26:0..14): [0 .. 32768),
VPValid(26:15..15): BOOLEAN,
fill27(27:0..14): [0 .. 32768),
nVPValid(27:15..15): BOOLEAN,
fill28(28:0..14): [0 .. 32768),
RPValid(28:15..15): BOOLEAN,
fill29(29:0..14): [0 .. 32768),
nRPValid(29:15..15): BOOLEAN,
fill30(30:0..14): [0 .. 32768),
RPDirty(30:15..15): BOOLEAN,
fill31(31:0..14): [0 .. 32768),
nRPDirty(31:15..15): BOOLEAN,
fill32(32:0..14): [0 .. 32768),
Master(32:15..15): BOOLEAN,
fill33(33:0..14): [0 .. 32768),
nMaster(33:15..15): BOOLEAN,
fill34(34:0..14): [0 .. 32768),
Shared(34:15..15): BOOLEAN,
fill35(35:0..14): [0 .. 32768),
nShared(35:15..15): BOOLEAN,
fill36(36:0..14): [0 .. 32768),
Victim(36:15..15): BOOLEAN,
fill37(37:0..14): [0 .. 32768),
nVictim(37:15..15): BOOLEAN,
fill38(38:0..14): [0 .. 32768),
TIP(38:15..15): BOOLEAN,
fill39(39:0..14): [0 .. 32768),
nTIP(39:15..15): BOOLEAN,
fill40(40:0..14): [0 .. 32768),
Broken(40:15..15): BOOLEAN,
fill41(41:0..14): [0 .. 32768),
nBroken(41:15..15): BOOLEAN,
fill42(42:0..14): [0 .. 32768),
MAdrLow(42:15..15): BOOLEAN,
fill43(43:0..14): [0 .. 32768),
nMAdrLow(43:15..15): BOOLEAN,
fill44(44:0..14): [0 .. 32768),
VictimFeedback(44:15..15): BOOLEAN,
fill45(45:0..14): [0 .. 32768),
nVictimFeedback(45:15..15): BOOLEAN,
fill46(46:0..14): [0 .. 32768),
ShiftVictim(46:15..15): BOOLEAN,
fill47(47:0..14): [0 .. 32768),
nShiftVictim(47:15..15): BOOLEAN,
fill48(48:0..14): [0 .. 32768),
ForceDataSelect(48:15..15): BOOLEAN,
fill49(49:0..14): [0 .. 32768),
MDoneAB(49:15..15): BOOLEAN,
fill50(50:0..14): [0 .. 32768),
MHeldAB(50:15..15): BOOLEAN,
fill51(51:0..14): [0 .. 32768),
MFaultAB(51:15..15): BOOLEAN,
fill52(52:0..14): [0 .. 32768),
PKillRequestB(52:15..15): BOOLEAN,
fill53(53:0..14): [0 .. 32768),
PAdrHigh(53:15..15): BOOLEAN,
fill54(54:0..14): [0 .. 32768),
PAdrLowToM(54:15..15): BOOLEAN,
fill55(55:0..14): [0 .. 32768),
PCmdToMAB(55:15..15): BOOLEAN,
fill56(56:0..14): [0 .. 32768),
DoShiftBA(56:15..15): BOOLEAN,
fill57(57:0..14): [0 .. 32768),
DoExecuteBA(57:15..15): BOOLEAN,
fill58(58:0..14): [0 .. 32768),
DoHoldBA(58:15..15): BOOLEAN,
fill59(59:0..14): [0 .. 32768),
MDataI(59:15..15): BOOLEAN,
fill60(60:0..14): [0 .. 32768),
MDataDrive(60:15..15): BOOLEAN,
fill61(61:0..14): [0 .. 32768),
MDataIDrive(61:15..15): BOOLEAN,
fill62(62:0..14): [0 .. 32768),
MDataPipeBypass(62:15..15): BOOLEAN,
fill63(63:0..14): [0 .. 32768),
MDataPipeTransfer(63:15..15): BOOLEAN,
fill64(64:0..14): [0 .. 32768),
MCmdIn(64:15..15): BOOLEAN,
fill65(65:0..14): [0 .. 32768),
MCmdOutBA(65:15..15): BOOLEAN,
fill66(66:0..14): [0 .. 32768),
MCmdDrive(66:15..15): BOOLEAN,
fill67(67:0..14): [0 .. 32768),
MCmdDriveToDataTransport(67:15..15): BOOLEAN,
fill68(68:0..14): [0 .. 32768),
MCmdDriveToNoOp(68:15..15): BOOLEAN,
fill69(69:0..14): [0 .. 32768),
MNSharedSenseBA(69:15..15): BOOLEAN,
fill70(70:0..14): [0 .. 32768),
MNSharedDriveHigh(70:15..15): BOOLEAN,
fill71(71:0..14): [0 .. 32768),
MNSharedDriveLow(71:15..15): BOOLEAN,
fill72(72:0..14): [0 .. 32768),
MNErrorDriveLow(72:15..15): BOOLEAN,
fill73(73:0..14): [0 .. 32768),
MReadySense(73:15..15): BOOLEAN,
fill74(74:0..14): [0 .. 32768),
MRqIBA(74:15..15): BOOLEAN,
fill75(75:0..14): [0 .. 32768),
MNewRqIBA(75:15..15): BOOLEAN,
fill76(76:0..14): [0 .. 32768),
MNewRqEnableBA(76:15..15): BOOLEAN,
fill77(77:0..14): [0 .. 32768),
MGntSense(77:15..15): BOOLEAN,
fill78(78:0..14): [0 .. 32768),
ShiftDataToMCtl(78:15..15): BOOLEAN,
fill79(79:0..14): [0 .. 32768),
ShiftDataToMCAM(79:15..15): BOOLEAN,
fill80(80:0..14): [0 .. 32768),
ShiftEqual(80:15..15): BOOLEAN,
fill81(81:0..14): [0 .. 32768),
nShiftEqual(81:15..15): BOOLEAN,
fill82(82:0..14): [0 .. 32768),
ShiftFeedBack(82:15..15): BOOLEAN,
fill83(83:0..14): [0 .. 32768),
nShiftFeedBack(83:15..15): BOOLEAN,
fill84(84:0..14): [0 .. 32768),
ShiftShift(84:15..15): BOOLEAN,
fill85(85:0..14): [0 .. 32768),
nShiftShift(85:15..15): BOOLEAN,
fill86(86:0..14): [0 .. 32768),
PageAccessToAccess(86:15..15): BOOLEAN,
fill87(87:0..14): [0 .. 32768),
BlockAccessToAccess(87:15..15): BOOLEAN,
fill88(88:0..14): [0 .. 32768),
PageVirtualToAccess(88:15..15): BOOLEAN,
fill89(89:0..14): [0 .. 32768),
BlockVirtualToAccess(89:15..15): BOOLEAN,
fill90(90:0..14): [0 .. 32768),
MatchToAccess(90:15..15): BOOLEAN,
fill91(91:0..14): [0 .. 32768),
MDataToMatch(91:15..15): BOOLEAN,
fill92(92:0..14): [0 .. 32768),
AccessToMatch(92:15..15): BOOLEAN,
fill93(93:0..14): [0 .. 32768),
PageAccessToMData(93:15..15): BOOLEAN,
fill94(94:0..14): [0 .. 32768),
nPageAccessToMData(94:15..15): BOOLEAN,
fill95(95:0..14): [0 .. 32768),
BlockAccessToMData(95:15..15): BOOLEAN,
fill96(96:0..14): [0 .. 32768),
nBlockAccessToMData(96:15..15): BOOLEAN,
fill97(97:0..14): [0 .. 32768),
AccessToPageBlockAccess(97:15..15): BOOLEAN,
fill98(98:0..14): [0 .. 32768),
nAccessToPageBlockAccess(98:15..15): BOOLEAN,
fill99(99:0..14): [0 .. 32768),
ShiftToPageBlockAccess(99:15..15): BOOLEAN,
fill100(100:0..14): [0 .. 32768),
nShiftToPageBlockAccess(100:15..15): BOOLEAN,
fill101(101:0..14): [0 .. 32768),
AccessDrive(101:15..15): BOOLEAN,
fill102(102:0..14): [0 .. 32768),
nAccessDrive(102:15..15): BOOLEAN,
fill103(103:0..14): [0 .. 32768),
PageBlockAccessToShift(103:15..15): BOOLEAN,
fill104(104:0..14): [0 .. 32768),
nPageBlockAccessToShift(104:15..15): BOOLEAN,
fill105(105:0..14): [0 .. 32768),
nCAMAccessPrecharge(105:15..15): BOOLEAN,
fill106(106:0..14): [0 .. 32768),
nMBitsPrecharge(106:15..15): BOOLEAN,
fill107(107:0..14): [0 .. 32768),
MuxRight(107:15..15): BOOLEAN,
fill108(108:0..14): [0 .. 32768),
MuxLeft(108:15..15): BOOLEAN,
fill109(109:0..14): [0 .. 32768),
MBitsDrive(109:15..15): BOOLEAN,
fill110(110:0..14): [0 .. 32768),
nMBitsDrive(110:15..15): BOOLEAN,
fill111(111:0..14): [0 .. 32768),
MRamRegToMDataI(111:15..15): BOOLEAN,
fill112(112:0..14): [0 .. 32768),
nMRamRegToMDataI(112:15..15): BOOLEAN,
fill113(113:0..14): [0 .. 32768),
SenseMBits(113:15..15): BOOLEAN,
fill114(114:0..14): [0 .. 32768),
SenseMDataI(114:15..15): BOOLEAN,
fill115(115:0..14): [0 .. 32768),
ParityIn(115:15..15): BOOLEAN,
fill116(116:0..14): [0 .. 32768),
ParityOut(116:15..15): BOOLEAN,
fill117(117:0..14): [0 .. 32768),
SensePBitsLeft(117:15..15): BOOLEAN,
fill118(118:0..14): [0 .. 32768),
SensePBitsRight(118:15..15): BOOLEAN,
fill119(119:0..14): [0 .. 32768),
DrivePBits(119:15..15): BOOLEAN,
fill120(120:0..14): [0 .. 32768),
nDrivePBits(120:15..15): BOOLEAN,
fill121(121:0..14): [0 .. 32768),
MRamRegToMBits(121:15..15): BOOLEAN,
fill122(122:0..14): [0 .. 32768),
nMRamRegToMBits(122:15..15): BOOLEAN,
fill123(123:0..14): [0 .. 32768),
ShiftToMBits(123:15..15): BOOLEAN,
fill124(124:0..14): [0 .. 32768),
nShiftToMBits(124:15..15): BOOLEAN,
fill125(125:0..14): [0 .. 32768),
MBitsToShift(125:15..15): BOOLEAN,
fill126(126:0..14): [0 .. 32768),
nMBitsToShift(126:15..15): BOOLEAN];
MCtlExpand: ExpandProc = {
PrivateLookupNode: PROC [name: ROPE] RETURNS [node: Node] = {node ← RoseCreate.LookupNode[from: thisCell, path: LIST[name]]};
Vdd: Node ← PrivateLookupNode["Vdd"];
Gnd: Node ← PrivateLookupNode["Gnd"];
LatchBias: Node ← PrivateLookupNode["LatchBias"];
PhAb: Node ← PrivateLookupNode["PhAb"];
PhBb: Node ← PrivateLookupNode["PhBb"];
PhAh: Node ← PrivateLookupNode["PhAh"];
PhBh: Node ← PrivateLookupNode["PhBh"];
Resetb: Node ← PrivateLookupNode["Resetb"];
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"];
MDataI: Node ← PrivateLookupNode["MDataI"];
MDataDrive: Node ← PrivateLookupNode["MDataDrive"];
MDataIDrive: Node ← PrivateLookupNode["MDataIDrive"];
MDataPipeBypass: Node ← PrivateLookupNode["MDataPipeBypass"];
MDataPipeTransfer: Node ← PrivateLookupNode["MDataPipeTransfer"];
MCmdIn: Node ← PrivateLookupNode["MCmdIn"];
MCmdOutBA: Node ← PrivateLookupNode["MCmdOutBA"];
MCmdDrive: Node ← PrivateLookupNode["MCmdDrive"];
MCmdDriveToDataTransport: Node ← PrivateLookupNode["MCmdDriveToDataTransport"];
MCmdDriveToNoOp: Node ← PrivateLookupNode["MCmdDriveToNoOp"];
MNSharedSenseBA: Node ← PrivateLookupNode["MNSharedSenseBA"];
MNSharedDriveHigh: Node ← PrivateLookupNode["MNSharedDriveHigh"];
MNSharedDriveLow: Node ← PrivateLookupNode["MNSharedDriveLow"];
MNErrorDriveLow: Node ← PrivateLookupNode["MNErrorDriveLow"];
MReadySense: Node ← PrivateLookupNode["MReadySense"];
MRqIBA: Node ← PrivateLookupNode["MRqIBA"];
MNewRqIBA: Node ← PrivateLookupNode["MNewRqIBA"];
MNewRqEnableBA: Node ← PrivateLookupNode["MNewRqEnableBA"];
MGntSense: Node ← PrivateLookupNode["MGntSense"];
ShiftDataToMCtl: Node ← PrivateLookupNode["ShiftDataToMCtl"];
ShiftDataToMCAM: Node ← PrivateLookupNode["ShiftDataToMCAM"];
ShiftEqual: Node ← PrivateLookupNode["ShiftEqual"];
nShiftEqual: Node ← PrivateLookupNode["nShiftEqual"];
ShiftFeedBack: Node ← PrivateLookupNode["ShiftFeedBack"];
nShiftFeedBack: Node ← PrivateLookupNode["nShiftFeedBack"];
ShiftShift: Node ← PrivateLookupNode["ShiftShift"];
nShiftShift: Node ← PrivateLookupNode["nShiftShift"];
PageAccessToAccess: Node ← PrivateLookupNode["PageAccessToAccess"];
BlockAccessToAccess: Node ← PrivateLookupNode["BlockAccessToAccess"];
PageVirtualToAccess: Node ← PrivateLookupNode["PageVirtualToAccess"];
BlockVirtualToAccess: Node ← PrivateLookupNode["BlockVirtualToAccess"];
MatchToAccess: Node ← PrivateLookupNode["MatchToAccess"];
MDataToMatch: Node ← PrivateLookupNode["MDataToMatch"];
AccessToMatch: Node ← PrivateLookupNode["AccessToMatch"];
PageAccessToMData: Node ← PrivateLookupNode["PageAccessToMData"];
nPageAccessToMData: Node ← PrivateLookupNode["nPageAccessToMData"];
BlockAccessToMData: Node ← PrivateLookupNode["BlockAccessToMData"];
nBlockAccessToMData: Node ← PrivateLookupNode["nBlockAccessToMData"];
AccessToPageBlockAccess: Node ← PrivateLookupNode["AccessToPageBlockAccess"];
nAccessToPageBlockAccess: Node ← PrivateLookupNode["nAccessToPageBlockAccess"];
ShiftToPageBlockAccess: Node ← PrivateLookupNode["ShiftToPageBlockAccess"];
nShiftToPageBlockAccess: Node ← PrivateLookupNode["nShiftToPageBlockAccess"];
AccessDrive: Node ← PrivateLookupNode["AccessDrive"];
nAccessDrive: Node ← PrivateLookupNode["nAccessDrive"];
PageBlockAccessToShift: Node ← PrivateLookupNode["PageBlockAccessToShift"];
nPageBlockAccessToShift: Node ← PrivateLookupNode["nPageBlockAccessToShift"];
nCAMAccessPrecharge: Node ← PrivateLookupNode["nCAMAccessPrecharge"];
nMBitsPrecharge: Node ← PrivateLookupNode["nMBitsPrecharge"];
MuxRight: Node ← PrivateLookupNode["MuxRight"];
MuxLeft: Node ← PrivateLookupNode["MuxLeft"];
MBitsDrive: Node ← PrivateLookupNode["MBitsDrive"];
nMBitsDrive: Node ← PrivateLookupNode["nMBitsDrive"];
MRamRegToMDataI: Node ← PrivateLookupNode["MRamRegToMDataI"];
nMRamRegToMDataI: Node ← PrivateLookupNode["nMRamRegToMDataI"];
SenseMBits: Node ← PrivateLookupNode["SenseMBits"];
SenseMDataI: Node ← PrivateLookupNode["SenseMDataI"];
ParityIn: Node ← PrivateLookupNode["ParityIn"];
ParityOut: Node ← PrivateLookupNode["ParityOut"];
SensePBitsLeft: Node ← PrivateLookupNode["SensePBitsLeft"];
SensePBitsRight: Node ← PrivateLookupNode["SensePBitsRight"];
DrivePBits: Node ← PrivateLookupNode["DrivePBits"];
nDrivePBits: Node ← PrivateLookupNode["nDrivePBits"];
MRamRegToMBits: Node ← PrivateLookupNode["MRamRegToMBits"];
nMRamRegToMBits: Node ← PrivateLookupNode["nMRamRegToMBits"];
ShiftToMBits: Node ← PrivateLookupNode["ShiftToMBits"];
nShiftToMBits: Node ← PrivateLookupNode["nShiftToMBits"];
MBitsToShift: Node ← PrivateLookupNode["MBitsToShift"];
nMBitsToShift: Node ← PrivateLookupNode["nMBitsToShift"];
NodeCreateHack1: PROC [name: ROPE] RETURNS [node: Node] = {node ← RoseCreate.CreateNode[within: thisCell, name: name, type: NumTypes.boolType]};
ShiftDataToFlagCtl: Node ← NodeCreateHack1["ShiftDataToFlagCtl"];
ShiftDataToSequencer: Node ← NodeCreateHack1["ShiftDataToSequencer"];
ShiftDataToEntryCtl: Node ← NodeCreateHack1["ShiftDataToEntryCtl"];
ShiftDataToCAMCtl: Node ← NodeCreateHack1["ShiftDataToCAMCtl"];
ShiftExecute: Node ← NodeCreateHack1["ShiftExecute"];
nShiftExecute: Node ← NodeCreateHack1["nShiftExecute"];
ReadEntry: Node ← NodeCreateHack1["ReadEntry"];
WriteEntry: Node ← NodeCreateHack1["WriteEntry"];
CAMMDataIToMatchReg: Node ← NodeCreateHack1["CAMMDataIToMatchReg"];
CAMGetAdrRefresh: Node ← NodeCreateHack1["CAMGetAdrRefresh"];
CAMGetAddress: Node ← NodeCreateHack1["CAMGetAddress"];
CAMPageAccessToMDataI: Node ← NodeCreateHack1["CAMPageAccessToMDataI"];
CAMLowBitsAccessToMDataI: Node ← NodeCreateHack1["CAMLowBitsAccessToMDataI"];
CAMAccessToMatch: Node ← NodeCreateHack1["CAMAccessToMatch"];
CAMMatchToAccess: Node ← NodeCreateHack1["CAMMatchToAccess"];
CAMVirtualAddressToAccess: Node ← NodeCreateHack1["CAMVirtualAddressToAccess"];
CAMDriveCAMAccess: Node ← NodeCreateHack1["CAMDriveCAMAccess"];
RAMMDataIToMRAMReg: Node ← NodeCreateHack1["RAMMDataIToMRAMReg"];
RAMMBitsToMRAMReg: Node ← NodeCreateHack1["RAMMBitsToMRAMReg"];
RAMMRAMRegToMDataI: Node ← NodeCreateHack1["RAMMRAMRegToMDataI"];
RAMMRAMRegToMBits: Node ← NodeCreateHack1["RAMMRAMRegToMBits"];
RAMMRAMRegToMBitsNoOrphan: Node ← NodeCreateHack1["RAMMRAMRegToMBitsNoOrphan"];
RAMPBitsToMRAMReg: Node ← NodeCreateHack1["RAMPBitsToMRAMReg"];
RAMLeftPBitsToMRAMReg: Node ← NodeCreateHack1["RAMLeftPBitsToMRAMReg"];
RAMMRAMRegToPBits: Node ← NodeCreateHack1["RAMMRAMRegToPBits"];
FlagSetShared: Node ← NodeCreateHack1["FlagSetShared"];
FlagRPDirtyVPValid: Node ← NodeCreateHack1["FlagRPDirtyVPValid"];
FlagFlagLatch: Node ← NodeCreateHack1["FlagFlagLatch"];
FlagResetVPValid: Node ← NodeCreateHack1["FlagResetVPValid"];
FlagSetFlags: Node ← NodeCreateHack1["FlagSetFlags"];
FlagSetTIP: Node ← NodeCreateHack1["FlagSetTIP"];
FlagResetTIP: Node ← NodeCreateHack1["FlagResetTIP"];
EntryMDataIToMAdrCtr: Node ← NodeCreateHack1["EntryMDataIToMAdrCtr"];
EntryGetAddress: Node ← NodeCreateHack1["EntryGetAddress"];
EntryGetAdrRefresh: Node ← NodeCreateHack1["EntryGetAdrRefresh"];
EntryRefresh: Node ← NodeCreateHack1["EntryRefresh"];
EntryMAdrCtrToMAdr: Node ← NodeCreateHack1["EntryMAdrCtrToMAdr"];
EntryIncMAdrCtr: Node ← NodeCreateHack1["EntryIncMAdrCtr"];
EntryZeroMAdrCtr: Node ← NodeCreateHack1["EntryZeroMAdrCtr"];
EntryPAdrToMAdrCtr: Node ← NodeCreateHack1["EntryPAdrToMAdrCtr"];
EntryLowBitsAccessToMDataI: Node ← NodeCreateHack1["EntryLowBitsAccessToMDataI"];
EntryLowBitsZeroToMDataI: Node ← NodeCreateHack1["EntryLowBitsZeroToMDataI"];
EntrySelRealData: Node ← NodeCreateHack1["EntrySelRealData"];
EntrySelPageFlag: Node ← NodeCreateHack1["EntrySelPageFlag"];
EntrySelVictimData: Node ← NodeCreateHack1["EntrySelVictimData"];
EntrySelectVictimOrOrphan: Node ← NodeCreateHack1["EntrySelectVictimOrOrphan"];
EntryVirtualAccess: Node ← NodeCreateHack1["EntryVirtualAccess"];
EntrynVirtualAccess: Node ← NodeCreateHack1["EntrynVirtualAccess"];
EntryShiftVictim: Node ← NodeCreateHack1["EntryShiftVictim"];
EntryFinishSharedStore: Node ← NodeCreateHack1["EntryFinishSharedStore"];
GetAdrCmdBA: Node ← RoseCreate.CreateNode[within: thisCell, name: "GetAdrCmdBA", type: Mnemonics.Mnemonic["GetAddressCommands"]];
GetAddressDoneBA: Node ← NodeCreateHack1["GetAddressDoneBA"];
LatchSharedAB: Node ← NodeCreateHack1["LatchSharedAB"];
IsNoOpBA: Node ← NodeCreateHack1["IsNoOpBA"];
IsCleanBA: Node ← NodeCreateHack1["IsCleanBA"];
MatchRealBA: Node ← NodeCreateHack1["MatchRealBA"];
MAdrHigh: Node ← NodeCreateHack1["MAdrHigh"];
[] ← RoseCreate.CreateCell[within: thisCell, instanceName: "mCtlSequencer", className: "MCtlSequencer", interfaceNodes: ""];
[] ← RoseCreate.CreateCell[within: thisCell, instanceName: "mCtlEntryCtl", className: "MCtlEntryCtl", interfaceNodes: ""];
[] ← RoseCreate.CreateCell[within: thisCell, instanceName: "mCtlFlagCtl", className: "MCtlFlagCtl", interfaceNodes: ""];
[] ← RoseCreate.CreateCell[within: thisCell, instanceName: "mCtlRAMCtl", className: "MCtlRAMCtl", interfaceNodes: ""];
[] ← RoseCreate.CreateCell[within: thisCell, instanceName: "mCtlCAMCtl", className: "MCtlCAMCtl", interfaceNodes: ""];
};
CreateMCtlIO: IOCreator = {
cell.realCellStuff.switchIO ← NEW [MCtlIORec];
cell.realCellStuff.newIO ← NEW [MCtlIORec];
cell.realCellStuff.oldIO ← NEW [MCtlIORec];
};
MCtlPorts: Ports ← NEW [PortsRep[127]];
RegisterCells[];
END.