[Indigo]<Dragon>Cache>Rosemary>Cache.df=>CacheMicroCodeA.Mesa
Last Edited by: Barth, July 26, 1984 7:05:58 pm PDT
DIRECTORY CacheMicroMachine;
CacheMicroCodeA:
CEDAR
PROGRAM
IMPORTS CacheMicroMachine =
BEGIN OPEN CacheMicroMachine;
The first letter in each registration indicates the timing of the line.
A => the decoder emits a pulse with timing identical to PhA.
B => the decoder emits a pulse with timing identical to PhB.
BA => the decoder emits a level which changes on the rising edge of PhB.
AB => the decoder emits a level which changes on the rising edge of PhA.
DA => the decoder emits a pulse with timing identical to PhA during the PhA following the first PhA that the word comes out of the ROM.
LogicBlock["CachePInterfacePCtl"];
NewDecode[$StartWordMachine, BA];
LogicBlock["CacheEntry"];
NewDecode[$SenseRMatch, B];
NewDecode[$SelPageFlags, BA];
NewDecode[$FinishSharedStore, AB];
LogicBlock["CacheMInterfaceMCAMDriver"];
NewDecode[$CAMRegSenseMDataI, B];
NewDecode[$ACAMRegDriveCAMBits, A];
NewDecode[$BCAMRegDriveCAMBits, AB];
NewDecode[$FormAddress, BA];
NewDecode[$PageDriveMDataI, A];
NewDecode[$BlockDriveMDataI, A];
LogicBlock["CacheMInterfaceMRAMDriver"];
NewDecode[$DriveMBits, DA];
NewDecode[$DriveMBitsNoMatch, DA];
NewDecode[$SenseMBits, A];
NewDecode[$DriveMDataI, A];
NewDecode[$SenseMDataI, B];
NewDecode[$DrivePBits, B];
NewDecode[$SensePBits, B];
LogicBlock["CacheMInterfaceMEntryCtl"];
NewDecode[$SetShared, DA];
NewDecode[$ResetMaster, DA];
NewDecode[$SetRPDirtyVPValid, DA];
NewDecode[$FlagLatch, B];
NewDecode[$SetFlags, DA];
NewDecode[$IncrementVictim, BA];
NewDecode[$IncrementMAdrCtr, B];
NewDecode[$ZeroMAdrCtr, B];
NewDecode[$SampleDirtyBits, B];
NewDecode[$DeleteDirtyBit, B];
NewDecode[$VictimSelect, BA];
NewDecode[$RefreshToDecoder, BA];
NewDecode[$IfGrantThenGetAdrElseRefreshToDecoder, BA];
NewDecode[$RefreshIfRefVirtual, BA];
NewDecode[$FetchAddress, BA];
NewDecode[$DirtyBitsToMQSel, BA];
NewDecode[$SamplePAdr2831, B];
NewDecode[$SampleMAdr2831, B];
NewDecode[$Adr2829ToMQSel, BA];
NewDecode[$AddressBitsToMDataI, A];
NewDecode[$VictimAddressBitsToMDataI, A];
NewDecode[$SelectRP, BA];
NewDecode[$SelectVPVictimOrOrphan, BA];
NewDecode[$SelectRealData, BA];
NewDecode[$SelVictimOrOrphan, BA];
NewDecode[$SenseVictim, BA];
LogicBlock["CacheMInterfaceMSequencer"];
NewDecode[$SuppressPSample, AB];
NewDecode[$MIsDone, AB];
NewDecode[$SetWantWS, A];
NewDecode[$CheckFaults, AB];
NewDecode[$SenseShared, B];
NewDecode[$ReleaseMBus, BA];
NewDecode[$ForceIdle, AB];
NewDecode[$Done, AB];
NewDecode[$ForceSlave, BA];
NewDecode[$SenseReady, BA];
NewDecode[$MDataIToFaults, B];
NewDecode[$MapBitsToMDataI, A];
NewDecode[$ACheckParity, DA];
NewDecode[$BCheckParity, B];
NewDecode[$SampleRealMatch, A];
NewDecode[$MCmdDrive, A];
NewDecode[$MDataDrive, A];
NewDecode[$DriveSharedHigh, A];
NewDecode[$DriveSharedLow, A];
NewDecode[$MasterEnableMBusDrive, AB];
NewDecode[$MCmdDriveToDataTransport, AB];
NewDecode[$MCmdDriveToNoOp, AB];
NewDecode[$MDataDriveDelayed, DA]; -- Both MRAMDriver and MSequencer
END.