def main(): # Run Simics initially testUtil.runCycles( 10000000 ); # Intialize the class obj instances regObj = testPSUUtil.registry() # Registry obj def for operation print "\n Execute SBE Test set1 [ PutCntrlTimer ] ...\n" ''' Test Case 1 ''' print "\n Test Start timer\n" # HOST->SBE data set execution regObj.ExecuteTestOp( testPSUUtil.simSbeObj, sbe_test_startTimer ) #Poll on HOST DoorBell Register for interrupt regObj.pollingOn( testPSUUtil.simSbeObj, host_polling_data, 5 ) #SBE->HOST data set execution regObj.ExecuteTestOp( testPSUUtil.simSbeObj, host_test_Timer_Cmd_success ) print "\n Test Stop timer\n" # HOST->SBE data set execution regObj.ExecuteTestOp( testPSUUtil.simSbeObj, sbe_test_StopTimer ) #Poll on HOST DoorBell Register for interrupt regObj.pollingOn( testPSUUtil.simSbeObj, host_polling_data, 5 ) isTimerFired = True; #SBE->HOST data set execution # As we have stopped the timer, timer should not fire regObj.ExecuteTestOp( testPSUUtil.simSbeObj, host_test_Timer_Cmd_success ) try: #Poll on HOST DoorBell Register for interrupt print "\n Poll on Host side for Timer INTR ...\n" regObj.pollingOn( testPSUUtil.simSbeObj, timer_polling_data, 20 ) except: isTimerFired = False if isTimerFired: print "\n Problem. Timer not cancelled\n" raise Exception('Timer Not cancelled ');
def main(): # Run Simics initially testUtil.runCycles(10000000) # Intialize the class obj instances regObj = testPSUUtil.registry() # Registry obj def for operation print "\n Execute SBE Test [ System Fabric Map ] ...\n" ''' Test Case 1 ''' # HOST->SBE data set execution regObj.ExecuteTestOp(testPSUUtil.simSbeObj, sbe_test_data) print "\n Poll on Host side for INTR ...\n" #Poll on HOST DoorBell Register for interrupt regObj.pollingOn(testPSUUtil.simSbeObj, host_polling_data, 5) #SBE->HOST data set execution regObj.ExecuteTestOp(testPSUUtil.simSbeObj, host_test_data_success)
def main(): # Run Simics initially testUtil.runCycles(10000000) # Intialize the class obj instances regObj = testPSUUtil.registry() # Registry obj def for operation print "\n Execute SBE Test - Set FFDC Address\n" # HOST->SBE data set execution regObj.ExecuteTestOp(testPSUUtil.simSbeObj, sbe_test_data) print "\n Poll on Host side for INTR ...\n" #Poll on HOST DoorBell Register for interrupt regObj.pollingOn(testPSUUtil.simSbeObj, host_polling_data, 5) #SBE->HOST data set execution regObj.ExecuteTestOp(testPSUUtil.simSbeObj, host_test_data_success) testUtil.runCycles(10000000) # Invalid ring - 248 # HOST->SBE data set execution regObj.ExecuteTestOp(testPSUUtil.simSbeObj, sbe_test_invalid_ring) print "\n Poll on Host side for INTR ...\n" #Poll on HOST DoorBell Register for interrupt regObj.pollingOn(testPSUUtil.simSbeObj, host_polling_data, 5) #SBE->HOST data set execution regObj.ExecuteTestOp(testPSUUtil.simSbeObj, host_test_data_failure) #dump ffdc to a file readData = testMemUtil.getmem(0x08000000, 0x2000, 0x02) hostDumpFile = open("hostDumpFFDC.bin", 'wb') hostDumpFile.write(bytearray(readData)) hostDumpFile.close() # extract HWP ffdc readData = testUtil.extractHWPFFDC(True, readData)
def main(): # Intialize the class obj instances print "\n Initializing Registry instances ...." regObj = testPSUUtil.registry() # Registry obj def for operation print "\n Execute SBE Test set [ PSU ] ...\n" # Sim obj Target Test set Raise Exception rc_test = regObj.ExecuteTestOp(testPSUUtil.simSbeObj, sbe_test_data, True) if rc_test != testPSUUtil.SUCCESS: print " SBE Test data set .. [ Failed ] .." else: print " SBE Test data set .. [ OK ] " print "\n Poll on Host side for INTR ...\n" # Sim obj Target Test set Max timedout rc_intr = regObj.pollingOn(testPSUUtil.simSbeObj, host_test_data, 20) if rc_intr == testPSUUtil.SUCCESS: print " Interrupt Event Recieved .. Success !!" else: print " Interrupt not Recieved.. Exiting .." print "\n"
def setUnsecureMemRegion(addr, size, controlFlag, responseWord): testUtil.runCycles(RUN_CYCLES) req = ([ "write", reg.REG_MBOX0, "0" * (8 - len(hex(controlFlag).split('0x')[-1])) + hex(controlFlag).split('0x')[-1] + "00F0D601", 8, "None", "Writing to MBOX0 address" ], [ "write", reg.REG_MBOX1, "0" * (16 - len(hex(size).split('0x')[-1])) + hex(size).split('0x')[-1], 8, "None", "Writing to MBOX1 address" ], [ "write", reg.REG_MBOX2, "0" * (16 - len(hex(addr).split('0x')[-1])) + hex(addr).split('0x')[-1], 8, "None", "Writing to MBOX1 address" ], [ "write", reg.PSU_SBE_DOORBELL_REG_WO_OR, "8000000000000000", 8, "None", "Update SBE Doorbell register to interrupt SBE" ]) host_polling_data = ([ "read", reg.PSU_HOST_DOORBELL_REG_WO_OR, "0", 8, "8000000000000000", "Reading Host Doorbell for Interrupt" ], ) # Host to SBE req regObj = testPSUUtil.registry() regObj.ExecuteTestOp(testPSUUtil.simSbeObj, req) print "\n Poll on Host side for INTR ...\n" #Poll on HOST DoorBell Register for interrupt regObj.pollingOn(testPSUUtil.simSbeObj, host_polling_data, 5) response = ([ "read", reg.REG_MBOX4, "0", 8, "0" * (8 - len(hex(responseWord).split('0x')[-1])) + hex(responseWord).split('0x')[-1] + "00F0D601", "Reading Host MBOX4 data to Validate" ], ) #SBE->HOST data set execution regObj.ExecuteTestOp(testPSUUtil.simSbeObj, response)
def main(): # Run Simics initially testUtil.runCycles(10000000) # Intialize the class obj instances regObj = testPSUUtil.registry() # Registry obj def for operation print "\n Execute SBE Test set1 [ PutCntrlTimer ] ...\n" ''' Test Case 1 ''' print "\n Test Start timer\n" # HOST->SBE data set execution regObj.ExecuteTestOp(testPSUUtil.simSbeObj, sbe_test_startTimer) #Poll on HOST DoorBell Register for interrupt regObj.pollingOn(testPSUUtil.simSbeObj, host_polling_data, 5) #SBE->HOST data set execution regObj.ExecuteTestOp(testPSUUtil.simSbeObj, host_test_Timer_Cmd_success) #Poll on HOST DoorBell Register for interrupt print "\n Poll on Host side for Timer INTR ...\n" regObj.pollingOn(testPSUUtil.simSbeObj, timer_polling_data, 50) ''' Test Case 2. Stop timer when timer already expired ''' print "\n Test Stop timer\n" # HOST->SBE data set execution regObj.ExecuteTestOp(testPSUUtil.simSbeObj, sbe_test_StopTimer) #Poll on HOST DoorBell Register for interrupt regObj.pollingOn(testPSUUtil.simSbeObj, host_polling_data, 5) #SBE->HOST data set execution regObj.ExecuteTestOp(testPSUUtil.simSbeObj, host_test_Timer_Cmd_success)
def getCapabilities(addr, size, exp_status): # Intialize the class obj instances regObj = testPSUUtil.registry() # Registry obj def for operation ''' This data are the values or strings that needs to be validated for the test. ''' ''' #------------------------------------------------------------------------------------------------------------------------------ # SBE side test data - #------------------------------------------------------------------------------------------------------------------------------ ''' sbe_test_data = ( #----------------------------------------------------------------------------------------------------- # OP Reg ValueToWrite size Test Expected Data Description #----------------------------------------------------------------------------------------------------- # Get Capabilities CMD [ "write", reg.REG_MBOX0, "0000010000F0D702", 8, "None", "Writing to MBOX0 address" ], # Size [ "write", reg.REG_MBOX1, getdoubleword(size), 8, "None", "Writing to MBOX1 address" ], # Addr [ "write", reg.REG_MBOX2, getdoubleword(addr), 8, "None", "Writing to MBOX2 address" ], [ "write", reg.PSU_SBE_DOORBELL_REG_WO_OR, "8000000000000000", 8, "None", "Update SBE Doorbell register to interrupt SBE" ], ) #----------------------------------------------------------------------- # Do not modify - Used to simulate interrupt on Ringing Doorbell on Host #----------------------------------------------------------------------- host_polling_data = ( #---------------------------------------------------------------------------------------------------------------- # OP Reg ValueToWrite size Test Expected Data Description #---------------------------------------------------------------------------------------------------------------- [ "read", reg.PSU_HOST_DOORBELL_REG_WO_OR, "0", 8, "8000000000000000", "Reading Host Doorbell for Interrupt" ], ) length = 0 if exp_status == 0: length = 92 ''' #--------------------- # Host side test data #--------------------- ''' host_test_data = ( #---------------------------------------------------------------------------------------------------------------- # OP Reg ValueToWrite size Test Expected Data Description #---------------------------------------------------------------------------------------------------------------- [ "read", reg.REG_MBOX4, "0", 8, getdoubleword((exp_status << 32) + 0x00F0D702), "Reading Host MBOX4 data to Validate" ], [ "read", reg.REG_MBOX5, "0", 8, getdoubleword(length), "Reading Host MBOX4 data to Validate" ], ) # HOST->SBE data set execution - Less length setup regObj.ExecuteTestOp(testPSUUtil.simSbeObj, sbe_test_data) print "\n Poll on Host side for INTR ...\n" #Poll on HOST DoorBell Register for interrupt regObj.pollingOn(testPSUUtil.simSbeObj, host_polling_data, 5) #SBE->HOST data set execution regObj.ExecuteTestOp(testPSUUtil.simSbeObj, host_test_data)
def main(): # Run Simics initially testUtil.runCycles(10000000) # Intialize the class obj instances regObj = testPSUUtil.registry() # Registry obj def for operation print "\n Execute SBE Test set1 [ Put Ring ] ...\n" ''' Test Case 1 ''' # HOST->SBE data set execution regObj.ExecuteTestOp(testPSUUtil.simSbeObj, sbe_test_data1) print "\n Poll on Host side for INTR ...\n" #Poll on HOST DoorBell Register for interrupt regObj.pollingOn(testPSUUtil.simSbeObj, host_polling_data, 5) #SBE->HOST data set execution regObj.ExecuteTestOp(testPSUUtil.simSbeObj, host_test_data_success) # Commenting out test cases for perv and proc chiplets, as there is no # way to stop cloks for these chiplets from the test framework # print "\n Execute SBE Test set2 [ Put Ring ] ...\n" # ''' # Test Case 2 # ''' # # HOST->SBE data set execution # regObj.ExecuteTestOp( testPSUUtil.simSbeObj, sbe_test_data2 ) # # print "\n Poll on Host side for INTR ...\n" # #Poll on HOST DoorBell Register for interrupt # regObj.pollingOn( testPSUUtil.simSbeObj, host_polling_data, 5 ) # # #SBE->HOST data set execution # regObj.ExecuteTestOp( testPSUUtil.simSbeObj, host_test_data_success ) # # print "\n Execute SBE Test set3 [ Put Ring ] ...\n" # ''' # Test Case 3 # ''' # # HOST->SBE data set execution # regObj.ExecuteTestOp( testPSUUtil.simSbeObj, sbe_test_data3 ) # # print "\n Poll on Host side for INTR ...\n" # #Poll on HOST DoorBell Register for interrupt # regObj.pollingOn( testPSUUtil.simSbeObj, host_polling_data, 5 ) # # #SBE->HOST data set execution # regObj.ExecuteTestOp( testPSUUtil.simSbeObj, host_test_data_success ) # print "\n Execute SBE Test set4 [ Put Ring ] ...\n" ''' Test Case 4 ''' # HOST->SBE data set execution regObj.ExecuteTestOp(testPSUUtil.simSbeObj, sbe_test_data4) print "\n Poll on Host side for INTR ...\n" #Poll on HOST DoorBell Register for interrupt regObj.pollingOn(testPSUUtil.simSbeObj, host_polling_data, 5) #SBE->HOST data set execution regObj.ExecuteTestOp(testPSUUtil.simSbeObj, host_test_data_success) print "\n Execute SBE Test set5 [ Put Ring ] ...\n" ''' Test Case 5 ''' # HOST->SBE data set execution regObj.ExecuteTestOp(testPSUUtil.simSbeObj, sbe_test_data5) print "\n Poll on Host side for INTR ...\n" #Poll on HOST DoorBell Register for interrupt regObj.pollingOn(testPSUUtil.simSbeObj, host_polling_data, 5) #SBE->HOST data set execution regObj.ExecuteTestOp(testPSUUtil.simSbeObj, host_test_data_failure5)
def readSeeprom(offset, size, destAddr, primStatus, secStatus): ''' #------------------------------------------------------------------------------------------------------------------------------ # SBE side test data - #------------------------------------------------------------------------------------------------------------------------------ ''' sbe_test_data = ( #----------------------------------------------------------------------------------------------------- # OP Reg ValueToWrite size Test Expected Data Description #----------------------------------------------------------------------------------------------------- # FFDC Size, Pass CMD Size [ "write", reg.REG_MBOX0, "0000010000F0D703", 8, "None", "Writing to MBOX0 address" ], # seeprom offset, Size [ "write", reg.REG_MBOX1, getdoubleword((offset << 32) + size), 8, "None", "Writing to MBOX1 address" ], # response Addr [ "write", reg.REG_MBOX2, getdoubleword(destAddr), 8, "None", "Writing to MBOX2 address" ], [ "write", reg.PSU_SBE_DOORBELL_REG_WO_OR, "8000000000000000", 8, "None", "Update SBE Doorbell register to interrupt SBE" ], ) ''' #--------------------- # Host side test data - SUCCESS #--------------------- ''' host_test_data_success = ( #---------------------------------------------------------------------------------------------------------------- # OP Reg ValueToWrite size Test Expected Data Description #---------------------------------------------------------------------------------------------------------------- [ "read", reg.REG_MBOX4, "0", 8, getdoubleword((primStatus << 48) + (secStatus << 32) + 0xF0D703), "Reading Host MBOX4 data to Validate" ], ) ''' #----------------------------------------------------------------------- # Do not modify - Used to simulate interrupt on Ringing Doorbell on Host #----------------------------------------------------------------------- ''' host_polling_data = ( #---------------------------------------------------------------------------------------------------------------- # OP Reg ValueToWrite size Test Expected Data Description #---------------------------------------------------------------------------------------------------------------- [ "read", reg.PSU_HOST_DOORBELL_REG_WO_OR, "0", 8, "8000000000000000", "Reading Host Doorbell for Interrupt Bit0" ], ) # Run Simics initially testUtil.runCycles(10000000) # Intialize the class obj instances regObj = testPSUUtil.registry() # Registry obj def for operation # HOST->SBE data set execution regObj.ExecuteTestOp(testPSUUtil.simSbeObj, sbe_test_data) print "\n Poll on Host side for INTR ...\n" #Poll on HOST DoorBell Register for interrupt regObj.pollingOn(testPSUUtil.simSbeObj, host_polling_data, 5) #SBE->HOST data set execution regObj.ExecuteTestOp(testPSUUtil.simSbeObj, host_test_data_success)