<> <> <> Imports BitOps, CacheMicroMachine; Open BitOps, CacheMicroMachine; CELLTYPE "MROM" PORTS[ <> Vdd, Gnd> <> PhAb, PhBb> FinishSharedStoreAB>BOOL, SenseRMatchB, SelPageFlagsBA>BOOL, <

M control>> StartWordMachineBA>BOOL, <> CAMRegSenseMDataIB, ACAMRegDriveCAMBitsA, BCAMRegDriveCAMBitsAB, FormAddressBA, PageDriveMDataIA, BlockDriveMDataIA>BOOL, <> DriveMBitsA, DriveMBitsNoMatchA, SenseMBitsA, DriveMDataIA, SenseMDataIB, DrivePBitsB, SensePBitsB>BOOL, <> SuppressPSampleAB, MIsDoneAB, SetWantWSA, CheckFaultsAB, SenseSharedB, ReleaseMBusBA, ForceIdleAB, DoneAB, ForceSlaveBA, SenseReadyBA, MDataIToFaultsB, MapBitsToMDataIA, ACheckParityA, BCheckParityB, SampleRealMatchA, MCmdDriveA, MDataDriveA, DriveSharedHighA, DriveSharedLowA, MasterEnableMBusDriveAB, MCmdDriveToDataTransportAB, MCmdDriveToNoOpAB>BOOL, <> SetSharedA, ResetMasterA, SetRPDirtyVPValidA, FlagLatchB, SetFlagsA, IncrementVictimBA, IncrementMAdrCtrB, ZeroMAdrCtrB, SampleDirtyBitsB, DeleteDirtyBitB, VictimSelectBA, RefreshToDecoderBA, IfGrantThenGetAdrElseRefreshToDecoderBA, FetchAddressBA, DirtyBitsToMQSelBA, SamplePAdr2831B, SampleMAdr2831B, Adr2829ToMQSelBA, AddressBitsToMDataIA, VictimAddressBitsToMDataIA, SelectRPBA, SelectVPVictimOrOrphanBA, SelectRealDataBA, SelVictimOrOrphanBA, RefreshIfRefVirtualBA, SenseVictimBA>BOOL, <> MDataDriveDelayedA>BOOL, ROMSequenceBA> <> <<>> IF PhAb THEN { PageDriveMDataIA _ Decode[$PageDriveMDataI]; BlockDriveMDataIA _ Decode[$BlockDriveMDataI]; SenseMBitsA _ Decode[$SenseMBits]; DriveMDataIA _ Decode[$DriveMDataI]; AddressBitsToMDataIA _ Decode[$AddressBitsToMDataI]; VictimAddressBitsToMDataIA _ Decode[$VictimAddressBitsToMDataI]; SetWantWSA _ Decode[$SetWantWS]; MapBitsToMDataIA _ Decode[$MapBitsToMDataI]; SampleRealMatchA _ Decode[$SampleRealMatch]; MCmdDriveA _ Decode[$MCmdDrive]; MDataDriveA _ Decode[$MDataDrive]; DriveSharedHighA _ Decode[$DriveSharedHigh]; DriveSharedLowA _ Decode[$DriveSharedLow]; } ELSE PageDriveMDataIA _ BlockDriveMDataIA _ SenseMBitsA _ DriveMDataIA _ AddressBitsToMDataIA _ VictimAddressBitsToMDataIA _ SetWantWSA _ MapBitsToMDataIA _ SampleRealMatchA _ MCmdDriveA _ MDataDriveA _ DriveSharedHighA _ DriveSharedLowA _ FALSE; <<>> <> <> <> <<>> IF PhAb THEN { dSenseRMatchAB _ Decode[$SenseRMatch]; dCAMRegSenseMDataIAB _ Decode[$CAMRegSenseMDataI]; dSenseMDataIAB _ Decode[$SenseMDataI]; dDrivePBitsAB _ Decode[$DrivePBits]; dSensePBitsAB _ Decode[$SensePBits]; dFlagLatchAB _ Decode[$FlagLatch]; dIncrementMAdrCtrAB _ Decode[$IncrementMAdrCtr]; dZeroMAdrCtrAB _ Decode[$ZeroMAdrCtr]; dSampleDirtyBitsAB _ Decode[$SampleDirtyBits]; dDeleteDirtyBitAB _ Decode[$DeleteDirtyBit]; dSamplePAdr2831AB _ Decode[$SamplePAdr2831]; dSampleMAdr2831AB _ Decode[$SampleMAdr2831]; dSenseSharedAB _ Decode[$SenseShared]; dMDataIToFaultsAB _ Decode[$MDataIToFaults]; dBCheckParityAB _ Decode[$BCheckParity]; }; IF PhBb THEN { SenseRMatchB _ dSenseRMatchAB; CAMRegSenseMDataIB _ dCAMRegSenseMDataIAB; SenseMDataIB _ dSenseMDataIAB; DrivePBitsB _ dDrivePBitsAB; SensePBitsB _ dSensePBitsAB; FlagLatchB _ dFlagLatchAB; IncrementMAdrCtrB _ dIncrementMAdrCtrAB; ZeroMAdrCtrB _ dZeroMAdrCtrAB; SampleDirtyBitsB _ dSampleDirtyBitsAB; DeleteDirtyBitB _ dDeleteDirtyBitAB; SamplePAdr2831B _ dSamplePAdr2831AB; SampleMAdr2831B _ dSampleMAdr2831AB; SenseSharedB _ dSenseSharedAB; MDataIToFaultsB _ dMDataIToFaultsAB; BCheckParityB _ dBCheckParityAB; } ELSE SenseRMatchB _ CAMRegSenseMDataIB _ SenseMDataIB _ DrivePBitsB _ SensePBitsB _ FlagLatchB _ IncrementMAdrCtrB _ ZeroMAdrCtrB _ SampleDirtyBitsB _ DeleteDirtyBitB _ SamplePAdr2831B _ SampleMAdr2831B _ SenseSharedB _ MDataIToFaultsB _ BCheckParityB _ FALSE; <> <> <<>> IF PhAb THEN { FinishSharedStoreAB _ Decode[$FinishSharedStore]; BCAMRegDriveCAMBitsAB _ Decode[$BCAMRegDriveCAMBits]; SuppressPSampleAB _ Decode[$SuppressPSample]; DoneAB _ Decode[$Done]; MasterEnableMBusDriveAB _ Decode[$MasterEnableMBusDrive]; MCmdDriveToDataTransportAB _ Decode[$MCmdDriveToDataTransport]; MCmdDriveToNoOpAB _ Decode[$MCmdDriveToNoOp]; ForceIdleAB _ Decode[$ForceIdle]; }; <> <> <> IF PhAb THEN { dSelPageFlagsAB _ Decode[$SelPageFlags]; dFormAddressAB _ Decode[$FormAddress]; dIncrementVictimAB _ Decode[$IncrementVictim]; dVictimSelectAB _ Decode[$VictimSelect]; dRefreshToDecoderAB _ Decode[$RefreshToDecoder]; dIfGrantThenGetAdrElseRefreshToDecoderAB _ Decode[$IfGrantThenGetAdrElseRefreshToDecoder]; dFetchAddressAB _ Decode[$FetchAddress]; dDirtyBitsToMQSelAB _ Decode[$DirtyBitsToMQSel]; dAdr2829ToMQSelAB _ Decode[$Adr2829ToMQSel]; dSelectRPAB _ Decode[$SelectRP]; dSelectVPVictimOrOrphanAB _ Decode[$SelectVPVictimOrOrphan]; dSelectRealDataAB _ Decode[$SelectRealData]; dSelVictimOrOrphanAB _ Decode[$SelVictimOrOrphan]; dSenseVictimAB _ Decode[$SenseVictim]; dRefreshIfRefVirtualAB _ Decode[$RefreshIfRefVirtual]; MIsDoneAB _ Decode[$MIsDone]; CheckFaultsAB _ Decode[$CheckFaults]; dReleaseMBusAB _ Decode[$ReleaseMBus]; dForceSlaveAB _ Decode[$ForceSlave]; dSenseReadyAB _ Decode[$SenseReady]; dStartWordMachineAB _ Decode[$StartWordMachine]; }; IF PhBb THEN { SelPageFlagsBA _ dSelPageFlagsAB; FormAddressBA _ dFormAddressAB; IncrementVictimBA _ dIncrementVictimAB; VictimSelectBA _ dVictimSelectAB; RefreshToDecoderBA _ dRefreshToDecoderAB; IfGrantThenGetAdrElseRefreshToDecoderBA _ dIfGrantThenGetAdrElseRefreshToDecoderAB; FetchAddressBA _ dFetchAddressAB; DirtyBitsToMQSelBA _ dDirtyBitsToMQSelAB; Adr2829ToMQSelBA _ dAdr2829ToMQSelAB; SelectRPBA _ dSelectRPAB; SelectVPVictimOrOrphanBA _ dSelectVPVictimOrOrphanAB; SelectRealDataBA _ dSelectRealDataAB; SelVictimOrOrphanBA _ dSelVictimOrOrphanAB; SenseVictimBA _ dSenseVictimAB; RefreshIfRefVirtualBA _ dRefreshIfRefVirtualAB; ReleaseMBusBA _ dReleaseMBusAB; ForceSlaveBA _ dForceSlaveAB; SenseReadyBA _ dSenseReadyAB; StartWordMachineBA _ dStartWordMachineAB; }; <> <> <> <> IF PhAb THEN { dACAMRegDriveCAMBitsAB _ Decode[$ACAMRegDriveCAMBits]; dDriveMBitsAB _ Decode[$DriveMBits]; dDriveMBitsNoMatchAB _ Decode[$DriveMBitsNoMatch]; dSetSharedAB _ Decode[$SetShared]; dResetMasterAB _ Decode[$ResetMaster]; dSetRPDirtyVPValidAB _ Decode[$SetRPDirtyVPValid]; dSetFlagsAB _ Decode[$SetFlags]; dACheckParityAB _ Decode[$ACheckParity]; dMDataDriveDelayedAB _ Decode[$MDataDriveDelayed]; }; IF PhBb THEN { dACAMRegDriveCAMBitsBA _ dACAMRegDriveCAMBitsAB; dDriveMBitsBA _ dDriveMBitsAB; dDriveMBitsNoMatchBA _ dDriveMBitsNoMatchAB; dSetSharedBA _ dSetSharedAB; dResetMasterBA _ dResetMasterAB; dSetRPDirtyVPValidBA _ dSetRPDirtyVPValidAB; dSetFlagsBA _ dSetFlagsAB; dACheckParityBA _ dACheckParityAB; dMDataDriveDelayedBA _ dMDataDriveDelayedAB; }; IF PhAb THEN { ACAMRegDriveCAMBitsA _ dACAMRegDriveCAMBitsBA; DriveMBitsA _ dDriveMBitsBA; DriveMBitsNoMatchA _ dDriveMBitsNoMatchBA; SetSharedA _ dSetSharedBA; ResetMasterA _ dResetMasterBA; SetRPDirtyVPValidA _ dSetRPDirtyVPValidBA; SetFlagsA _ dSetFlagsBA; ACheckParityA _ dACheckParityBA; MDataDriveDelayedA _ dMDataDriveDelayedBA; } ELSE ACAMRegDriveCAMBitsA _ DriveMBitsA _ DriveMBitsNoMatchA _ SetSharedA _ ResetMasterA _ SetRPDirtyVPValidA _ SetFlagsA _ ACheckParityA _ MDataDriveDelayedA _ FALSE; <<>> ENDCELLTYPE