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 ');
Example #2
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 [ 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)
Example #3
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)
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"
Example #5
0
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)
Example #6
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 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)
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 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)