diff --git a/tests/gem5/configs/requires_check.py b/tests/gem5/configs/requires_check.py
new file mode 100644
index 0000000..8ec566a
--- /dev/null
+++ b/tests/gem5/configs/requires_check.py
@@ -0,0 +1,55 @@
+# Copyright (c) 2022 The Regents of the University of California
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met: redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer;
+# redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution;
+# neither the name of the copyright holders nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""
+This is a very simple script to test the behavior of 'gem5.utils.requires'`
+"""
+
+from gem5.utils.requires import requires
+from gem5.isas import ISA, get_isas_str_set, get_isa_from_str
+
+
+import argparse
+
+parser = argparse.ArgumentParser(
+    description="A simple script used to check the behavior of "
+                "`gem5.utils.requires`."
+)
+
+parser.add_argument(
+    "-i",
+    "--required-isa",
+    type=str,
+    choices=get_isas_str_set(),
+    required=True,
+    help="The required ISA. A non-zero exit code is returned if the "
+         "requirements are not met." ,
+)
+
+args = parser.parse_args()
+required_isa = get_isa_from_str(args.required_isa)
+
+requires(isa_required=required_isa)
diff --git a/tests/gem5/stdlib/test_requires.py b/tests/gem5/stdlib/test_requires.py
new file mode 100644
index 0000000..0a7f123
--- /dev/null
+++ b/tests/gem5/stdlib/test_requires.py
@@ -0,0 +1,64 @@
+# Copyright (c) 2022 The Regents of the University of California
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met: redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer;
+# redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution;
+# neither the name of the copyright holders nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+from testlib import *
+
+isa_map = {
+    "sparc": constants.sparc_tag,
+    "mips": constants.mips_tag,
+    "null": constants.null_tag,
+    "arm": constants.arm_tag,
+    "x86": constants.vega_x86_tag,
+    "power": constants.power_tag,
+    "riscv": constants.riscv_tag,
+}
+
+length_map = {
+    "sparc": constants.long_tag,
+    "mips": constants.long_tag,
+    "null": constants.quick_tag,
+    "arm": constants.quick_tag,
+    "x86": constants.quick_tag,
+    "power": constants.long_tag,
+    "riscv": constants.long_tag,
+}
+
+for isa in isa_map.keys():
+    gem5_verify_config(
+        name=f"requires-isa-{isa}",
+        verifiers=(),
+        fixtures=(),
+        config=joinpath(
+            config.base_dir,
+            "tests",
+            "gem5",
+            "configs",
+            "requires_check.py",
+        ),
+        config_args=["-i", isa],
+        valid_isas=(isa_map[isa],),
+        length=length_map[isa],
+    )
\ No newline at end of file
