diff --git a/lib/pel_utils.py b/lib/pel_utils.py
index 07e6d96..d361a4e 100644
--- a/lib/pel_utils.py
+++ b/lib/pel_utils.py
@@ -119,68 +119,6 @@
     return src_pel_ids
 
 
-def verify_src_signature_and_threshold(pel_id, attn_type, signature_desc, th_limit):
-    r"""
-    Verifies SRC details for the given PEL ID based on the required
-    attention type, signature description, threshold limits.
-
-    Description of arguments:
-    pel_id          PEL ID for the required SRC details to verify.
-    attn_type       Attention type (e.g. RE, CS, UNIT_CS).
-    signature_desc  Signature description of the error inject.
-    th_limit        Threshold limit (e.g. 1, 5, 32).
-    """
-
-    try:
-        pel_cmd = " -i " + pel_id
-        src_data = peltool(pel_cmd)
-        src_dict = src_data["Primary SRC"]["SRC Details"]
-        usr_data = src_data["User Data 1"]
-
-        # Example for signature in recoverable error
-        #
-        # "SRC Details": {
-        # "Attention Type": "RECOVERABLE",
-        # "Node": 0,
-        # "Target Type": "TYPE_OMIC",
-        # "Target Instance": 0,
-        # "Signature": "MC_OMI_DL_FIR[1]: OMI-DL0 UE on data flit"
-        # }
-        if (attn_type == "RE"):
-            if (src_dict["Attention Type"] != "RECOVERABLE"):
-                raise peltool_exception("Required Attention type " + attn_type + " not found")
-
-        # Example for signature in system checkstop error
-        #
-        # "SRC Details": {
-        # "Primary Attention": "system checkstop",
-        # "Signature Description": {
-        #    "Chip Desc": "node 0 proc 0 (P10 2.0)",
-        #    "Signature": "EQ_L2_FIR(0)[7] L2 directory read UE",
-        #    "Attn Type": "checkstop"
-        # }
-
-        elif (attn_type == "CS"):
-            if (src_dict["Primary Attention"] != "system checkstop"):
-                raise peltool_exception("Required Attention type " + attn_type + " not found")
-
-        elif (attn_type == "UNIT_CS"):
-            if (src_dict["Attention Type"] != "UNIT_CS"):
-                raise peltool_exception("Required Attention type " + attn_type + " not found")
-        else:
-            raise peltool_exception("Required Attention type " + attn_type + " not found")
-
-        if signature_desc not in src_dict["Signature"]:
-            raise peltool_exception("Required Signature " + signature_desc + " not found")
-
-        if (int(th_limit) != usr_data["Error Count"]):
-            raise peltool_exception("Required Threshold limit " + th_limit + " not found")
-
-    except Exception as e:
-        raise peltool_exception("Failed to verify SRC details : " + str(e))
-    return True
-
-
 def fetch_all_src(include_hidden_pels=False):
     r"""
     Fetch all SRC IDs from peltool in the list format.
