diff --git a/lib/boot_data.py b/lib/boot_data.py
index cfd96ec..5264efb 100755
--- a/lib/boot_data.py
+++ b/lib/boot_data.py
@@ -165,9 +165,9 @@
 
     for boot_name in boot_list:
         boot_name = boot_name.strip(" ")
-        error_message = gv.svalid_value(boot_name,
-                                        valid_values=valid_boot_types,
-                                        var_name="boot_name")
+        error_message = gv.valid_value(boot_name,
+                                       valid_values=valid_boot_types,
+                                       var_name="boot_name")
         if error_message != "":
             BuiltIn().fail(gp.sprint_error(error_message))
 
diff --git a/lib/func_timer.py b/lib/func_timer.py
index ef837ef..1919c3e 100644
--- a/lib/func_timer.py
+++ b/lib/func_timer.py
@@ -201,7 +201,8 @@
             if self.__time_out is not None:
                 self.__time_out = int(self.__time_out)
                 # Ensure that time_out is non-negative.
-                message = gv.svalid_range(self.__time_out, [0], "time_out")
+                message = gv.valid_range(self.__time_out, 0,
+                                         var_name="time_out")
                 if message != "":
                     raise ValueError("\n"
                                      + gp.sprint_error_report(message,
diff --git a/lib/gen_cmd.py b/lib/gen_cmd.py
index d56ee53..0f18cb6 100644
--- a/lib/gen_cmd.py
+++ b/lib/gen_cmd.py
@@ -70,7 +70,7 @@
     if debug:
         gp.print_vars(cmd_buf, quiet, test_mode, debug)
 
-    err_msg = gv.svalid_value(cmd_buf)
+    err_msg = gv.valid_value(cmd_buf)
     if err_msg != "":
         raise ValueError(err_msg)
 
@@ -367,7 +367,7 @@
     stack_ignore_err = gp.get_stack_var('ignore_err', global_ignore_err)
     ignore_err = int(gm.dft(ignore_err, gm.dft(stack_ignore_err, 1)))
 
-    err_msg = gv.svalid_value(command_string)
+    err_msg = gv.valid_value(command_string)
     if err_msg != "":
         raise ValueError(err_msg)
 
diff --git a/lib/openbmc_ffdc.py b/lib/openbmc_ffdc.py
index 5292b79..0d64a56 100644
--- a/lib/openbmc_ffdc.py
+++ b/lib/openbmc_ffdc.py
@@ -134,8 +134,8 @@
             if FFDC_LOG_PATH == "":
                 FFDC_LOG_PATH = os.path.dirname(
                     BuiltIn().get_variable_value("${LOG_FILE}")) + "/"
-            error_message = gv.svalid_value(FFDC_LOG_PATH,
-                                            var_name="FFDC_LOG_PATH")
+            error_message = gv.valid_value(FFDC_LOG_PATH,
+                                           var_name="FFDC_LOG_PATH")
             if error_message != "":
                 error_message = gp.sprint_error_report(error_message)
                 BuiltIn().fail(error_message)
diff --git a/lib/openbmctool_utils.py b/lib/openbmctool_utils.py
index 1a79b7d..2ec836b 100755
--- a/lib/openbmctool_utils.py
+++ b/lib/openbmctool_utils.py
@@ -502,7 +502,7 @@
                                              ignore_err=False)
     health_check = vf.key_value_outbuf_to_dict(output, delim=":")
     if int(verify):
-        err_msg = gv.svalid_dict(health_check, health_check_fields())
+        err_msg = gv.valid_dict(health_check, health_check_fields())
         if err_msg != "":
             BuiltIn().fail(gp.sprint_error(err_msg))
 
@@ -551,8 +551,8 @@
                                          ignore_err=False)
 
     if int(verify):
-        err_msg = gv.svalid_dict(remote_logging_view,
-                                 remote_logging_view_fields())
+        err_msg = gv.valid_dict(remote_logging_view,
+                                remote_logging_view_fields())
         if err_msg != "":
             BuiltIn().fail(gp.sprint_error(err_msg))
 
