CacheEntries.Mesa
created by RoseTranslate from CacheEntries.Rose of February 1, 1985 9:49:05 am PST for curry.pa at February 1, 1985 9:49:09 am PST
DIRECTORY
RoseTypes, RoseCreate, CacheEntry, IO, NumTypes, SwitchTypes;
CacheEntries: CEDAR PROGRAM
IMPORTS RoseCreate, CacheEntry, IO, NumTypes =
BEGIN OPEN
RoseTypes;
Signal Type decls
RegisterCells: PROC =
BEGIN
[] ← RoseCreate.RegisterCellType[name: "CacheEntries",
expandProc: CacheEntriesExpand,
ioCreator: CreateCacheEntriesIO, initializer: NIL,
evals: [],
blackBox: NIL, stateToo: NIL,
ports: CreateCacheEntriesPorts[],
drivePrototype: NEW [CacheEntriesDrive]];
END;
otherss: SymbolTable ← RoseCreate.GetOtherss["CacheEntries.pass"];
CreateCacheEntriesPorts: PROC RETURNS [ports: Ports] = {ports ← RoseCreate.PortsFromFile["CacheEntries.CacheEntries.rosePorts"]};
CacheEntriesIORef: TYPE = REF CacheEntriesIORec;
CacheEntriesIORec: 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],
PhAb(2:15..15): BOOLEAN,
fill3(3:0..14): [0..32767],
PhBb(3:15..15): BOOLEAN,
CAMPage(4:0..383): PACKED ARRAY [0 .. 23] OF SwitchTypes.SwitchVal,
nCAMPage(28:0..383): PACKED ARRAY [0 .. 23] OF SwitchTypes.SwitchVal,
CAMBlock(52:0..63): PACKED ARRAY [0 .. 3] OF SwitchTypes.SwitchVal,
nCAMBlock(56:0..63): PACKED ARRAY [0 .. 3] OF SwitchTypes.SwitchVal,
PBitsB(60:0..2111): PACKED ARRAY [0 .. 131] OF SwitchTypes.SwitchVal,
nPBitsB(192:0..2111): PACKED ARRAY [0 .. 131] OF SwitchTypes.SwitchVal,
MBitsA(324:0..2111): PACKED ARRAY [0 .. 131] OF SwitchTypes.SwitchVal,
nMBitsA(456:0..2111): PACKED ARRAY [0 .. 131] OF SwitchTypes.SwitchVal,
fill12(588:0..14): [0..32767],
nVQMatchB(588:15..15): BOOLEAN,
fill13(589:0..14): [0..32767],
nQuadSharedB(589:15..15): BOOLEAN,
QValidA(590:0..15): SwitchTypes.SwitchVal,
nQValidA(591:0..15): SwitchTypes.SwitchVal,
QSharedA(592:0..15): SwitchTypes.SwitchVal,
nQSharedA(593:0..15): SwitchTypes.SwitchVal,
QMasterA(594:0..15): SwitchTypes.SwitchVal,
nQMasterA(595:0..15): SwitchTypes.SwitchVal,
fill20(596:0..11): [0..4095],
MQSelBA(596:12..15): [0..15],
fill21(597:0..11): [0..4095],
MatchQSelBA(597:12..15): [0..15],
fill22(598:0..14): [0..32767],
nRQMatchA(598:15..15): BOOLEAN,
fill23(599:0..14): [0..32767],
FinishSharedStoreAB(599:15..15): BOOLEAN,
fill24(600:0..11): [0..4095],
nQDirtyB(600:12..15): [0..15],
fill25(601:0..14): [0..32767],
PStoreAB(601:15..15): BOOLEAN,
fill26(602:0..14): [0..32767],
nPStoreAB(602:15..15): BOOLEAN,
fill27(603:0..11): [0..4095],
PQSelAB(603:12..15): [0..15],
fill28(604:0..14): [0..32767],
nPageDirtyB(604:15..15): BOOLEAN,
fill29(605:0..14): [0..32767],
nMapValidB(605:15..15): BOOLEAN,
RPValidBitA(606:0..15): SwitchTypes.SwitchVal,
nRPValidBitA(607:0..15): SwitchTypes.SwitchVal,
RPDirtyBitA(608:0..15): SwitchTypes.SwitchVal,
nRPDirtyBitA(609:0..15): SwitchTypes.SwitchVal,
VPValidBitA(610:0..15): SwitchTypes.SwitchVal,
nVPValidBitA(611:0..15): SwitchTypes.SwitchVal,
fill36(612:0..14): [0..32767],
ForceAllDataSelectsBA(612:15..15): BOOLEAN,
fill37(613:0..14): [0..32767],
nRealBlockMatchA(613:15..15): BOOLEAN,
fill38(614:0..14): [0..32767],
nVirtualBlockMatchB(614:15..15): BOOLEAN,
fill39(615:0..8): [0..511],
CellAdrBA(615:9..15): [0..127],
fill40(616:0..8): [0..511],
nCellAdrBA(616:9..15): [0..127],
fill41(617:0..14): [0..32767],
SenseRMatchB(617:15..15): BOOLEAN,
fill42(618:0..14): [0..32767],
SenseVictimA(618:15..15): BOOLEAN,
fill43(619:0..14): [0..32767],
SelOrphanAdrBA(619:15..15): BOOLEAN,
fill44(620:0..14): [0..32767],
SelMapAdrBA(620:15..15): BOOLEAN,
fill45(621:0..14): [0..32767],
SelVPBA(621:15..15): BOOLEAN,
fill46(622:0..14): [0..32767],
SelRPVictimBA(622:15..15): BOOLEAN,
fill47(623:0..14): [0..32767],
SelRPDecoderBA(623:15..15): BOOLEAN,
fill48(624:0..14): [0..32767],
SelRealDataBA(624:15..15): BOOLEAN,
fill49(625:0..14): [0..32767],
SelPageFlagsBA(625:15..15): BOOLEAN,
fill50(626:0..14): [0..32767],
SelDecodeBA(626:15..15): BOOLEAN,
fill51(627:0..14): [0..32767],
SenseVMatchA(627:15..15): BOOLEAN];
port indices:
CacheEntriesCAMPagePortIndex: CARDINAL = 4;
CacheEntriesNCAMPagePortIndex: CARDINAL = 5;
CacheEntriesCAMBlockPortIndex: CARDINAL = 6;
CacheEntriesNCAMBlockPortIndex: CARDINAL = 7;
CacheEntriesPBitsBPortIndex: CARDINAL = 8;
CacheEntriesNPBitsBPortIndex: CARDINAL = 9;
CacheEntriesMBitsAPortIndex: CARDINAL = 10;
CacheEntriesNMBitsAPortIndex: CARDINAL = 11;
CacheEntriesQValidAPortIndex: CARDINAL = 14;
CacheEntriesNQValidAPortIndex: CARDINAL = 15;
CacheEntriesQSharedAPortIndex: CARDINAL = 16;
CacheEntriesNQSharedAPortIndex: CARDINAL = 17;
CacheEntriesQMasterAPortIndex: CARDINAL = 18;
CacheEntriesNQMasterAPortIndex: CARDINAL = 19;
CacheEntriesRPValidBitAPortIndex: CARDINAL = 30;
CacheEntriesNRPValidBitAPortIndex: CARDINAL = 31;
CacheEntriesRPDirtyBitAPortIndex: CARDINAL = 32;
CacheEntriesNRPDirtyBitAPortIndex: CARDINAL = 33;
CacheEntriesVPValidBitAPortIndex: CARDINAL = 34;
CacheEntriesNVPValidBitAPortIndex: CARDINAL = 35;
CacheEntriesDrive: 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),
PhAb(2:15..15): BOOLEAN,
fill3(3:0..14): [0 .. 32768),
PhBb(3:15..15): BOOLEAN,
fill4(4:0..14): [0 .. 32768),
CAMPage(4:15..15): BOOLEAN,
fill5(5:0..14): [0 .. 32768),
nCAMPage(5:15..15): BOOLEAN,
fill6(6:0..14): [0 .. 32768),
CAMBlock(6:15..15): BOOLEAN,
fill7(7:0..14): [0 .. 32768),
nCAMBlock(7:15..15): BOOLEAN,
fill8(8:0..14): [0 .. 32768),
PBitsB(8:15..15): BOOLEAN,
fill9(9:0..14): [0 .. 32768),
nPBitsB(9:15..15): BOOLEAN,
fill10(10:0..14): [0 .. 32768),
MBitsA(10:15..15): BOOLEAN,
fill11(11:0..14): [0 .. 32768),
nMBitsA(11:15..15): BOOLEAN,
fill12(12:0..14): [0 .. 32768),
nVQMatchB(12:15..15): BOOLEAN,
fill13(13:0..14): [0 .. 32768),
nQuadSharedB(13:15..15): BOOLEAN,
fill14(14:0..14): [0 .. 32768),
QValidA(14:15..15): BOOLEAN,
fill15(15:0..14): [0 .. 32768),
nQValidA(15:15..15): BOOLEAN,
fill16(16:0..14): [0 .. 32768),
QSharedA(16:15..15): BOOLEAN,
fill17(17:0..14): [0 .. 32768),
nQSharedA(17:15..15): BOOLEAN,
fill18(18:0..14): [0 .. 32768),
QMasterA(18:15..15): BOOLEAN,
fill19(19:0..14): [0 .. 32768),
nQMasterA(19:15..15): BOOLEAN,
fill20(20:0..14): [0 .. 32768),
MQSelBA(20:15..15): BOOLEAN,
fill21(21:0..14): [0 .. 32768),
MatchQSelBA(21:15..15): BOOLEAN,
fill22(22:0..14): [0 .. 32768),
nRQMatchA(22:15..15): BOOLEAN,
fill23(23:0..14): [0 .. 32768),
FinishSharedStoreAB(23:15..15): BOOLEAN,
fill24(24:0..14): [0 .. 32768),
nQDirtyB(24:15..15): BOOLEAN,
fill25(25:0..14): [0 .. 32768),
PStoreAB(25:15..15): BOOLEAN,
fill26(26:0..14): [0 .. 32768),
nPStoreAB(26:15..15): BOOLEAN,
fill27(27:0..14): [0 .. 32768),
PQSelAB(27:15..15): BOOLEAN,
fill28(28:0..14): [0 .. 32768),
nPageDirtyB(28:15..15): BOOLEAN,
fill29(29:0..14): [0 .. 32768),
nMapValidB(29:15..15): BOOLEAN,
fill30(30:0..14): [0 .. 32768),
RPValidBitA(30:15..15): BOOLEAN,
fill31(31:0..14): [0 .. 32768),
nRPValidBitA(31:15..15): BOOLEAN,
fill32(32:0..14): [0 .. 32768),
RPDirtyBitA(32:15..15): BOOLEAN,
fill33(33:0..14): [0 .. 32768),
nRPDirtyBitA(33:15..15): BOOLEAN,
fill34(34:0..14): [0 .. 32768),
VPValidBitA(34:15..15): BOOLEAN,
fill35(35:0..14): [0 .. 32768),
nVPValidBitA(35:15..15): BOOLEAN,
fill36(36:0..14): [0 .. 32768),
ForceAllDataSelectsBA(36:15..15): BOOLEAN,
fill37(37:0..14): [0 .. 32768),
nRealBlockMatchA(37:15..15): BOOLEAN,
fill38(38:0..14): [0 .. 32768),
nVirtualBlockMatchB(38:15..15): BOOLEAN,
fill39(39:0..14): [0 .. 32768),
CellAdrBA(39:15..15): BOOLEAN,
fill40(40:0..14): [0 .. 32768),
nCellAdrBA(40:15..15): BOOLEAN,
fill41(41:0..14): [0 .. 32768),
SenseRMatchB(41:15..15): BOOLEAN,
fill42(42:0..14): [0 .. 32768),
SenseVictimA(42:15..15): BOOLEAN,
fill43(43:0..14): [0 .. 32768),
SelOrphanAdrBA(43:15..15): BOOLEAN,
fill44(44:0..14): [0 .. 32768),
SelMapAdrBA(44:15..15): BOOLEAN,
fill45(45:0..14): [0 .. 32768),
SelVPBA(45:15..15): BOOLEAN,
fill46(46:0..14): [0 .. 32768),
SelRPVictimBA(46:15..15): BOOLEAN,
fill47(47:0..14): [0 .. 32768),
SelRPDecoderBA(47:15..15): BOOLEAN,
fill48(48:0..14): [0 .. 32768),
SelRealDataBA(48:15..15): BOOLEAN,
fill49(49:0..14): [0 .. 32768),
SelPageFlagsBA(49:15..15): BOOLEAN,
fill50(50:0..14): [0 .. 32768),
SelDecodeBA(50:15..15): BOOLEAN,
fill51(51:0..14): [0 .. 32768),
SenseVMatchA(51:15..15): BOOLEAN];
CreateCacheEntriesIO: PROC [cell: Cell] --IOCreator-- = {
cell.realCellStuff.switchIO ← NEW [CacheEntriesIORec];
cell.realCellStuff.newIO ← NEW [CacheEntriesIORec];
cell.realCellStuff.oldIO ← NEW [CacheEntriesIORec];
};
CacheEntriesExpand: PROC [thisCell: Cell, to: ExpansionReceiver] --ExpandProc-- = {
PrivateLookupNode: PROC [name: ROPE] RETURNS [node: Node] = {node ← RoseCreate.LookupNode[from: thisCell, path: LIST[name]]};
Vdd: Node ← PrivateLookupNode["Vdd"];
Gnd: Node ← PrivateLookupNode["Gnd"];
PhAb: Node ← PrivateLookupNode["PhAb"];
PhBb: Node ← PrivateLookupNode["PhBb"];
CAMPage: Node ← PrivateLookupNode["CAMPage"];
nCAMPage: Node ← PrivateLookupNode["nCAMPage"];
CAMBlock: Node ← PrivateLookupNode["CAMBlock"];
nCAMBlock: Node ← PrivateLookupNode["nCAMBlock"];
PBitsB: Node ← PrivateLookupNode["PBitsB"];
nPBitsB: Node ← PrivateLookupNode["nPBitsB"];
MBitsA: Node ← PrivateLookupNode["MBitsA"];
nMBitsA: Node ← PrivateLookupNode["nMBitsA"];
nVQMatchB: Node ← PrivateLookupNode["nVQMatchB"];
nQuadSharedB: Node ← PrivateLookupNode["nQuadSharedB"];
QValidA: Node ← PrivateLookupNode["QValidA"];
nQValidA: Node ← PrivateLookupNode["nQValidA"];
QSharedA: Node ← PrivateLookupNode["QSharedA"];
nQSharedA: Node ← PrivateLookupNode["nQSharedA"];
QMasterA: Node ← PrivateLookupNode["QMasterA"];
nQMasterA: Node ← PrivateLookupNode["nQMasterA"];
MQSelBA: Node ← PrivateLookupNode["MQSelBA"];
MatchQSelBA: Node ← PrivateLookupNode["MatchQSelBA"];
nRQMatchA: Node ← PrivateLookupNode["nRQMatchA"];
FinishSharedStoreAB: Node ← PrivateLookupNode["FinishSharedStoreAB"];
nQDirtyB: Node ← PrivateLookupNode["nQDirtyB"];
PStoreAB: Node ← PrivateLookupNode["PStoreAB"];
nPStoreAB: Node ← PrivateLookupNode["nPStoreAB"];
PQSelAB: Node ← PrivateLookupNode["PQSelAB"];
nPageDirtyB: Node ← PrivateLookupNode["nPageDirtyB"];
nMapValidB: Node ← PrivateLookupNode["nMapValidB"];
RPValidBitA: Node ← PrivateLookupNode["RPValidBitA"];
nRPValidBitA: Node ← PrivateLookupNode["nRPValidBitA"];
RPDirtyBitA: Node ← PrivateLookupNode["RPDirtyBitA"];
nRPDirtyBitA: Node ← PrivateLookupNode["nRPDirtyBitA"];
VPValidBitA: Node ← PrivateLookupNode["VPValidBitA"];
nVPValidBitA: Node ← PrivateLookupNode["nVPValidBitA"];
ForceAllDataSelectsBA: Node ← PrivateLookupNode["ForceAllDataSelectsBA"];
nRealBlockMatchA: Node ← PrivateLookupNode["nRealBlockMatchA"];
nVirtualBlockMatchB: Node ← PrivateLookupNode["nVirtualBlockMatchB"];
CellAdrBA: Node ← PrivateLookupNode["CellAdrBA"];
nCellAdrBA: Node ← PrivateLookupNode["nCellAdrBA"];
SenseRMatchB: Node ← PrivateLookupNode["SenseRMatchB"];
SenseVictimA: Node ← PrivateLookupNode["SenseVictimA"];
SelOrphanAdrBA: Node ← PrivateLookupNode["SelOrphanAdrBA"];
SelMapAdrBA: Node ← PrivateLookupNode["SelMapAdrBA"];
SelVPBA: Node ← PrivateLookupNode["SelVPBA"];
SelRPVictimBA: Node ← PrivateLookupNode["SelRPVictimBA"];
SelRPDecoderBA: Node ← PrivateLookupNode["SelRPDecoderBA"];
SelRealDataBA: Node ← PrivateLookupNode["SelRealDataBA"];
SelPageFlagsBA: Node ← PrivateLookupNode["SelPageFlagsBA"];
SelDecodeBA: Node ← PrivateLookupNode["SelDecodeBA"];
SenseVMatchA: Node ← PrivateLookupNode["SenseVMatchA"];
others: SymbolTable ← RoseCreate.GetOthers[otherss, "CacheEntries"];
explicitly requested CEDAR:
[] ← RoseCreate.CreateNode[within: thisCell, name: "DecodeSelectBA3", type: NumTypes.boolType];
FOR ce: CARDINAL IN [0..4) DO
IF ce#3 THEN [] ← RoseCreate.CreateNode[within: thisCell, name: IO.PutFR["DecodeSelectBA%g", IO.card[ce]], type: NumTypes.boolType];
[] ← RoseCreate.CreateCell[within: thisCell, instanceName: IO.PutFR["CacheEntry%g", IO.card[ce]], className: "CacheEntry", interfaceNodes: IO.PutFR["DecodeSelectOutBA:DecodeSelectBA%g, DecodeSelectInBA:DecodeSelectBA%g", IO.card[ce], IF ce=0 THEN IO.card[3] ELSE IO.card[ce-1]], initData: NEW[CacheEntry.CacheEntryInitRec ← [ce]]];
ENDLOOP;
};
RegisterCells[];
END.