CacheEntries.rose
Last edited by: Barth, July 27, 1984 5:35:57 pm PDT
Imports CacheEntry, IO, NumTypes;
Library CacheEntry;
CELLTYPE "CacheEntries"
PORTS[
Timing and housekeeping interface
Vdd, Gnd<BOOL,
Buffered timing and housekeeping interface
PhAb, PhBb<BOOL,
CAM interface
CAMPage, nCAMPage=SWITCH[24]-(Special XPhobic),
CAMBlock, nCAMBlock=SWITCH[4]-(Special XPhobic),
RAM access
PBitsB, nPBitsB=SWITCH[132]-(Special XPhobic),
MBitsA, nMBitsA=SWITCH[132]-(Special XPhobic),
Cell control
nVQMatchB, nQuadSharedB>BOOL,
QValidA, nQValidA, QSharedA, nQSharedA, QMasterA, nQMasterA=BIT-(Special XPhobic),
MQSelBA, MatchQSelBA<INT[4], nRQMatchA>BOOL, FinishSharedStoreAB<BOOL, nQDirtyB>INT[4],
PStoreAB, nPStoreAB<BOOL, PQSelAB<INT[4],
nPageDirtyB, nMapValidB>BOOL,
RPValidBitA, nRPValidBitA, RPDirtyBitA, nRPDirtyBitA, VPValidBitA, nVPValidBitA=BIT-(Special XPhobic),
ForceAllDataSelectsBA<BOOL, nRealBlockMatchA, nVirtualBlockMatchB>BOOL,
CellAdrBA, nCellAdrBA<INT[7],
SenseRMatchB, SenseVictimA, SelOrphanAdrBA, SelMapAdrBA, SelVPBA, SelRPVictimBA, SelRPDecoderBA, SelRealDataBA, SelPageFlagsBA, SelDecodeBA<BOOL,
SenseVMatchA<BOOL
]
Expand
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;
ENDCELLTYPE