def main( ): testUtil.runCycles( 10000000 ) #PutMemAdu Test data = os.urandom(80) data = [ord(c) for c in data] testMemProcUtil.putmem(0x08000000, data, 0xA5) # GetMemAdu test readData = testMemProcUtil.getmem(0x08000000, 80, 0xA5) if(data == readData): print ("Success - Write-Read ADU") else: print data print readData raise Exception('data mistmach') # Partial Write test readData = testMemProcUtil.getmem(0x08000000, 40, 0xA5) data = os.urandom(8) data = [ord(c) for c in data] testMemProcUtil.putmem(0x08000008, data, 0xA5) readBackData = testMemProcUtil.getmem(0x08000000, 40, 0xA5) sandwichData = readData[:8]+data+readData[len(data)+8:] if(sandwichData == readBackData): print ("Success - Write_Part-Read ADU") else: print readData print data print readBackData print sandwichData raise Exception('data mistmach')
def main(): testUtil.runCycles(10000000) #PutMemAdu with ECC data = os.urandom(80) data = [ord(c) for c in data] testMemProcUtil.putmem(0x08000000, data, 0xAD, 0xEF) data = testMemProcUtil.addItagEcc(data, False, True, 0xEF) # GetMemAdu test with ECC readData = testMemProcUtil.getmem(0x08000000, 80, 0xAD) if (data == readData): print("Success - Write-Read ADU with ECC") else: print data print readData raise Exception('data mistmach') # Partial Write test readData = testMemProcUtil.getmem(0x08000000, 40, 0xAD) data = os.urandom(8) data = [ord(c) for c in data] testMemProcUtil.putmem(0x08000008, data, 0xAD, 0xEF) data = testMemProcUtil.addItagEcc(data, False, True, 0xEF) readBackData = testMemProcUtil.getmem(0x08000000, 40, 0xAD) sandwichData = readData[:9] + data + readData[len(data) + 9:] if (sandwichData == readBackData): print("Success - Write_Part-Read ADU with ECC") else: print readData print data print readBackData print sandwichData raise Exception('data mistmach')
def main(): testUtil.runCycles(10000000) # Test case 1: Valid lengths bytes = [1, 2, 4] offsets = {1: (0, 1, 2, 3, 4, 5, 6, 7), 2: (0, 2, 4, 6), 4: (0, 4)} for byte in bytes: for offset in offsets[byte]: #PutMemAdu Test data = os.urandom(byte) data = [ord(c) for c in data] testMemProcUtil.putmem(0x08000000 + offset, data, 0xA5) # GetMemAdu test readData = testMemProcUtil.getmem(0x08000000 + offset, byte, 0xA5) if (data == readData): print("Success - Write-Read ADU byte[" + str(byte) + "] offset[" + str(offset) + "]") else: print[hex(a) for a in data] print[hex(a) for a in readData] raise Exception('data mistmach') # Test case 2: Invalid length - 3 # GetMemAdu test testMemProcUtil.getmem_failure(0x08000000, 3, 0xA5, 0x0002000A) print("Success - invalid length test")
def main(): # Run Simics initially testUtil.runCycles(100000000) print "\n Execute SBE Test - negative testcase - less size\n" getCapabilities(0x08000000, 30, 0x00020019) print "\n Execute SBE Test - negative testcase - not multiple of PBA\n" getCapabilities(0x08000000, 129, 0x00020019) print "\n Execute SBE Test - positive testcase \n" getCapabilities(0x08000000, 128, 0) testUtil.runCycles(100000000) # read capabilities memory readData = testMemUtil.getmem(0x08000000, 128, 0x02) # ignore first 20 bytes which is a dynamic data readData = readData[28:] # get only valid data readData = readData[:len(capMsg)] if (capMsg == readData): print("Success - PSU get capabilities") else: print capMsg print readData raise Exception('data mistmach')
def main( ): testUtil.runCycles( 10000000 ) # Test case 1: 1byte access #PutMemAdu Test data = os.urandom(1) data = [ord(c) for c in data] testMemProcUtil.putmem(0x08000000, data, 0xA5) # GetMemAdu test readData = testMemProcUtil.getmem(0x08000000, 1, 0xA5) if(data == readData): print ("Success - Write-Read ADU") else: print data print readData raise Exception('data mistmach') # Test case 2: 2byte access #PutMemAdu Test data = os.urandom(2) data = [ord(c) for c in data] testMemProcUtil.putmem(0x08000000, data, 0xA5) # GetMemAdu test readData = testMemProcUtil.getmem(0x08000000, 2, 0xA5) if(data == readData): print ("Success - Write-Read ADU") else: print data print readData raise Exception('data mistmach') # Test case 3: 4byte access #PutMemAdu Test data = os.urandom(4) data = [ord(c) for c in data] testMemProcUtil.putmem(0x08000000, data, 0xA5) # GetMemAdu test readData = testMemProcUtil.getmem(0x08000000, 4, 0xA5) if(data == readData): print ("Success - Write-Read ADU") else: print data print readData raise Exception('data mistmach')
def main( ): # First Case without Fast Mode without LCO testUtil.runCycles( 10000000 ) # Get mem PBA - WO FMODE, WO LCO readData = testMemUtil.getmem(0x08200000, 128, 0x02)[44:][:-12] if(data == readData): print ("Success - Write-Read PBA - WO FMODE, WO LCO") else: print data print readData raise Exception('data mistmach')
def main(): # Run Simics initially testUtil.runCycles(10000000) print "\n Execute SBE Test - Read SBE Mem\n" ''' Test Case 1 ''' readSeeprom(0, 128, 0x08000000, 0, 0) print "SUCCESS: read seeprom valid" # Read data from cache and verify its contents # seeprom header seepprmHdr = 'XIP SEPM' #read from cache readData = testMemUtil.getmem(0x08000000, 0x80, 0x02) for byte in range(len(seepprmHdr)): if (ord(seepprmHdr[byte]) != readData[byte]): print "Data mismtach at: ", byte print " expected: ", ord(seepprmHdr[byte]) print " Actual: ", readData[byte] raise Exception('data mistmach') ''' Test Case 2 ''' readSeeprom(0x38CA0, 0x180, 0x8973780, 0, 0) print "SUCCESS: read seeprom HB testcase" ''' Test Case 3 ''' readSeeprom(0x0, 0x40, 0x08000000, 0x03, 0x19) print "SUCCESS: read seeprom size not aligned" ''' Test Case 4 ''' readSeeprom(0x3fe80, 0x180, 0x08000000, 0x03, 0x19) print "SUCCESS: read seeprom size exceeded" ''' Test Case 5 ''' readSeeprom(0x7, 0x40, 0x08000000, 0x03, 0x19) print "SUCCESS: read seeprom offset not aligned"
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( ): # First Case without Fast Mode without LCO testUtil.runCycles( 10000000 ) # Put mem PBA data = os.urandom(128*2) data = [ord(c) for c in data] testMemUtil.putmem(0x08000000, data, 0x02) # Get mem PBA - WO FMODE, WO LCO readData = testMemUtil.getmem(0x08000000, 128*2, 0x02) if(data == readData): print ("Success - Write-Read PBA - WO FMODE, WO LCO") else: print data print readData raise Exception('data mistmach') # Partial Write test readData = testMemUtil.getmem(0x08000000, 128*3, 0x02) data = os.urandom(128) data = [ord(c) for c in data] testMemUtil.putmem(0x08000000+128, data, 0x02) readBackData = testMemUtil.getmem(0x08000000, 128*3, 0x02) sandwichData = readData[:128]+data+readData[len(data)+128:] if(sandwichData == readBackData): print ("Success - Write_Part-Read PBA - WO FMODE, WO LCO") else: print readData print data print readBackData print sandwichData raise Exception('data mistmach') # Second Case with Fast Mode without LCO testUtil.runCycles( 10000000 ) # Put mem PBA - W FMODE, WO LCO data = os.urandom(128*2) data = [ord(c) for c in data] testMemUtil.putmem(0x08000000, data, 0x22) # Get mem PBA readData = testMemUtil.getmem(0x08000000, 128*2, 0x22) if(data == readData): print ("Success - Write-Read PBA - W FMODE, WO LCO") else: print data print readData raise Exception('data mistmach') # Partial Write test readData = testMemUtil.getmem(0x08000000, 128*3, 0x22) data = os.urandom(128) data = [ord(c) for c in data] testMemUtil.putmem(0x08000000+128, data, 0x22) readBackData = testMemUtil.getmem(0x08000000, 128*3, 0x22) sandwichData = readData[:128]+data+readData[len(data)+128:] if(sandwichData == readBackData): print ("Success - Write_Part-Read PBA - W FMODE, WO LCO") else: print readData print data print readBackData print sandwichData raise Exception('data mistmach') # Third Case with Fast Mode with LCO testUtil.runCycles( 10000000 ) # Put mem PBA - W FMODE, W LCO data = os.urandom(128*2) data = [ord(c) for c in data] testMemUtil.putmem(0x08000000, data, 0x62) # Get mem PBA readData = testMemUtil.getmem(0x08000000, 128*2, 0x62) if(data == readData): print ("Success - Write-Read PBA - W FMODE, W LCO") else: print data print readData raise Exception('data mistmach') # Partial Write test readData = testMemUtil.getmem(0x08000000, 128*3, 0x62) data = os.urandom(128) data = [ord(c) for c in data] testMemUtil.putmem(0x08000000+128, data, 0x62) readBackData = testMemUtil.getmem(0x08000000, 128*3, 0x62) sandwichData = readData[:128]+data+readData[len(data)+128:] if(sandwichData == readBackData): print ("Success - Write_Part-Read PBA - W FMODE, W LCO") else: print readData print data print readBackData print sandwichData raise Exception('data mistmach')
def main(): testUtil.runCycles( 10000000 ) try: # Close the HB dump region testMemProcUtil.setUnsecureMemRegion(0x08000000, 32*1024*1024, 0x0120, 0) # Test case 1: open RO mem region - success testcase = 1 testMemProcUtil.setUnsecureMemRegion(0x07000000, 1024, 0x0111, 0) # Test case 2: open RW mem region - success # This region is kept open for mem testcases - will be closed by # testUnsecureMemRegionsClose.py testcase = 2 testMemProcUtil.setUnsecureMemRegion(0x08000000, 0x2000, 0x0112, 0) # Test case 3: close RO mem region - success testcase = 3 testMemProcUtil.setUnsecureMemRegion(0x07000000, 1024, 0x0120, 0) # Test case 4: open 9th window - failure testcase = 4 # 2 testMemProcUtil.setUnsecureMemRegion(0x07000000, 0x10, 0x0111, 0) # 3 testMemProcUtil.setUnsecureMemRegion(0x07000010, 0x10, 0x0111, 0) # 4 testMemProcUtil.setUnsecureMemRegion(0x07000020, 0x10, 0x0111, 0) # 5 testMemProcUtil.setUnsecureMemRegion(0x07000030, 0x10, 0x0111, 0) # 6 testMemProcUtil.setUnsecureMemRegion(0x07000040, 0x10, 0x0111, 0) # 7 testMemProcUtil.setUnsecureMemRegion(0x07000050, 0x10, 0x0111, 0) # 8 testMemProcUtil.setUnsecureMemRegion(0x07000060, 0x10, 0x0111, 0) # 9 - failed - response expected - # SBE_PRI_USER_ERROR = 0x03 # SBE_SEC_MAXIMUM_MEM_REGION_EXCEEDED = 0x16 testMemProcUtil.setUnsecureMemRegion(0x07000070, 0x10, 0x0111, 0x00030016) # Test case 5: open existing window - failure testcase = 5 # response expected # SBE_PRI_USER_ERROR = 0x03 # SBE_SEC_MEM_REGION_AMEND_ATTEMPTED = 0x17 testMemProcUtil.setUnsecureMemRegion(0x07000060, 0x10, 0x0111, 0x00030017) # Test case 6: close non-existing window - failure testcase = 6 # response expected # SBE_PRI_USER_ERROR = 0x03 # SBE_SEC_MEM_REGION_NOT_FOUND = 0x15 testMemProcUtil.setUnsecureMemRegion(0x07000070, 0x10, 0x0120, 0x00030015) # Test case 7: remove a window in between - adding it again should pass testcase = 7 testMemProcUtil.setUnsecureMemRegion(0x07000020, 0x10, 0x0120, 0) testMemProcUtil.setUnsecureMemRegion(0x07000020, 0x10, 0x0111, 0) # Test case 8: remove all and open again to validate removal testcase = 8 # 1 testMemProcUtil.setUnsecureMemRegion(0x08000000, 0x2000, 0x0120, 0) # Open Window with start address not exsting, but size spanning across # existing window # failed - response expected - # SBE_PRI_USER_ERROR = 0x03 # SBE_SEC_MEM_REGION_AMEND_ATTEMPTED = 0x17 testMemProcUtil.setUnsecureMemRegion(0x06FFFFF0, 0x20, 0x0111, 0x00030017) # 2 testMemProcUtil.setUnsecureMemRegion(0x07000000, 0x10, 0x0120, 0) # 3 testMemProcUtil.setUnsecureMemRegion(0x07000010, 0x10, 0x0120, 0) # 4 testMemProcUtil.setUnsecureMemRegion(0x07000020, 0x10, 0x0120, 0) # 5 testMemProcUtil.setUnsecureMemRegion(0x07000030, 0x10, 0x0120, 0) # 6 testMemProcUtil.setUnsecureMemRegion(0x07000040, 0x10, 0x0120, 0) # 7 testMemProcUtil.setUnsecureMemRegion(0x07000050, 0x10, 0x0120, 0) # 8 testMemProcUtil.setUnsecureMemRegion(0x07000060, 0x10, 0x0120, 0) # 1 testMemProcUtil.setUnsecureMemRegion(0x08000000, 0x2000, 0x0112, 0) # 2 testMemProcUtil.setUnsecureMemRegion(0x07000000, 0x10, 0x0111, 0) testcase = "8: new window subsuming exsiting windows" # failed - response expected - # SBE_PRI_USER_ERROR = 0x03 # SBE_SEC_MEM_REGION_AMEND_ATTEMPTED = 0x17 testMemProcUtil.setUnsecureMemRegion(0x06FFFFF0, 0x30, 0x0111, 0x00030017) testcase = "8" # 3 testMemProcUtil.setUnsecureMemRegion(0x07000010, 0x10, 0x0111, 0) # 4 testMemProcUtil.setUnsecureMemRegion(0x07000020, 0x10, 0x0111, 0) # 5 testMemProcUtil.setUnsecureMemRegion(0x07000030, 0x10, 0x0111, 0) # 6 testMemProcUtil.setUnsecureMemRegion(0x07000040, 0x10, 0x0111, 0) # 7 testMemProcUtil.setUnsecureMemRegion(0x07000050, 0x10, 0x0111, 0) # 8 testMemProcUtil.setUnsecureMemRegion(0x07000060, 0x10, 0x0111, 0) # 9 - failed - response expected - # SBE_PRI_USER_ERROR = 0x03 # SBE_SEC_MAXIMUM_MEM_REGION_EXCEEDED = 0x16 testMemProcUtil.setUnsecureMemRegion(0x07000070, 0x10, 0x0111, 0x00030016) # Cleanup - close all the windows open except the one for mem testcases # 2 testMemProcUtil.setUnsecureMemRegion(0x07000000, 0x10, 0x0120, 0) # 3 testMemProcUtil.setUnsecureMemRegion(0x07000010, 0x10, 0x0120, 0) # 4 testMemProcUtil.setUnsecureMemRegion(0x07000020, 0x10, 0x0120, 0) # 5 testMemProcUtil.setUnsecureMemRegion(0x07000030, 0x10, 0x0120, 0) # 6 testMemProcUtil.setUnsecureMemRegion(0x07000040, 0x10, 0x0120, 0) # 7 testMemProcUtil.setUnsecureMemRegion(0x07000050, 0x10, 0x0120, 0) # 8 testMemProcUtil.setUnsecureMemRegion(0x07000060, 0x10, 0x0120, 0) # Test case 9: access memory in unopened window - ADU testcase = 9 testMemProcUtil.getmem_failure(0x07000060, 0x40, 0xA5, 0x00050014) # Test case 10: access memory in unopened window - PBA testcase = 10 testMemProcUtil.getmem_failure(0x07000080, 0x80, 0x02, 0x00050014) # Test case 11: access memory spanning across two windows testcase = 11 testMemProcUtil.setUnsecureMemRegion(0x07000040, 0x40, 0x0111, 0) testUtil.runCycles(100000) testMemProcUtil.setUnsecureMemRegion(0x07000080, 0x40, 0x0111, 0) testUtil.runCycles(100000) testMemProcUtil.setUnsecureMemRegion(0x070000C0, 0x40, 0x0111, 0) testUtil.runCycles(1000000) # start and end on edges testMemProcUtil.getmem(0x07000040, 0x80, 0xA5) testUtil.runCycles(100000) # start in between and end on edge testMemProcUtil.getmem(0x07000060, 0x60, 0xA5) testUtil.runCycles(100000) # start on edge and end in between testMemProcUtil.getmem(0x07000040, 0x60, 0xA5) testUtil.runCycles(100000) # start on edge and end in between - 3rd window testMemProcUtil.getmem(0x07000040, 0xA0, 0xA5) testUtil.runCycles(100000) testMemProcUtil.setUnsecureMemRegion(0x07000040, 0x40, 0x0120, 0) testUtil.runCycles(100000) testMemProcUtil.setUnsecureMemRegion(0x07000080, 0x40, 0x0120, 0) testUtil.runCycles(100000) testMemProcUtil.setUnsecureMemRegion(0x070000C0, 0x40, 0x0120, 0) testUtil.runCycles(100000) # Test case 12: read access in read-write window - ADU testcase = 12 testMemProcUtil.setUnsecureMemRegion(0x07000080, 128, 0x0112, 0) testMemProcUtil.getmem(0x07000080, 128, 0xA5) testMemProcUtil.setUnsecureMemRegion(0x07000080, 128, 0x0120, 0) # Test case 13: read access in read-write window - PBA testcase = 13 testMemProcUtil.getmem(0x08000080, 128, 0x02) # Test case 14: write access in read-only window - ADU testcase = 14 testMemProcUtil.setUnsecureMemRegion(0x07000080, 128, 0x0111, 0) data = os.urandom(8) data = [ord(c) for c in data] testMemProcUtil.putmem_failure(0x07000080, data, 0xA5, 0x00050014) # Test case 15: write access in read-only window - PBA testcase = 15 data = os.urandom(128) data = [ord(c) for c in data] testMemProcUtil.putmem_failure(0x07000080, data, 0x02, 0x00050014) testMemProcUtil.setUnsecureMemRegion(0x07000080, 128, 0x0120, 0) # Test case 16: access memory for which a partial window is open testcase = 16 testUtil.runCycles(1000000) testMemProcUtil.setUnsecureMemRegion(0x07000040, 0x30, 0x0111, 0) # start in between and end outside testUtil.runCycles(1000000) testMemProcUtil.getmem_failure(0x07000060, 0x40, 0xA5, 0x00050014) # start on edge and end outside testUtil.runCycles(1000000) testMemProcUtil.getmem_failure(0x07000040, 0x40, 0xA5, 0x00050014) # start and end within testUtil.runCycles(1000000) testMemProcUtil.getmem(0x07000050, 0x10, 0xA5) testMemProcUtil.setUnsecureMemRegion(0x07000040, 0x30, 0x0120, 0) except: print "FAILED Test Case:"+str(testcase) raise Exception('Failure')