DIRECTORY RoseTypes, RoseCreate, CacheEntry, IO, NumTypes, SwitchTypes; CacheEntries: CEDAR PROGRAM IMPORTS RoseCreate, CacheEntry, IO, NumTypes = BEGIN OPEN RoseTypes; 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]; 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"]; [] _ 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. Ψ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 Signal Type decls port indices: explicitly requested CEDAR: ΚΩ˜Icodešœ™Kšœ‚™‚K˜K˜šΟk ˜ Kšœ#œ˜=—K˜šΠbl œœ˜Kšœœ ˜.—K˜šœ˜ K˜ —K˜šœ™K˜—K˜šΟn œœ˜Kš˜˜6K˜Kšœ.œ˜2K˜ Kšœ œ œ˜K˜!Kšœœ˜)—Kšœ˜—K˜BK˜KšŸœœœ\˜K˜Kšœœœ˜0š œœœ œœ˜4K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜Kšœœœ œ˜CKšœœœ œ˜EKšœœœ œ˜CKšœœœ œ˜DKšœœœ œ˜EKšœœœ œ˜GKšœœœ œ˜FKšœœœ œ˜GK˜Kšœœ˜K˜Kšœœ˜"K˜*K˜+K˜+K˜,K˜+K˜,K˜K˜K˜K˜!K˜Kšœœ˜K˜Kšœ!œ˜)K˜K˜K˜Kšœœ˜K˜Kšœœ˜K˜K˜K˜Kšœœ˜!K˜Kšœœ˜ K˜.K˜/K˜.K˜/K˜.K˜/K˜Kšœ#œ˜+K˜Kšœœ˜&K˜Kšœ!œ˜)K˜K˜K˜K˜ K˜Kšœœ˜"K˜Kšœœ˜"K˜Kšœœ˜$K˜Kšœœ˜!K˜Kšœœ˜K˜Kšœœ˜#K˜Kšœœ˜$K˜Kšœœ˜#K˜Kšœœ˜$K˜Kšœœ˜!K˜Kšœœ˜#—K˜šœ ™ Kšœœ˜+Kšœœ˜,Kšœœ˜,Kšœ œ˜-Kšœœ˜*Kšœœ˜+Kšœœ˜+Kšœœ˜,Kšœœ˜,Kšœœ˜-Kšœœ˜-Kšœ œ˜.Kšœœ˜-Kšœ œ˜.Kšœ"œ˜0Kšœ#œ˜1Kšœ"œ˜0Kšœ#œ˜1Kšœ"œ˜0Kšœ#œ˜1—K˜š œœœ œœ˜4K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜!K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜ K˜Kšœœ˜K˜Kšœ œ˜(K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜ K˜Kšœœ˜K˜Kšœœ˜ K˜Kšœœ˜!K˜Kšœœ˜ K˜Kšœœ˜!K˜Kšœœ˜ K˜Kšœœ˜!K˜Kšœ"œ˜*K˜Kšœœ˜%K˜Kšœ œ˜(K˜Kšœœ˜K˜Kšœœ˜K˜Kšœœ˜!K˜Kšœœ˜!K˜Kšœœ˜#K˜Kšœœ˜ K˜Kšœœ˜K˜Kšœœ˜"K˜Kšœœ˜#K˜Kšœœ˜"K˜Kšœœ˜#K˜Kšœœ˜ K˜Kšœœ˜"—K˜K˜šŸœœΟc œ˜9Kšœœ˜6Kšœœ˜3Kšœœ˜3K˜—K˜šŸœœ) œ˜SKš ŸœœœœDœ ˜}K˜%K˜%K˜'K˜'K˜-K˜/K˜/K˜1K˜+K˜-K˜+K˜-K˜1K˜7K˜-K˜/K˜/K˜1K˜/K˜1K˜-K˜5K˜1K˜EK˜/K˜/K˜1K˜-K˜5K˜3K˜5K˜7K˜5K˜7K˜5K˜7K˜IK˜?K˜EK˜1K˜3K˜7K˜7K˜;K˜5K˜-K˜9K˜;K˜9K˜;K˜5K˜7K˜DK˜šœ™J˜_šœœœ˜Jšœœ4œœ%˜„Jšœ;œœ5œPœ œœœ œœœ'˜ΛJšœ˜——K˜K˜—K˜K˜K˜Kšœ˜—…—.ώ8―