Example #1
0
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')
Example #2
0
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')
Example #5
0
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')
Example #6
0
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"
Example #8
0
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)
Example #9
0
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')