diff --git a/lib/ras/host_utils.robot b/lib/ras/host_utils.robot
deleted file mode 100755
index 673fa42..0000000
--- a/lib/ras/host_utils.robot
+++ /dev/null
@@ -1,241 +0,0 @@
-*** Settings ***
-Documentation       Utility for error injection scenarios through HOST & BMC.
-Resource            ../../lib/rest_client.robot
-Resource            ../../lib/utils.robot
-Resource            ../../lib/common_utils.robot
-Variables           ../../lib/ras/variables.py
-Library             ../../lib/bmc_ssh_utils.py
-Library             ../../lib/gen_print.py
-Library             ../../lib/gen_robot_print.py
-
-Library             OperatingSystem
-
-*** Keywords ***
-
-Getscom Operations On OS
-    [Documentation]  Executes getscom command on OS with the given
-    ...              input command.
-    [Arguments]      ${input_cmd}
-    # Description of arguments:
-    # input_cmd      -l|--list-chips
-    #                -c|--chip <chip-id> <addr>
-
-    ${output}  ${stderr}  ${rc}=  OS Execute Command  getscom ${input_cmd}
-    RETURN  ${output}
-
-Gard Operations On OS
-    [Documentation]  Executes opal-gard command on OS with the given
-    ...              input command.
-    [Arguments]      ${input_cmd}
-    # Description of arguments:
-    # input_cmd      list/clear all/show <gard_record_id>
-
-    ${output}  ${stderr}  ${rc}=  OS Execute Command  opal-gard ${input_cmd}
-    RETURN  ${output}
-
-Putscom Operations On OS
-    [Documentation]  Executes putscom command on OS with the given
-    ...              input arguments.
-    [Arguments]      ${proc_chip_id}  ${fir_address}  ${value}
-    # Description of arguments:
-    # proc_chip_id        Processor ID (e.g '0', '8').
-    # fir_address         FIR (Fault isolation register) value (e.g. 2011400).
-    # value               (e.g 4000000000000000).
-
-    ${cmd}=  Catenate  putscom -c 0x${proc_chip_id} 0x${fir_address} 0x${value}
-    Start Command  ${cmd}
-
-Get ProcChipId From OS
-    [Documentation]  Get processor chip ID values based on the input.
-    [Arguments]      ${chip_type}  ${master_proc_chip}
-    # Description of arguments:
-    # chip_type         The chip type (Processor/Centaur).
-    # master_proc_chip  Processor chip type ('True' or 'False').
-
-    ${cmd}=  Catenate  -l | grep -i ${chip_type} | cut -c1-8
-    ${proc_chip_id}=  Getscom Operations On OS  ${cmd}
-    # Example output:
-    # getscom -l | grep processor | cut -c1-8
-    # 00000008     - False
-    # 00000000     - True
-
-    ${proc_ids}=  Split String  ${proc_chip_id}
-    ${proc_id}=  Run Keyword If  '${master_proc_chip}' == 'True'
-    ...  Get From List  ${proc_ids}  1
-    ...    ELSE  Get From List  ${proc_ids}  0
-
-    # Example output:
-    # 00000008
-    RETURN  ${proc_id}
-
-Get Core IDs From OS
-    [Documentation]  Get Core IDs corresponding to the input processor chip ID.
-    [Arguments]      ${proc_chip_id}
-    # Description of argument(s):
-    # proc_chip_id        Processor ID (e.g '0', '8').
-
-    ${cmd}=  Catenate  set -o pipefail ; ${probe_cpu_file_path}
-    ...    | grep -i 'CHIP ID: ${proc_chip_id}' | cut -c21-22
-    ${output}  ${stderr}  ${rc}=  OS Execute Command  ${cmd}
-    ${core_ids}=  Split String  ${output}
-    # Example output:
-    # ['2', '3', '4', '5', '6']
-    RETURN  ${core_ids}
-
-FIR Address Translation Through HOST
-    [Documentation]  Do FIR address translation through host for given FIR,
-    ...              core value & target type.
-    [Arguments]  ${fir_address}  ${core_id}  ${target_type}
-    # Description of argument(s):
-    # fir_address     FIR (Fault isolation register) value (e.g. 2011400).
-    # core_id         Core ID (e.g. 9).
-    # target_type     Target type (e.g. 'EQ', 'EX', 'C').
-
-    ${cmd}=  Catenate  set -o pipefail ; ${addr_translation_file_path} ${fir_address}
-    ...  ${core_id} | grep -i ${target_type}
-    ${output}  ${stderr}  ${rc}=  OS Execute Command  ${cmd}
-    ${translated_addr}=  Split String  ${output}  :${SPACE}0x
-    # Example output:
-    # 0x10010c00
-    RETURN  ${translated_addr[1]}
-
-Inject Error Through HOST
-    [Documentation]  Inject checkstop on multiple targets like
-    ...              CPU/CME/OCC/NPU/CAPP/MCA etc. through HOST.
-    ...              Test sequence:
-    ...              1. Boot To HOST.
-    ...              2. Clear any existing gard records.
-    ...              3. Inject Error on processor.
-    [Arguments]      ${fir_address}  ${value}  ${threshold_limit}
-    ...  ${master_proc_chip}=True
-    # Description of argument(s):
-    # fir_address         FIR (Fault isolation register) value (e.g. 2011400).
-    # value               (e.g 2000000000000000).
-    # threshold_limit     Threshold limit (e.g 1, 5, 32).
-    # master_proc_chip    Processor chip type (True' or 'False').
-
-    Delete Error Logs
-    Login To OS Host
-    Set Auto Reboot  1
-    Gard Operations On OS  clear all
-
-    # Fetch processor chip IDs.
-    ${proc_chip_id}=  Get ProcChipId From OS  Processor  ${master_proc_chip}
-
-    ${threshold_limit}=  Convert To Integer  ${threshold_limit}
-    FOR  ${count}  IN RANGE  ${threshold_limit}
-        Run Keyword  Putscom Operations On OS  ${proc_chip_id}  ${fir_address}
-        ...  ${value}
-        # Adding delay after each error injection.
-        Sleep  10s
-    END
-
-    # Adding delay to get error log after error injection.
-    Sleep  120s
-
-Code Update Unrecoverable Error Inject
-    [Documentation]  Inject UE MCACALFIR checkstop on processor through
-    ...   host during PNOR code update.
-
-    Inject Error Through HOST  05010800  4000000000000000  1
-
-Disable CPU States Through HOST
-    [Documentation]  Disable CPU states through host.
-
-    # Fetch number of states present for cpu0.
-    ${cmd}=  Catenate  ls /sys/devices/system/cpu/cpu0/cpuidle|grep state|wc -l
-    ${output}  ${stderr}  ${rc}=  OS Execute Command  ${cmd}
-    ${no_of_states}=  Convert To Integer  ${output}
-
-    # Disable state for all cpus.
-    FOR  ${count}  IN RANGE  ${no_of_states}
-        ${cmd}=  Catenate  SEPARATOR=  for file_path in /sys/devices/system/cpu/
-        ...  cpu*/cpuidle/state${count}/disable; do echo 1 > $file_path; done
-        ${output}  ${stderr}  ${rc}=  Run Keyword  OS Execute Command  ${cmd}
-    END
-
-Is Opal-PRD Service Enabled
-    [Documentation]  Check if Opal-PRD service is running & return either
-    ...              'enabled' or 'disabled'.
-
-    ${cmd}=  Catenate  systemctl list-unit-files | grep opal-prd
-    ${output}  ${stderr}  ${rc}=  OS Execute Command  ${cmd}
-    ${opal_prd_state}=  Split String  ${output}
-
-    # Example output from prior command:
-    # opal-prd.service enabled
-    RETURN  ${opal_prd_state[1]}
-
-Enable Opal-PRD Service On HOST
-    [Documentation]  Enable Opal-PRD service on host.
-
-    OS Execute Command  service opal-prd start
-    ${opal_prd_state}=  Is Opal-PRD Service Enabled
-    Should Contain  ${opal_prd_state}  enabled
-
-
-Inject Error Through BMC
-    [Documentation]  Inject checkstop on multiple targets like
-    ...              CPU/CME/OCC/NPU/CAPP/MCA etc. through BMC.
-    ...              Test sequence:
-    ...              1. Boot To HOST.
-    ...              2. Clear any existing gard records.
-    ...              3. Inject Error on processor.
-    [Arguments]      ${fir_address}  ${value}  ${threshold_limit}
-    ...  ${master_proc_chip}=True
-    # Description of argument(s):
-    # fir_address         FIR (Fault isolation register) value (e.g. '2011400').
-    # value               (e.g. '2000000000000000').
-    # threshold_limit     Recoverable error threshold limit (e.g. '1', '5', '32').
-
-    Delete Error Logs
-    Login To OS Host
-    Set Auto Reboot  1
-
-    Gard Operations On OS  clear all
-
-    ${threshold_limit}=  Convert To Integer  ${threshold_limit}
-    FOR  ${count}  IN RANGE  ${threshold_limit}
-        Pdbg  -p0 putscom 0x${fir_address} 0x${value}
-        # Adding delay after each error injection.
-        Sleep  10s
-    END
-
-    # Adding delay to get error log after error injection.
-    Sleep  120s
-
-
-Inject Error Through BMC At HOST Boot
-    [Documentation]  Inject error on multiple targets like
-    ...              CPU/CME/OCC/NPU/CAPP/MCA etc. through BMC at HOST Boot.
-    ...              Test sequence:
-    ...              1. Boot To HOST.
-    ...              2. Clear any existing gard records.
-    ...              3. Power off HOST and Boot.
-    ...              4. Inject Error on processor through BMC.
-    [Arguments]      ${fir_address}  ${value}
-    # Description of argument(s):
-    # fir_address    FIR (Fault isolation register) value (e.g. '2011400').
-    # value          (e.g. '2000000000000000').
-
-    Delete Error Logs
-
-    REST Power On  stack_mode=skip
-
-    Gard Operations On OS  clear all
-
-    REST Power Off
-    Set Auto Reboot  1
-    Initiate Host Boot  wait=${0}
-
-    Start SOL Console Logging   ${EXECDIR}/esol.log
-
-    Wait Until Keyword Succeeds  5 min  5 sec
-    ...  Shell Cmd  grep 'ISTEP *14' ${EXECDIR}/esol.log  quiet=1
-    ...  print_output=0  show_err=0  ignore_err=0
-
-    Pdbg  -p0 putscom 0x${fir_address} 0x${value}
-    # Adding delay to get error log after error injection.
-    Sleep  10s
-
-    Stop SOL Console Logging
diff --git a/lib/ras/variables.py b/lib/ras/variables.py
deleted file mode 100644
index e0369e7..0000000
--- a/lib/ras/variables.py
+++ /dev/null
@@ -1,85 +0,0 @@
-r"""
-Signature description in error log corresponding to error injection.
-"""
-
-DES_MCA_RECV1 = "'MCACALFIR[^0].*A MBA recoverable error'"
-DES_MCA_RECV32 = "'MCACALFIR[^2].*Excessive refreshes'"
-DES_MCA_UE = "'MCACALFIR[^10].*State machine'"
-
-
-DES_MCI_RECV1 = "'MCFIR[^0].*mc internal recoverable'"
-DES_MCI_UE = "'MCFIR[^1].*mc internal non recovervabl'"
-
-DES_NX_RECV1 = "'NXDMAENGFIR[^13].*Channel 4 GZIP ECC PE'"
-DES_NX_RECV32 = "'NXDMAENGFIR[^4].*Channel 0 842 engine ECC'"
-DES_NX_UE = "'NXDMAENGFIR[^5].*Channel 0 842 engine ECC'"
-
-DES_OBUS_RECV32 = "'OB_LFIR[^0].*CFIR internal parity error'"
-
-DES_CXA_RECV5 = "'CXAFIR[^34].*CXA CE on data received'"
-DES_CXA_RECV32 = "'CXAFIR[^2].*CXA CE on Master array'"
-DES_CXA_UE = "'CXAFIR[^1].*CXA System Xstop PE'"
-
-DES_NPU0_RECV32 = "'NPU0FIR[^13].*CQ CTL/SM ASBE Array single'"
-
-DES_L2_RECV1 = "'L2FIR[^8].*L2 directory CE'"
-DES_L2_RECV32 = "'L2FIR[^6].*L2 directory read CE'"
-DES_L2_UE = "'L2FIR[^9].*L2 directory stuck bit CE'"
-
-DES_L3_RECV1 = "'L3FIR[^17].*Received addr_error cresp'"
-DES_L3_RECV32 = "'L3FIR[^7].*L3 cache write data CE'"
-DES_L3_UE = "'L3FIR[^16].*addr_error cresp for mem'"
-
-DES_OCC_RECV1 = "'OCCFIR[^45].*C405_ECC_CE'"
-DES_CME_RECV1 = "'CMEFIR[^7].*PPE SRAM Uncorrectable Err'"
-DES_EQ_RECV32 = "'EQ_LFIR[^1].*CFIR internal parity'"
-DES_NCU_RECV1 = "'NCUFIR[^8].*NCU Store Queue Data'"
-DES_NCU_UE = "'NCUFIR[^0].*NCU store queue control'"
-
-DES_CORE_RECV5 = "'COREFIR[^0].*IFU SRAM Recoverable err'"
-DES_CORE_RECV1 = "'COREFIR[^30].*LSU Set Delete Err'"
-DES_CORE_UE = "'COREFIR[^1].*TC Checkstop'"
-
-# The following is an error injection dictionary with each entry consisting of:
-# - field_name: Targettype_threshold_limit .
-#   - A list consisting of the following fields:
-#     - field1: FIR (Fault isolation register) value.
-#     - field2: chip address.
-#     - field3: Error log signature description.
-
-ERROR_INJECT_DICT = {
-    "MCACALIFIR_RECV1": ["07010900", "8000000000000000", DES_MCA_RECV1],
-    "MCACALIFIR_RECV32": ["07010900", "2000000000000000", DES_MCA_RECV32],
-    "MCACALIFIR_UE": ["07010900", "0020000000000000", DES_MCA_UE],
-    "MCI_RECV1": ["05010800", "8000000000000000", DES_MCI_RECV1],
-    "MCI_UE": ["05010800", "4000000000000000", DES_MCI_UE],
-    "NX_RECV1": ["02011100", "0004000000000000", DES_NX_RECV1],
-    "NX_UE": ["02011100", "0400000000000000", DES_NX_UE],
-    "NX_RECV32": ["02011100", "0800000000000000", DES_NX_RECV32],
-    "CXA_RECV5": ["02010800", "0000000020000000", DES_CXA_RECV5],
-    "CXA_RECV32": ["02010800", "2000000000000000", DES_CXA_RECV32],
-    "CXA_UE": ["02010800", "4000000000000000", DES_CXA_UE],
-    "OBUS_RECV32": ["0904000a", "8000000000000000", DES_OBUS_RECV32],
-    "NPU0_RECV32": ["05013C00", "0004000000000000", DES_NPU0_RECV32],
-    "L2FIR_RECV1": ["10010800", "0080000000000000", DES_L2_RECV1],
-    "L2FIR_RECV32": ["10010800", "0200000000000000", DES_L2_RECV32],
-    "L2FIR_UE": ["10010800", "0040000000000000", DES_L2_UE],
-    "L3FIR_RECV1": ["10011800", "0000400000000000", DES_L3_RECV1],
-    "L3FIR_RECV32": ["10011800", "0100000000000000", DES_L3_RECV32],
-    "L3FIR_UE": ["10011800", "0000800000000000", DES_L3_UE],
-    "OCCFIR_RECV1": ["01010800", "0000000000040000", DES_OCC_RECV1],
-    "CMEFIR_RECV1": ["10012000", "0100000000000000", DES_CME_RECV1],
-    "EQFIR_RECV32": ["1004000A", "8000000000000000", DES_EQ_RECV32],
-    "NCUFIR_RECV1": ["10011400", "0080000000000000", DES_NCU_RECV1],
-    "NCUFIR_UE": ["10011400", "8000000000000000", DES_NCU_UE],
-    "COREFIR_RECV5": ["20010A40", "8000000000000000", DES_CORE_RECV5],
-    "COREFIR_RECV1": ["20010A40", "0000000200000000", DES_CORE_RECV1],
-    "COREFIR_UE": ["20010A40", "4000000000000000", DES_CORE_UE],
-}
-
-# Address translation files
-probe_cpu_file_path = "/root/probe_cpus.sh"
-addr_translation_file_path = "/root/scom_addr_p9.sh"
-
-cfam_address = "2801"
-mem_address = "8208000"
diff --git a/openpower/ras/__init__.robot b/openpower/ras/__init__.robot
deleted file mode 100755
index 18bf364..0000000
--- a/openpower/ras/__init__.robot
+++ /dev/null
@@ -1,28 +0,0 @@
-*** Settings ***
-Documentation  Set metadata for test suite.
-
-Library          SSHLibrary
-Resource         ../../lib/connection_client.robot
-Resource         ../../lib/rest_client.robot
-Resource         ../../lib/utils.robot
-Resource         ../../lib/code_update_utils.robot
-
-Suite Setup      Log System Driver Data
-
-*** Keywords ***
-
-Log System Driver Data
-    [Documentation]  Log system driver information.
-
-    Open Connection And Log In
-    ${output}  ${stderr}=  Execute Command  grep ^VERSION_ID= /etc/os-release
-    ...  return_stderr=True
-    Should Be Empty  ${stderr}
-    Log  ${output}
-
-    ${software}=  Get Host Software Objects Details
-    Log  ${software}
-
-    ${bmc_model}=  Get BMC System Model
-    Log  BMC Model=${bmc_model}
-
diff --git a/openpower/ras/ras_utils.robot b/openpower/ras/ras_utils.robot
deleted file mode 100755
index ce3ee0b..0000000
--- a/openpower/ras/ras_utils.robot
+++ /dev/null
@@ -1,227 +0,0 @@
-*** Settings ***
-Documentation       Utility for RAS test scenarios through HOST & BMC.
-Resource            ../../lib/utils.robot
-Resource            ../../lib/ras/host_utils.robot
-Resource            ../../lib/resource.robot
-Resource            ../../lib/state_manager.robot
-Resource            ../../lib/boot_utils.robot
-Variables           ../../lib/ras/variables.py
-Variables           ../../data/variables.py
-Resource            ../../lib/dump_utils.robot
-
-Library             DateTime
-Library             OperatingSystem
-Library             random
-Library             Collections
-
-*** Variables ***
-${stack_mode}       normal
-
-*** Keywords ***
-
-Verify And Clear Gard Records On HOST
-    [Documentation]  Verify And Clear gard records on HOST.
-
-    ${output}=  Gard Operations On OS  list
-    Should Not Contain  ${output}  No GARD
-    Gard Operations On OS  clear all
-
-Verify Error Log Entry
-    [Documentation]  Verify error log entry & signature description.
-    [Arguments]  ${signature_desc}  ${log_prefix}
-    # Description of argument(s):
-    # signature_desc  Error log signature description.
-    # log_prefix      Log path prefix.
-
-
-    Error Logs Should Exist
-
-    Collect eSEL Log  ${log_prefix}
-    ${error_log_file_path}=  Catenate  ${log_prefix}esel.txt
-    ${rc}  ${output}=  Run and Return RC and Output
-    ...  grep -i ${signature_desc} ${error_log_file_path}
-    Should Be Equal  ${rc}  ${0}
-    Should Not Be Empty  ${output}
-
-Inject Recoverable Error With Threshold Limit
-    [Documentation]  Inject and verify recoverable error on processor through
-    ...              BMC/HOST.
-    ...              Test sequence:
-    ...              1. Inject recoverable error on a given target
-    ...                 (e.g: Processor core, CAPP, MCA) through BMC/HOST.
-    ...              2. Check If HOST is running.
-    ...              3. Verify error log entry & signature description.
-    ...              4. Verify & clear gard records.
-    [Arguments]      ${interface_type}  ${fir_address}  ${value}  ${threshold_limit}
-    ...              ${signature_desc}  ${log_prefix}
-    # Description of argument(s):
-    # interface_type      Inject error through 'BMC' or 'HOST'.
-    # fir_address         FIR (Fault isolation register) value (e.g. 2011400).
-    # value               (e.g 2000000000000000).
-    # threshold_limit     Threshold limit (e.g 1, 5, 32).
-    # signature_desc      Error log signature description.
-    # log_prefix          Log path prefix.
-
-    Run Keyword  Inject Error Through ${interface_type}
-    ...  ${fir_address}  ${value}  ${threshold_limit}  ${master_proc_chip}
-
-    Is Host Running
-    ${output}=  Gard Operations On OS  list
-    Should Contain  ${output}  No GARD
-    Verify Error Log Entry  ${signature_desc}  ${log_prefix}
-
-
-Inject Unrecoverable Error
-    [Documentation]  Inject and verify unrecoverable error on processor through
-    ...              BMC/HOST.
-    ...              Test sequence:
-    ...              1. Inject unrecoverable error on a given target
-    ...                 (e.g: Processor core, CAPP, MCA) through BMC/HOST.
-    ...              2. Check If HOST is rebooted.
-    ...              3. Verify & clear gard records.
-    ...              4. Verify error log entry & signature description.
-    ...              5. Verify & clear dump entry.
-    [Arguments]      ${interface_type}  ${fir_address}  ${value}  ${threshold_limit}
-    ...              ${signature_desc}  ${log_prefix}  ${bmc_reboot}=${0}
-    # Description of argument(s):
-    # interface_type      Inject error through 'BMC' or 'HOST'.
-    # fir_address         FIR (Fault isolation register) value (e.g. 2011400).
-    # value               (e.g 2000000000000000).
-    # threshold_limit     Threshold limit (e.g 1, 5, 32).
-    # signature_desc      Error Log signature description.
-    #                     (e.g 'mcs(n0p0c0) (MCFIR[0]) mc internal recoverable')
-    # log_prefix          Log path prefix.
-    # bmc_reboot          Do bmc reboot If bmc_reboot is set.
-
-    Run Keyword  Inject Error Through ${interface_type}
-    ...  ${fir_address}  ${value}  ${threshold_limit}  ${master_proc_chip}
-
-    # Do BMC Reboot after error injection.
-    Run Keyword If  ${bmc_reboot}  Run Keywords
-    ...    Initiate BMC Reboot
-    ...    Wait For BMC Ready
-    ...    Initiate Host PowerOff
-    ...    Initiate Host Boot
-    ...  ELSE
-    ...    Wait Until Keyword Succeeds  500 sec  20 sec  Is Host Rebooted
-
-    Wait for OS
-    Verify Error Log Entry  ${signature_desc}  ${log_prefix}
-
-    ${dump_service_status}  ${stderr}  ${rc}=  BMC Execute Command
-    ...  systemctl status xyz.openbmc_project.Dump.Manager.service
-    Should Contain  ${dump_service_status}  Active: active (running)
-
-    ${resp}=  OpenBMC Get Request  ${DUMP_URI}
-    Run Keyword If  '${resp.status_code}' == '${HTTP_NOT_FOUND}'
-    ...  Set Test Variable  ${DUMP_ENTRY_URI}  /xyz/openbmc_project/dump/entry/
-
-    Read Properties  ${DUMP_ENTRY_URI}list
-    Delete All BMC Dump
-    Verify And Clear Gard Records On HOST
-
-
-Fetch FIR Address Translation Value
-    [Documentation]  Fetch FIR address translation value through HOST.
-    [Arguments]  ${fir_address}  ${target_type}
-    # Description of argument(s):
-    # fir_address          FIR (Fault isolation register) value (e.g. '2011400').
-    # core_id              Core ID (e.g. '9').
-    # target_type          Target type (e.g. 'EX', 'EQ', 'C').
-
-    Login To OS Host
-    Copy Address Translation Utils To HOST OS
-
-    # Fetch processor chip IDs.
-    ${proc_chip_id}=  Get ProcChipId From OS  Processor  ${master_proc_chip}
-    # Example output:
-    # 00000000
-
-    ${core_ids}=  Get Core IDs From OS  ${proc_chip_id[-1]}
-    # Example output:
-    #./probe_cpus.sh | grep 'CHIP ID: 0' | cut -c21-22
-    # ['14', '15', '16', '17']
-
-    # Ignoring master core ID.
-    ${output}=  Get Slice From List  ${core_ids}  1
-    # Feth random non-master core ID.
-    ${core_ids_sub_list}=   Evaluate  random.sample(${core_ids}, 1)  random
-    ${core_id}=  Get From List  ${core_ids_sub_list}  0
-    ${translated_fir_addr}=  FIR Address Translation Through HOST
-    ...  ${fir_address}  ${core_id}  ${target_type}
-
-    RETURN  ${translated_fir_addr}
-
-RAS Test SetUp
-    [Documentation]  Validates input parameters.
-
-    Should Not Be Empty
-    ...  ${OS_HOST}  msg=You must provide DNS name/IP of the OS host.
-    Should Not Be Empty
-    ...  ${OS_USERNAME}  msg=You must provide OS host user name.
-    Should Not Be Empty
-    ...  ${OS_PASSWORD}  msg=You must provide OS host user password.
-
-    Smart Power Off
-
-    # Boot to OS.
-    REST Power On  quiet=${1}
-    # Adding delay after host bring up.
-    Sleep  60s
-
-RAS Suite Setup
-    [Documentation]  Create RAS log directory to store all RAS test logs.
-
-    ${RAS_LOG_DIR_PATH}=  Catenate  ${EXECDIR}/RAS_logs/
-    Set Suite Variable  ${RAS_LOG_DIR_PATH}
-    Set Suite Variable  ${master_proc_chip}  False
-
-    Create Directory  ${RAS_LOG_DIR_PATH}
-    OperatingSystem.Directory Should Exist  ${RAS_LOG_DIR_PATH}
-    Empty Directory  ${RAS_LOG_DIR_PATH}
-
-    Should Not Be Empty  ${ESEL_BIN_PATH}
-    Set Environment Variable  PATH  %{PATH}:${ESEL_BIN_PATH}
-
-    # Boot to Os.
-    REST Power On  quiet=${1}
-
-    # Check Opal-PRD service enabled on host.
-    ${opal_prd_state}=  Is Opal-PRD Service Enabled
-    Run Keyword If  '${opal_prd_state}' == 'disabled'
-    ...  Enable Opal-PRD Service On HOST
-
-RAS Suite Cleanup
-    [Documentation]  Perform RAS suite cleanup and verify that host
-    ...              boots after test suite run.
-
-    # Boot to OS.
-    REST Power On
-    Delete Error Logs
-    Gard Operations On OS  clear all
-
-
-Inject Error At HOST Boot Path
-
-    [Documentation]  Inject and verify recoverable error on processor through
-    ...              BMC using pdbg tool at HOST Boot path.
-    ...              Test sequence:
-    ...              1. Inject error on a given target
-    ...                 (e.g: Processor core, CAPP, MCA) through BMC using
-    ...                 pdbg tool at HOST Boot path.
-    ...              2. Check If HOST is rebooted and running.
-    ...              3. Verify error log entry & signature description.
-    ...              4. Verify & clear gard records.
-    [Arguments]      ${fir_address}  ${value}  ${signature_desc}  ${log_prefix}
-    # Description of argument(s):
-    # fir_address         FIR (Fault isolation register) value (e.g. 2011400).
-    # value               (e.g 2000000000000000).
-    # signature_desc      Error log signature description.
-    # log_prefix          Log path prefix.
-
-    Inject Error Through BMC At HOST Boot  ${fir_address}  ${value}
-
-    Wait Until Keyword Succeeds  500 sec  20 sec  Is Host Rebooted
-    Wait for OS
-    Verify Error Log Entry  ${signature_desc}  ${log_prefix}
-    Verify And Clear Gard Records On HOST
diff --git a/openpower/ras/test_bmc_ras.robot b/openpower/ras/test_bmc_ras.robot
deleted file mode 100755
index e90ac08..0000000
--- a/openpower/ras/test_bmc_ras.robot
+++ /dev/null
@@ -1,331 +0,0 @@
-*** Settings ***
-Documentation       This suite tests checkstop operations through BMC using
-...                 pdbg utility.
-
-Resource            ../../lib/openbmc_ffdc.robot
-Resource            ../../lib/openbmc_ffdc_methods.robot
-Resource            ../../lib/openbmc_ffdc_utils.robot
-Resource            ../../openpower/ras/ras_utils.robot
-Variables           ../../lib/ras/variables.py
-Variables           ../../data/variables.py
-
-Library             DateTime
-Library             OperatingSystem
-Library             random
-Library             Collections
-
-Suite Setup         RAS Suite Setup
-Test Setup          RAS Test Setup
-Test Teardown       FFDC On Test Case Fail
-Suite Teardown      RAS Suite Cleanup
-
-Test Tags          BMC_RAS
-
-*** Variables ***
-${stack_mode}       normal
-
-
-*** Test Cases ***
-
-# Memory Controller Async (MCACALIFIR) related error injection.
-
-Verify Pdbg Recoverable Callout Handling For MCA With Threshold 1
-    [Documentation]  Verify recoverable callout handling for MCACALIFIR
-    ...              with threshold 1 using pdbg tool.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_MCA_With_Threshold_1
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  MCACALIFIR_RECV1
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}mcacalfir_th1
-    Inject Recoverable Error With Threshold Limit
-    ...  BMC  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-Verify Pdbg Recoverable Callout Handling For MCA With Threshold 32
-    [Documentation]  Verify recoverable callout handling for MCACALIFIR
-    ...              with threshold 32 using pdbg tool.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_MCA_With_Threshold_32
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  MCACALIFIR_RECV32
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}mcacalfir_th32
-    Inject Recoverable Error With Threshold Limit
-    ...  BMC  ${value[0]}  ${value[1]}  32  ${value[2]}  ${err_log_path}
-
-Verify Pdbg Unrecoverable Callout Handling For MCA
-    [Documentation]  Verify unrecoverable callout handling for MCACALIFIR
-    ...              with pdbg tool.
-    [Tags]  Verify_Pdbg_Unrecoverable_Callout_Handling_For_MCA
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  MCACALIFIR_UE
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}mcacalfir
-    Inject Unrecoverable Error  BMC
-    ...  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-#  Memory controller Interface (MCIFIR) related error injection.
-
-Verify Pdbg Recoverable Callout Handling For MCI With Threshold 1
-    [Documentation]  Verify recoverable callout handling for MCI
-    ...              with threshold 1 using pdbg tool.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_MCI_With_Threshold_1
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  MCI_RECV1
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}mcifir_th1
-    Inject Recoverable Error With Threshold Limit
-    ...  BMC  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-Verify Pdbg Unrecoverable Callout Handling For MCI
-    [Documentation]  Verify unrecoverable callout handling for mci
-    ...              with pdbg tool.
-    [Tags]  Verify_Pdbg_Unrecoverable_Callout_Handling_For_MCI
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  MCI_UE
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}mcifir
-    Inject Unrecoverable Error  BMC
-    ...  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-
-# CAPP accelerator (CXAFIR) related error injection.
-
-Verify Pdbg Recoverable Callout Handling For CXA With Threshold 5
-    [Documentation]  Verify recoverable callout handling for CXA
-    ...              with threshold 5 using pdbg tool.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_CXA_With_Threshold_5
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  CXA_RECV5
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}cxafir_th5
-    Inject Recoverable Error With Threshold Limit
-    ...  BMC  ${value[0]}  ${value[1]}  5  ${value[2]}  ${err_log_path}
-
-Verify Pdbg Recoverable Callout Handling For CXA With Threshold 32
-    [Documentation]  Verify recoverable callout handling for CXA
-    ...              with threshold 32 using pdbg tool.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_CXA_With_Threshold_32
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  CXA_RECV32
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}cxafir_th32
-    Inject Recoverable Error With Threshold Limit
-    ...  BMC  ${value[0]}  ${value[1]}  32  ${value[2]}  ${err_log_path}
-
-Verify Pdbg Unrecoverable Callout Handling For CXA
-    [Documentation]  Verify unrecoverable callout handling for CXAFIR
-    ...              with pdbg tool.
-    [Tags]  Verify_Pdbg_Unrecoverable_Callout_Handling_For_CXA
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  CXA_UE
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}cxafir_ue
-    Inject Unrecoverable Error  BMC
-    ...  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-#  Optical BUS (OBUSFIR) related error injection.
-
-Verify Pdbg Recoverable Callout Handling For OBUS With Threshold 32
-    [Documentation]  Verify recoverable callout handling for OBUS
-    ...              with threshold 32 using pdbg tool.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_OBUS_With_Threshold_32
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  OBUS_RECV32
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}obusfir_th32
-    Inject Recoverable Error With Threshold Limit
-    ...  BMC  ${value[0]}  ${value[1]}  32  ${value[2]}  ${err_log_path}
-
-# NVIDIA graphics processing units (NPU0FIR) related error injection.
-
-Verify Pdbg Recoverable Callout Handling For NPU0 With Threshold 32
-    [Documentation]  Verify recoverable callout handling for NPU0
-    ...              with threshold 32 using pdbg tool.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_NPU0_With_Threshold_32
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  NPU0_RECV32
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}npu0fir_th32
-    Inject Recoverable Error With Threshold Limit
-    ...  BMC  ${value[0]}  ${value[1]}  32  ${value[2]}  ${err_log_path}
-
-#  NEST accelerator DMA Engine (NXDMAENGFIR) related error injection.
-
-Verify Pdbg Recoverable Callout Handling For NXDMAENG With Threshold 1
-    [Documentation]  Verify recoverable callout handling for NXDMAENG
-    ...              with threshold 1 using pdbg tool.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_NXDMAENG_With_Threshold_1
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  NX_RECV1
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}nxfir_th1
-    Inject Recoverable Error With Threshold Limit
-    ...  BMC  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-
-Verify Pdbg Recoverable Callout Handling For NXDMAENG With Threshold 32
-    [Documentation]  Verify recoverable callout handling for NXDMAENG
-    ...              with threshold 32 using pdbg tool.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_NXDMAENG_With_Threshold_32
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  NX_RECV32
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}nxfir_th32
-    Inject Recoverable Error With Threshold Limit
-    ...  BMC  ${value[0]}  ${value[1]}  32  ${value[2]}  ${err_log_path}
-
-
-#  L2FIR related error injection.
-
-Verify Pdbg Recoverable Callout Handling For L2FIR With Threshold 1
-    [Documentation]  Verify recoverable callout handling for L2FIR
-    ...              with threshold 1 using pdbg tool.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_L2FIR_With_Threshold_1
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  L2FIR_RECV1
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}l2fir_th1
-    Inject Recoverable Error With Threshold Limit
-    ...  BMC  ${translated_fir}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-Verify Pdbg Recoverable Callout Handling For L2FIR With Threshold 32
-    [Documentation]  Verify recoverable callout handling for L2FIR
-    ...              with threshold 32 using pdbg tool.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_L2FIR_With_Threshold_32
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  L2FIR_RECV32
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}l2fir_th32
-    Inject Recoverable Error With Threshold Limit
-    ...  BMC  ${translated_fir}  ${value[1]}  32  ${value[2]}  ${err_log_path}
-
-Verify Pdbg Unrecoverable Callout Handling For L2FIR
-    [Documentation]  Verify unrecoverable callout handling for L2FIR
-    ...              with pdbg tool.
-    [Tags]  Verify_Pdbg_Unrecoverable_Callout_Handling_For_L2FIR
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  L2FIR_UE
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}l2fir_ue
-    Inject Unrecoverable Error  BMC
-    ...  ${translated_fir}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-#  L3FIR related error injection.
-
-Verify Pdbg Recoverable Callout Handling For L3FIR With Threshold 1
-    [Documentation]  Verify recoverable callout handling for L3FIR
-    ...              with threshold 1 using pdbg tool.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_L3FIR_With_Threshold_1
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  L3FIR_RECV1
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}l3fir_th1
-    Inject Recoverable Error With Threshold Limit
-    ...  BMC  ${translated_fir}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-Verify Pdbg Recoverable Callout Handling For L3FIR With Threshold 32
-    [Documentation]  Verify recoverable callout handling for L3FIR
-    ...              with threshold 32 using pdbg tool.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_L3FIR_With_Threshold_32
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  L3FIR_RECV32
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}l3fir_th32
-    Inject Recoverable Error With Threshold Limit
-    ...  BMC  ${translated_fir}  ${value[1]}  32  ${value[2]}  ${err_log_path}
-
-Verify Pdbg Unrecoverable Callout Handling For L3FIR
-    [Documentation]  Verify unrecoverable callout handling for L3FIR
-    ...              with pdbg tool.
-    [Tags]  Verify_Pdbg_Unrecoverable_Callout_Handling_For_L3FIR
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  L3FIR_UE
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}l3fir_ue
-    Inject Unrecoverable Error  BMC
-    ...  ${translated_fir}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-# On chip controller (OCCFIR) related error injection.
-
-Verify Pdbg Recoverable Callout Handling For OCC With Threshold 1
-    [Documentation]  Verify recoverable callout handling for OCCFIR
-    ...              with threshold 1 using pdbg tool.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_OCC_With_Threshold_1
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  OCCFIR_RECV1
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}occfir_th1
-    Inject Recoverable Error With Threshold Limit
-    ...  BMC  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-# Core management engine (CMEFIR) related error injection.
-
-Verify Pdbg Recoverable Callout Handling For CMEFIR With Threshold 1
-    [Documentation]  Verify recoverable callout handling for CMEFIR
-    ...              with threshold 1 using pdbg tool.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_CMEFIR_With_Threshold_1
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  CMEFIR_RECV1
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}cmefir_th1
-    Inject Recoverable Error With Threshold Limit
-    ...  BMC  ${translated_fir}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-# Nest control vunit (NCUFIR) related error injection.
-
-Verify Pdbg Recoverable Callout Handling For NCUFIR With Threshold 1
-    [Documentation]  Verify recoverable callout handling for NCUFIR
-    ...              with threshold 1 using pdbg tool.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_NCUFIR_With_Threshold_1
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  NCUFIR_RECV1
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}ncufir_th1
-    Inject Recoverable Error With Threshold Limit
-    ...  BMC  ${translated_fir}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-Verify Pdbg Unrecoverable Callout Handling For NCUFIR
-    [Documentation]  Verify unrecoverable callout handling for NCUFIR
-    ...              with pdbg tool.
-    [Tags]  Verify_Pdbg_Unrecoverable_Callout_Handling_For_NCUFIR
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  NCUFIR_UE
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}ncufir_ue
-    Inject Unrecoverable Error  BMC
-    ...  ${translated_fir}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-# Core FIR related error injection.
-
-Verify Pdbg Recoverable Callout Handling For CoreFIR With Threshold 5
-    [Documentation]  Verify recoverable callout handling for CoreFIR
-    ...              with threshold 5 using pdbg tool.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_CoreFIR_With_Threshold_5
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  COREFIR_RECV5
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    Disable CPU States Through HOST
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}corefir_th5
-    Inject Recoverable Error With Threshold Limit
-    ...  BMC  ${value[0]}  ${value[1]}  5  ${value[2]}  ${err_log_path}
-
-Verify Pdbg Recoverable Callout Handling For CoreFIR With Threshold 1
-    [Documentation]  Verify recoverable callout handling for CoreFIR
-    ...              with threshold 1 using pdbg tool.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_CoreFIR_With_Threshold_1
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  COREFIR_RECV1
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    Disable CPU States Through HOST
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}corefir_th1
-    Inject Recoverable Error With Threshold Limit
-    ...  BMC  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-Verify Pdbg Unrecoverable Callout Handling For CoreFIR
-    [Documentation]  Verify unrecoverable callout handling for CoreFIR
-    ...              with pdbg tool.
-    [Tags]  Verify_Pdbg_Unrecoverable_Callout_Handling_For_CoreFIR
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  COREFIR_UE
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    Disable CPU States Through HOST
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}corefir_ue
-    Inject Unrecoverable Error  BMC
-    ...  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-Verify Pdbg Recoverable Callout Handling For EQFIR With Threshold 32
-    [Documentation]  Verify recoverable callout handling for L3FIR
-    ...              with threshold 32 using pdbg tool.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_EQFIR_With_Threshold_32
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  EQFIR_RECV32
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EQ
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}eqfir_th32
-    Inject Recoverable Error With Threshold Limit
-    ...  BMC  ${translated_fir}  ${value[1]}  32  ${value[2]}  ${err_log_path}
diff --git a/openpower/ras/test_host_boot_ras.robot b/openpower/ras/test_host_boot_ras.robot
deleted file mode 100644
index 88f04dd..0000000
--- a/openpower/ras/test_host_boot_ras.robot
+++ /dev/null
@@ -1,183 +0,0 @@
-*** Settings ***
-Documentation       This suite tests checkstop operations through BMC using
-...                 pdbg utility during HOST Boot path.
-
-Resource            ../../lib/openbmc_ffdc.robot
-Resource            ../../lib/openbmc_ffdc_utils.robot
-Resource            ../../lib/openbmc_ffdc_methods.robot
-Resource            ../../openpower/ras/ras_utils.robot
-Variables           ../../lib/ras/variables.py
-Variables           ../../data/variables.py
-
-Library             DateTime
-Library             OperatingSystem
-Library             random
-Library             Collections
-
-Suite Setup         RAS Suite Setup
-Test Setup          RAS Test Setup
-Test Teardown       FFDC On Test Case Fail
-Suite Teardown      RAS Suite Cleanup
-
-Test Tags          Host_Boot_RAS
-
-*** Variables ***
-${stack_mode}       normal
-
-*** Test Cases ***
-
-Verify Pdbg Recoverable Callout Handling For MCA During Host Boot
-
-    [Documentation]  Verify recoverable callout handling for MCACALIFIR
-    ...              using pdbg tool during Host Boot path.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_MCA_During_Host_Boot
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  MCACALIFIR_RECV1
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}mcacalfir_th1
-
-    Inject Error At HOST Boot Path  ${value[0]}  ${value[1]}
-    ...  ${value[2]}  ${err_log_path}
-
-#  Memory buffer (MCIFIR) related error injection.
-
-Verify Pdbg Recoverable Callout Handling For MCI During Host Boot
-    [Documentation]  Verify recoverable callout handling for MCI
-    ...              using pdbg tool during Host Boot path.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_MCI_During_Host_Boot
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  MCI_RECV1
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}mcifir_th1
-
-    Inject Error At HOST Boot Path  ${value[0]}  ${value[1]}
-    ...  ${value[2]}  ${err_log_path}
-
-
-Verify Pdbg Recoverable Callout Handling For NXDMAENG During Host Boot
-    [Documentation]  Verify recoverable callout handling for  NXDMAENG
-    ...              using pdbg tool during Host Boot path.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_NXDMAENG_During_Host_Boot
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  NX_RECV1
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}nxfir_th1
-
-    Inject Error At HOST Boot Path  ${value[0]}  ${value[1]}
-    ...  ${value[2]}  ${err_log_path}
-
-
-#  L2FIR related error injection.
-
-Verify Pdbg Recoverable Callout Handling For L2FIR During Host Boot
-    [Documentation]  Verify recoverable callout handling for L2FIR
-    ...              using pdbg tool during Host Boot path.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_L2FIR_During_Host_Boot
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  L2FIR_RECV1
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}l2fir_th1
-
-    Inject Error At HOST Boot Path  ${translated_fir}  ${value[1]}
-    ...  ${value[2]}  ${err_log_path}
-
-
-# On chip controller (OCCFIR) related error injection.
-
-Verify Pdbg Recoverable Callout Handling For OCC During Host Boot
-    [Documentation]  Verify recoverable callout handling for OCCFIR
-    ...              using pdbg tool during Host Boot path.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_OCC_During_Host_Boot
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  OCCFIR_RECV1
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}occfir_th1
-
-
-    Inject Error At HOST Boot Path  ${value[0]}  ${value[1]}
-    ...  ${value[2]}  ${err_log_path}
-
-# Nest control vunit (NCUFIR) related error injection.
-
-Verify Pdbg Recoverable Callout Handling For NCUFIR During Host Boot
-    [Documentation]  Verify recoverable callout handling for NCUFIR
-    ...              using pdbg tool during Host Boot path.
-    [Tags]  Verify_Pdbg_Recoverable_Callout_Handling_For_NCUFIR_During_Host_Boot
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  NCUFIR_RECV1
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}ncufir_th1
-
-    Inject Error At HOST Boot Path  ${translated_fir}  ${value[1]}
-    ...  ${value[2]}  ${err_log_path}
-
-Verify Pdbg Unrecoverable Callout Handling For NCUFIR During Host Boot
-    [Documentation]  Verify unrecoverable callout handling for NCUFIR
-    ...              using pdbg tool during Host Boot path.
-    [Tags]  Verify_Pdbg_Unrecoverable_Callout_Handling_For_NCUFIR_During_Host_Boot
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  NCUFIR_UE
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}ncufir_ue
-    Inject Error At HOST Boot Path  ${value[0]}  ${value[1]}
-    ...  ${value[2]}  ${err_log_path}
-
-Verify Pdbg Unrecoverable Callout Handling For L3FIR During Host Boot
-    [Documentation]  Verify unrecoverable callout handling for L3FIR
-    ...              using pdbg tool during Host Boot path.
-    [Tags]  Verify_Pdbg_Unrecoverable_Callout_Handling_For_L3FIR_During_Host_Boot
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  L3FIR_UE
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}l3fir_ue
-    Inject Error At HOST Boot Path  ${value[0]}  ${value[1]}
-    ...  ${value[2]}  ${err_log_path}
-
-Verify Pdbg Unrecoverable Callout Handling For L2FIR During Host Boot
-    [Documentation]  Verify unrecoverable callout handling for L2FIR
-    ...              using pdbg tool during Host Boot path.
-    [Tags]  Verify_Pdbg_Unrecoverable_Callout_Handling_For_L2FIR_During_Host_Boot
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  L2FIR_UE
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}l2fir_ue
-    Inject Error At HOST Boot Path  ${value[0]}  ${value[1]}
-    ...  ${value[2]}  ${err_log_path}
-
-Verify Pdbg Unrecoverable Callout Handling For CXA During Host Boot
-    [Documentation]  Verify unrecoverable callout handling for CXAFIR
-    ...              using pdbg tool during Host Boot path.
-    [Tags]  Verify_Pdbg_Unrecoverable_Callout_Handling_For_CXA_During_Host_Boot
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  CXA_UE
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}cxafir_ue
-    Inject Error At HOST Boot Path  ${value[0]}  ${value[1]}
-    ...  ${value[2]}  ${err_log_path}
-
-Verify Pdbg Unrecoverable Callout Handling For MCA During Host Boot
-    [Documentation]  Verify unrecoverable callout handling for MCACALIFIR
-    ...              using pdbg tool during Host Boot path.
-    [Tags]  Verify_Pdbg_Unrecoverable_Callout_Handling_For_MCA_During_Host_Boot
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  MCACALIFIR_UE
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}mcacalfir
-    Inject Error At HOST Boot Path  ${value[0]}  ${value[1]}
-    ...  ${value[2]}  ${err_log_path}
-
-Verify Pdbg Unrecoverable Callout Handling For MCI During Host Boot
-    [Documentation]  Verify unrecoverable callout handling for MCI
-    ...              using pdbg tool during Host Boot path.
-    [Tags]  Verify_Pdbg_Unrecoverable_Callout_Handling_For_MCI_During_Host_Boot
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  MCI_UE
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}mcifir
-    Inject Error At HOST Boot Path  ${value[0]}  ${value[1]}
-    ...  ${value[2]}  ${err_log_path}
-
-Verify Pdbg Unrecoverable Callout Handling For CoreFIR During Host Boot
-    [Documentation]  Verify unrecoverable callout handling for CoreFIR
-    ...              using pdbg tool during Host Boot path.
-    [Tags]  Verify_Pdbg_Unrecoverable_Callout_Handling_For_CoreFIR_During_Host_Boot
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  COREFIR_UE
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    Disable CPU States Through HOST
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}corefir_ue
-    Inject Error At HOST Boot Path  ${value[0]}  ${value[1]}
-    ...  ${value[2]}  ${err_log_path}
diff --git a/openpower/ras/test_host_ras.robot b/openpower/ras/test_host_ras.robot
deleted file mode 100755
index 28813a8..0000000
--- a/openpower/ras/test_host_ras.robot
+++ /dev/null
@@ -1,323 +0,0 @@
-*** Settings ***
-Documentation       This suite tests checkstop operations through HOST.
-
-Resource            ../../lib/openbmc_ffdc.robot
-Resource            ../../lib/openbmc_ffdc_utils.robot
-Resource            ../../lib/openbmc_ffdc_methods.robot
-Resource            ../../openpower/ras/ras_utils.robot
-Variables           ../../lib/ras/variables.py
-Variables           ../../data/variables.py
-
-Library             DateTime
-Library             OperatingSystem
-Library             random
-Library             Collections
-
-Suite Setup         RAS Suite Setup
-Test Setup          RAS Test Setup
-Test Teardown       FFDC On Test Case Fail
-Suite Teardown      RAS Suite Cleanup
-
-Test Tags          Host_RAS
-
-*** Variables ***
-${stack_mode}       normal
-
-*** Test Cases ***
-# Memory channel (MCACALIFIR) related error injection.
-
-Verify Recoverable Callout Handling For MCA With Threshold 1
-    [Documentation]  Verify recoverable callout handling for MCACALIFIR with
-    ...              threshold 1.
-    [Tags]  Verify_Recoverable_Callout_Handling_For_MCA_With_Threshold_1
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  MCACALIFIR_RECV1
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}mcacalfir_th1
-    Inject Recoverable Error With Threshold Limit
-    ...  HOST  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-Verify Recoverable Callout Handling For MCA With Threshold 32
-    [Documentation]  Verify recoverable callout handling for MCACALIFIR with
-    ...              threshold 32.
-    [Tags]  Verify_Recoverable_Callout_Handling_For_MCA_With_Threshold_32
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  MCACALIFIR_RECV32
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}mcacalfir_th32
-    Inject Recoverable Error With Threshold Limit
-    ...  HOST  ${value[0]}  ${value[1]}  32  ${value[2]}  ${err_log_path}
-
-Verify Unrecoverable Callout Handling For MCA
-    [Documentation]  Verify unrecoverable callout handling for MCACALIFIR.
-    [Tags]  Verify_Unrecoverable_Callout_Handling_For_MCA
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  MCACALIFIR_UE
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}mcacalfir
-    Inject Unrecoverable Error  HOST
-    ...  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-#  Memory buffer (MCIFIR) related error injection.
-
-Verify Recoverable Callout Handling For MCI With Threshold 1
-    [Documentation]  Verify recoverable callout handling for mci with
-    ...              threshold 1.
-    [Tags]  Verify_Recoverable_Callout_Handling_For_MCI_With_Threshold_1
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  MCI_RECV1
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}mcifir_th1
-    Inject Recoverable Error With Threshold Limit
-    ...  HOST  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-Verify Unrecoverable Callout Handling For MCI
-    [Documentation]  Verify unrecoverable callout handling for mci.
-    [Tags]  Verify_Unrecoverable_Callout_Handling_For_MCI
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  MCI_UE
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}mcifir
-    Inject Unrecoverable Error  HOST
-    ...  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-# CAPP accelerator (CXAFIR) related error injection.
-
-Verify Recoverable Callout Handling For CXA With Threshold 5
-    [Documentation]  Verify recoverable callout handling for  CXA with
-    ...              threshold 5.
-    [Tags]  Verify_Recoverable_Callout_Handling_For_CXA_With_Threshold_5
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  CXA_RECV5
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}cxafir_th5
-    Inject Recoverable Error With Threshold Limit
-    ...  HOST  ${value[0]}  ${value[1]}  5  ${value[2]}  ${err_log_path}
-
-Verify Recoverable Callout Handling For CXA With Threshold 32
-    [Documentation]  Verify recoverable callout handling for  CXA with
-    ...              threshold 32.
-    [Tags]  Verify_Recoverable_Callout_Handling_For_CXA_With_Threshold_32
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  CXA_RECV32
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}cxafir_th32
-    Inject Recoverable Error With Threshold Limit
-    ...  HOST  ${value[0]}  ${value[1]}  32  ${value[2]}  ${err_log_path}
-
-Verify Unrecoverable Callout Handling For CXA
-    [Documentation]  Verify unrecoverable callout handling for CXAFIR.
-    [Tags]  Verify_Unrecoverable_Callout_Handling_For_CXA
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  CXA_UE
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}cxafir_ue
-    Inject Unrecoverable Error  HOST
-    ...  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-
-#  OBUSFIR  related error injection.
-
-Verify Recoverable Callout Handling For OBUS With Threshold 32
-    [Documentation]  Verify recoverable callout handling for  OBUS with
-    ...              threshold 32.
-    [Tags]  Verify_Recoverable_Callout_Handling_For_OBUS_With_Threshold_32
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  OBUS_RECV32
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}obusfir_th32
-    Inject Recoverable Error With Threshold Limit
-    ...  HOST  ${value[0]}  ${value[1]}  32  ${value[2]}  ${err_log_path}
-
-# Nvidia graphics processing units (NPU0FIR) related error injection.
-
-Verify Recoverable Callout Handling For NPU0 With Threshold 32
-    [Documentation]  Verify recoverable callout handling for  NPU0 with
-    ...              threshold 32.
-    [Tags]  Verify_Recoverable_Callout_Handling_For_NPU0_With_Threshold_32
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  NPU0_RECV32
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}npu0fir_th32
-    Inject Recoverable Error With Threshold Limit
-    ...  HOST  ${value[0]}  ${value[1]}  32  ${value[2]}  ${err_log_path}
-
-#  Nest accelerator NXDMAENGFIR related error injection.
-
-Verify Recoverable Callout Handling For NXDMAENG With Threshold 1
-    [Documentation]  Verify recoverable callout handling for  NXDMAENG with
-    ...              threshold 1.
-    [Tags]  Verify_Recoverable_Callout_Handling_For_NXDMAENG_With_Threshold_1
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  NX_RECV1
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}nxfir_th1
-    Inject Recoverable Error With Threshold Limit
-    ...  HOST  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-
-Verify Recoverable Callout Handling For NXDMAENG With Threshold 32
-    [Documentation]  Verify recoverable callout handling for  NXDMAENG with
-    ...              threshold 32.
-    [Tags]  Verify_Recoverable_Callout_Handling_For_NXDMAENG_With_Threshold_32
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  NX_RECV32
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}nxfir_th32
-    Inject Recoverable Error With Threshold Limit
-    ...  HOST  ${value[0]}  ${value[1]}  32  ${value[2]}  ${err_log_path}
-
-#  L2FIR related error injection.
-
-Verify Recoverable Callout Handling For L2FIR With Threshold 1
-    [Documentation]  Verify recoverable callout handling for L2FIR with
-    ...              threshold 1.
-    [Tags]  Verify_Recoverable_Callout_Handling_For_L2FIR_With_Threshold_1
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  L2FIR_RECV1
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}l2fir_th1
-    Inject Recoverable Error With Threshold Limit
-    ...  HOST  ${translated_fir}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-Verify Recoverable Callout Handling For L2FIR With Threshold 32
-    [Documentation]  Verify recoverable callout handling for L2FIR with
-    ...              threshold 32.
-    [Tags]  Verify_Recoverable_Callout_Handling_For_L2FIR_With_Threshold_32
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  L2FIR_RECV32
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}l2fir_th32
-    Inject Recoverable Error With Threshold Limit
-    ...  HOST  ${translated_fir}  ${value[1]}  32  ${value[2]}  ${err_log_path}
-
-Verify Unrecoverable Callout Handling For L2FIR
-    [Documentation]  Verify unrecoverable callout handling for L2FIR.
-    [Tags]  Verify_Unrecoverable_Callout_Handling_For_L2FIR
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  L2FIR_UE
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}l2fir_ue
-    Inject Unrecoverable Error  HOST
-    ...  ${translated_fir}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-
-#  L3FIR related error injection.
-
-Verify Recoverable Callout Handling For L3FIR With Threshold 1
-    [Documentation]  Verify recoverable callout handling for L3FIR with
-    ...              threshold 1.
-    [Tags]  Verify_Recoverable_Callout_Handling_For_L3FIR_With_Threshold_1
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  L3FIR_RECV1
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}l3fir_th1
-    Inject Recoverable Error With Threshold Limit
-    ...  HOST  ${translated_fir}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-Verify Recoverable Callout Handling For L3FIR With Threshold 32
-    [Documentation]  Verify recoverable callout handling for L3FIR with
-    ...              threshold 32.
-    [Tags]  Verify_Recoverable_Callout_Handling_For_L3FIR_With_Threshold_32
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  L3FIR_RECV32
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}l3fir_th32
-    Inject Recoverable Error With Threshold Limit
-    ...  HOST  ${translated_fir}  ${value[1]}  32  ${value[2]}  ${err_log_path}
-
-Verify Unrecoverable Callout Handling For L3FIR
-    [Documentation]  Verify unrecoverable callout handling for L3FIR.
-    [Tags]  Verify_Unrecoverable_Callout_Handling_For_L3FIR
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  L3FIR_UE
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}l3fir_ue
-    Inject Unrecoverable Error  HOST
-    ...  ${translated_fir}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-
-# On chip controller (OCCFIR) related error injection.
-
-Verify Recoverable Callout Handling For OCC With Threshold 1
-    [Documentation]  Verify recoverable callout handling for OCCFIR with
-    ...              threshold 1.
-    [Tags]  Verify_Recoverable_Callout_Handling_For_OCC_With_Threshold_1
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  OCCFIR_RECV1
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}occfir_th1
-    Inject Recoverable Error With Threshold Limit
-    ...  HOST  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-# Core management engine (CMEFIR) related error injection.
-
-Verify Recoverable Callout Handling For CMEFIR With Threshold 1
-    [Documentation]  Verify recoverable callout handling for CMEFIR with
-    ...              threshold 1.
-    [Tags]  Verify_Recoverable_Callout_Handling_For_CMEFIR_With_Threshold_1
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  CMEFIR_RECV1
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}cmefir_th1
-    Inject Recoverable Error With Threshold Limit
-    ...  HOST  ${translated_fir}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-# Nest control vunit (NCUFIR) related error injection.
-
-Verify Recoverable Callout Handling For NCUFIR With Threshold 1
-    [Documentation]  Verify recoverable callout handling for NCUFIR with
-    ...              threshold 1.
-    [Tags]  Verify_Recoverable_Callout_Handling_For_NCUFIR_With_Threshold_1
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  NCUFIR_RECV1
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}ncufir_th1
-    Inject Recoverable Error With Threshold Limit
-    ...  HOST  ${translated_fir}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-Verify Unrecoverable Callout Handling For NCUFIR
-    [Documentation]  Verify unrecoverable callout handling for NCUFIR.
-    [Tags]  Verify_Unrecoverable_Callout_Handling_For_NCUFIR
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  NCUFIR_UE
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}ncufir_ue
-    Inject Unrecoverable Error  HOST
-    ...  ${translated_fir}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-
-# Core FIR related error injection.
-
-Verify Recoverable Callout Handling For CoreFIR With Threshold 5
-    [Documentation]  Verify recoverable callout handling for CoreFIR with
-    ...              threshold 5.
-    [Tags]  Verify_Recoverable_Callout_Handling_For_CoreFIR_With_Threshold_5
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  COREFIR_RECV5
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    Disable CPU States Through HOST
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}corefir_th5
-    Inject Recoverable Error With Threshold Limit
-    ...  HOST  ${value[0]}  ${value[1]}  5  ${value[2]}  ${err_log_path}
-
-Verify Recoverable Callout Handling For CoreFIR With Threshold 1
-    [Documentation]  Verify recoverable callout handling for CoreFIR with
-    ...              threshold 1.
-    [Tags]  Verify_Recoverable_Callout_Handling_For_CoreFIR_With_Threshold_1
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  COREFIR_RECV1
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    Disable CPU States Through HOST
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}corefir_th1
-    Inject Recoverable Error With Threshold Limit
-    ...  HOST  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-Verify Unrecoverable Callout Handling For CoreFIR
-    [Documentation]  Verify unrecoverable callout handling for CoreFIR.
-    [Tags]  Verify_Unrecoverable_Callout_Handling_For_CoreFIR
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  COREFIR_UE
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    Disable CPU States Through HOST
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}corefir_ue
-    Inject Unrecoverable Error  HOST
-    ...  ${value[0]}  ${value[1]}  1  ${value[2]}  ${err_log_path}
-
-Verify Recoverable Callout Handling For EQFIR With Threshold 32
-    [Documentation]  Verify recoverable callout handling for L3FIR with
-    ...              threshold 32.
-    [Tags]  Verify_Recoverable_Callout_Handling_For_EQFIR_With_Threshold_32
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  EQFIR_RECV32
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EQ
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}eqfir_th32
-    Inject Recoverable Error With Threshold Limit
-    ...  HOST  ${translated_fir}  ${value[1]}  32  ${value[2]}  ${err_log_path}
diff --git a/openpower/ras/test_reboot_ras.robot b/openpower/ras/test_reboot_ras.robot
deleted file mode 100755
index aab9130..0000000
--- a/openpower/ras/test_reboot_ras.robot
+++ /dev/null
@@ -1,39 +0,0 @@
-*** Settings ***
-Documentation       This suite tests error log callout handling when checkstop
-...                 is injected through HOST/BMC and BMC rebooted.
-
-Resource            ../../lib/openbmc_ffdc.robot
-Resource            ../../lib/openbmc_ffdc_utils.robot
-Resource            ../../lib/openbmc_ffdc_methods.robot
-Resource            ../../openpower/ras/ras_utils.robot
-Variables           ../../lib/ras/variables.py
-Variables           ../../data/variables.py
-
-Suite Setup         RAS Suite Setup
-Test Setup          RAS Test Setup
-Test Teardown       FFDC On Test Case Fail
-Suite Teardown      RAS Suite Cleanup
-
-Test Tags          Reboot_RAS
-
-*** Test Cases ***
-Verify Host Unrecoverable Callout Handling At Reboot
-    [Documentation]  Verify host unrecoverable callout handling at reboot.
-    [Tags]  Verify_Host_Unrecoverable_Callout_Handling_At_Reboot
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  L2FIR_UE
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}l2fir_ue
-    Inject Unrecoverable Error  HOST  ${translated_fir}
-    ...  ${value[1]}  1  ${value[2]}  ${err_log_path}  ${1}
-
-Verify Pdbg Unrecoverable Callout Handling At Reboot
-    [Documentation]  Verify unrecoverable callout handling
-    ...              with pdbg tool at reboot.
-    [Tags]  Verify_Pdbg_Unrecoverable_Callout_Handling_At_Reboot
-
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  L3FIR_UE
-    ${translated_fir}=  Fetch FIR Address Translation Value  ${value[0]}  EX
-    ${err_log_path}=  Catenate  ${RAS_LOG_DIR_PATH}l3fir_ue
-    Inject Unrecoverable Error  BMC  ${translated_fir}
-    ...  ${value[1]}  1  ${value[2]}  ${err_log_path}  ${1}
diff --git a/openpower/ras/test_sanity.robot b/openpower/ras/test_sanity.robot
deleted file mode 100644
index 7a0a3d2..0000000
--- a/openpower/ras/test_sanity.robot
+++ /dev/null
@@ -1,49 +0,0 @@
-*** Settings ***
-Documentation    Test RAS sanity scenarios.
-
-Resource        ../../lib/bmc_redfish_resource.robot
-Resource        ../../lib/openbmc_ffdc.robot
-Variables       ../../lib/ras/variables.py
-
-Suite Setup      Suite Setup Execution
-Test Setup       Printn
-Test Teardown    FFDC On Test Case Fail
-Suite Teardown   Suite Setup Teardown
-
-*** Variables ***
-${proc_chip_id}    0
-
-# mention count to read system memory.
-${count}           128
-
-*** Test Cases ***
-
-Test BMC Getscom
-    [Documentation]  Do getscom operation.
-    [Tags]  Test_BMC_Getscom
-    ${value}=  Get From Dictionary  ${ERROR_INJECT_DICT}  MCACALIFIR_RECV1
-    Pdbg  -p${proc_chip_id} getscom 0x${value[0]}
-
-Test BMC Getcfam
-    [Documentation]  Do getcfam operation.
-    [Tags]  Test_BMC_Getcfam
-    Pdbg  -p${proc_chip_id} getcfam 0x${cfam_address}
-
-Test BMC Getmem
-    [Documentation]  Do getmem operation.
-    [Tags]  Test_BMC_Getmem
-    Pdbg  -p${proc_chip_id} getmem 0x${mem_address} ${count}
-
-*** Keywords ***
-
-Suite Setup Execution
-    [Documentation]  Do the suite setup.
-
-     Redfish.Login
-     Redfish Power On
-
-
-Suite Setup Teardown
-    [Documentation]  Do the suite setup.
-
-     Redfish.Logout
diff --git a/openpower/ras/test_sanity_ecmd.robot b/openpower/ras/test_sanity_ecmd.robot
deleted file mode 100644
index a3d46a1..0000000
--- a/openpower/ras/test_sanity_ecmd.robot
+++ /dev/null
@@ -1,32 +0,0 @@
-*** Settings ***
-Documentation    Test RAS sanity scenarios using ecmd commands.
-
-Resource        ../../lib/openbmc_ffdc.robot
-Variables       ../../lib/ras/variables.py
-
-Suite Setup      Redfish Power On
-Test Setup       Printn
-Test Teardown    FFDC On Test Case Fail
-
-
-*** Variables ***
-
-# mention count to read system memory.
-${count}           128
-
-*** Test Cases ***
-
-Test Ecmd Getscom
-    [Documentation]  Do getscom operation through BMC.
-    [Tags]  Test_Ecmd_Getscom
-    Ecmd  getscom pu.c 20028440 -all
-
-Test Ecmd Getcfam
-    [Documentation]  Do getcfam operation through BMC.
-    [Tags]  Test_Ecmd_Getcfam
-    Ecmd  getcfam pu ${cfam_address} -all
-
-Test Ecmd Getmemproc
-    [Documentation]  Do getmemproc operation through BMC.
-    [Tags]  Test_Ecmd_Getmemproc
-    Ecmd  getmemproc ${mem_address} ${count}