diff --git a/lib/state.py b/lib/state.py
index 6c1c6d6..e4879f2 100755
--- a/lib/state.py
+++ b/lib/state.py
@@ -249,8 +249,8 @@
     match_type      This may be 'and' or 'or'.
     """
 
-    error_message = gv.svalid_value(match_type, var_name="match_type",
-                                    valid_values=['and', 'or'])
+    error_message = gv.valid_value(match_type, var_name="match_type",
+                                   valid_values=['and', 'or'])
     if error_message != "":
         BuiltIn().fail(gp.sprint_error(error_message))
 
@@ -310,22 +310,22 @@
     # Set parm defaults where necessary and validate all parms.
     if os_host == "":
         os_host = BuiltIn().get_variable_value("${OS_HOST}")
-    error_message = gv.svalid_value(os_host, var_name="os_host",
-                                    invalid_values=[None, ""])
+    error_message = gv.valid_value(os_host, var_name="os_host",
+                                   invalid_values=[None, ""])
     if error_message != "":
         BuiltIn().fail(gp.sprint_error(error_message))
 
     if os_username == "":
         os_username = BuiltIn().get_variable_value("${OS_USERNAME}")
-    error_message = gv.svalid_value(os_username, var_name="os_username",
-                                    invalid_values=[None, ""])
+    error_message = gv.valid_value(os_username, var_name="os_username",
+                                   invalid_values=[None, ""])
     if error_message != "":
         BuiltIn().fail(gp.sprint_error(error_message))
 
     if os_password == "":
         os_password = BuiltIn().get_variable_value("${OS_PASSWORD}")
-    error_message = gv.svalid_value(os_password, var_name="os_password",
-                                    invalid_values=[None, ""])
+    error_message = gv.valid_value(os_password, var_name="os_password",
+                                   invalid_values=[None, ""])
     if error_message != "":
         BuiltIn().fail(gp.sprint_error(error_message))
 
@@ -415,25 +415,25 @@
     # Set parm defaults where necessary and validate all parms.
     if openbmc_host == "":
         openbmc_host = BuiltIn().get_variable_value("${OPENBMC_HOST}")
-    error_message = gv.svalid_value(openbmc_host,
-                                    var_name="openbmc_host",
-                                    invalid_values=[None, ""])
+    error_message = gv.valid_value(openbmc_host,
+                                   var_name="openbmc_host",
+                                   invalid_values=[None, ""])
     if error_message != "":
         BuiltIn().fail(gp.sprint_error(error_message))
 
     if openbmc_username == "":
         openbmc_username = BuiltIn().get_variable_value("${OPENBMC_USERNAME}")
-    error_message = gv.svalid_value(openbmc_username,
-                                    var_name="openbmc_username",
-                                    invalid_values=[None, ""])
+    error_message = gv.valid_value(openbmc_username,
+                                   var_name="openbmc_username",
+                                   invalid_values=[None, ""])
     if error_message != "":
         BuiltIn().fail(gp.sprint_error(error_message))
 
     if openbmc_password == "":
         openbmc_password = BuiltIn().get_variable_value("${OPENBMC_PASSWORD}")
-    error_message = gv.svalid_value(openbmc_password,
-                                    var_name="openbmc_password",
-                                    invalid_values=[None, ""])
+    error_message = gv.valid_value(openbmc_password,
+                                   var_name="openbmc_password",
+                                   invalid_values=[None, ""])
     if error_message != "":
         BuiltIn().fail(gp.sprint_error(error_message))
 
@@ -853,8 +853,8 @@
     quiet = int(gp.get_var_value(quiet, 0))
 
     # Validate parms.
-    error_message = gv.svalid_integer(start_boot_seconds,
-                                      var_name="start_boot_seconds")
+    error_message = gv.valid_integer(start_boot_seconds,
+                                     var_name="start_boot_seconds")
     if error_message != "":
         BuiltIn().fail(gp.sprint_error(error_message))
 
