diff --git a/benchmarks/benchmarks.bzl b/benchmarks/benchmarks.bzl
index d49ba07..c941f22 100644
--- a/benchmarks/benchmarks.bzl
+++ b/benchmarks/benchmarks.bzl
@@ -14,8 +14,8 @@
 
 """Rules to run Kelvin benchmarks"""
 
-load("@kelvin_sw//build_tools/bazel:kelvin.bzl","kelvin_binary", "kelvin_test", "generate_cc_arrays")
-load("@matcha//rules:matcha.bzl", "bin_to_c_file", "matcha_extflash_tar", "sec_flash_binary", "smc_flash_binary", "device_deps")
+load("@kelvin_sw//build_tools/bazel:kelvin.bzl", "generate_cc_arrays", "kelvin_binary", "kelvin_test")
+load("@matcha//rules:matcha.bzl", "bin_to_c_file", "device_deps", "matcha_extflash_tar", "sec_flash_binary", "smc_flash_binary")
 
 def kelvin_benchmark_simulator(
         name,
@@ -30,72 +30,71 @@
         hw_test_tags = [],
         iss_test_size = "small",
         iss_test_tags = [],
-        arena_size_bytes = 1536 * 1024, # 1.5MB
+        arena_size_bytes = 1536 * 1024,  # 1.5MB
         **kwargs):
+    if kelvin_binary_info:
+        kelvin_test(
+            name = kelvin_binary_info["name"],
+            srcs = kelvin_binary_info["srcs"],
+            hdrs = kelvin_binary_info["hdrs"],
+            copts = kelvin_binary_info["copts"],
+            deps = kelvin_binary_info["deps"],
+            hw_test_size = "medium",
+            iss_test_size = "medium",
+        )
+    else:
+        kelvin_headers = ["@kelvin_sw//benchmarks:benchmark.h"]
+        model_header_name = "{}_model".format(name)
+        bin_to_c_file(
+            name = model_header_name,
+            srcs = [model],
+            var_name = "g_benchmark_model_data",
+        )
+        kelvin_headers.append(model_header_name)
 
-        if kelvin_binary_info:
-            kelvin_test(
-                name = kelvin_binary_info['name'],
-                srcs = kelvin_binary_info['srcs'],
-                hdrs = kelvin_binary_info['hdrs'],
-                copts = kelvin_binary_info['copts'],
-                deps = kelvin_binary_info['deps'],
-                hw_test_size = "medium",
-                iss_test_size = "medium",
-            )
-        else:
-            kelvin_headers = ["@kelvin_sw//benchmarks:benchmark.h"]
-            model_header_name = "{}_model".format(name)
+        if test_data_input:
+            input_header_name = "{}_input".format(name)
             bin_to_c_file(
-                name = model_header_name,
-                srcs = [model],
-                var_name = "g_benchmark_model_data",
+                name = input_header_name,
+                srcs = [test_data_input],
+                var_name = "g_benchmark_input",
             )
-            kelvin_headers.append(model_header_name)
-
-            if test_data_input:
-                input_header_name = "{}_input".format(name)
-                bin_to_c_file(
-                    name = input_header_name,
-                    srcs = [test_data_input],
-                    var_name = "g_benchmark_input",
-                )
-                kelvin_headers.append(input_header_name)
-            if test_data_output:
-                output_header_name = "{}_output".format(name)
-                bin_to_c_file(
-                    name = output_header_name,
-                    srcs = [test_data_output],
-                    var_name = "g_benchmark_output",
-                )
-                kelvin_headers.append(output_header_name)
-
-            # Test to run in simulator and MPACT.
-            kelvin_test(
-                name = "{}".format(name),
-                srcs = ["@kelvin_sw//benchmarks:benchmark_kelvin.cc"],
-                hdrs = kelvin_headers,
-                copts = [
-                    "-DITERATIONS={}".format(iterations),
-                    "-DBENCHMARK_NAME={}".format(name),
-                    "-DTEST_DATA_INPUT={}".format(1 if test_data_input else 0),
-                    "-DTEST_DATA_OUTPUT={}".format(1 if test_data_output else 0),
-                    "-DPROFILE={}".format(1 if profile else 0),
-                    "-DBENCHMARK_PATH={}".format(benchmark_path),
-                    "-DARENA_SIZE_BYTES={}".format(arena_size_bytes),
-                ],
-                deps = [
-                    "@kelvin_sw//crt",
-                    "@kelvin_sw//benchmarks:benchmark_header",
-                    "@kelvin_sw//benchmarks:cycle_count",
-                    "@tflite-micro//tensorflow/lite/micro:micro_framework",
-                    "@tflite-micro//tensorflow/lite/micro:system_setup",
-                ],
-                hw_test_size = hw_test_size,
-                hw_test_tags = hw_test_tags,
-                iss_test_size = iss_test_size,
-                iss_test_tags = iss_test_tags,
+            kelvin_headers.append(input_header_name)
+        if test_data_output:
+            output_header_name = "{}_output".format(name)
+            bin_to_c_file(
+                name = output_header_name,
+                srcs = [test_data_output],
+                var_name = "g_benchmark_output",
             )
+            kelvin_headers.append(output_header_name)
+
+        # Test to run in simulator and MPACT.
+        kelvin_test(
+            name = "{}".format(name),
+            srcs = ["@kelvin_sw//benchmarks:benchmark_kelvin.cc"],
+            hdrs = kelvin_headers,
+            copts = [
+                "-DITERATIONS={}".format(iterations),
+                "-DBENCHMARK_NAME={}".format(name),
+                "-DTEST_DATA_INPUT={}".format(1 if test_data_input else 0),
+                "-DTEST_DATA_OUTPUT={}".format(1 if test_data_output else 0),
+                "-DPROFILE={}".format(1 if profile else 0),
+                "-DBENCHMARK_PATH={}".format(benchmark_path),
+                "-DARENA_SIZE_BYTES={}".format(arena_size_bytes),
+            ],
+            deps = [
+                "@kelvin_sw//crt",
+                "@kelvin_sw//benchmarks:benchmark_header",
+                "@kelvin_sw//benchmarks:cycle_count",
+                "@tflite-micro//tensorflow/lite/micro:micro_framework",
+                "@tflite-micro//tensorflow/lite/micro:system_setup",
+            ],
+            hw_test_size = hw_test_size,
+            hw_test_tags = hw_test_tags,
+            iss_test_size = iss_test_size,
+            iss_test_tags = iss_test_tags,
+        )
 
 def kelvin_benchmark_fpga(
         name,
@@ -106,17 +105,17 @@
         kelvin_binary_info = None,
         benchmark_path = "benchmarks",
         **kwargs):
-        _kelvin_benchmark_device(
-            name = name,
-            model = model,
-            device_type = "fpga_nexus",
-            iterations = iterations,
-            test_data = test_data,
-            profile = profile,
-            kelvin_binary_info = kelvin_binary_info,
-            benchmark_path = benchmark_path,
-            **kwargs,
-        )
+    _kelvin_benchmark_device(
+        name = name,
+        model = model,
+        device_type = "fpga_nexus",
+        iterations = iterations,
+        test_data = test_data,
+        profile = profile,
+        kelvin_binary_info = kelvin_binary_info,
+        benchmark_path = benchmark_path,
+        **kwargs
+    )
 
 def kelvin_benchmark_asic(
         name,
@@ -127,18 +126,17 @@
         kelvin_binary_info = None,
         benchmark_path = "benchmarks",
         **kwargs):
-
-        _kelvin_benchmark_device(
-            name = name,
-            model = model,
-            device_type = "asic",
-            iterations = iterations,
-            test_data = test_data,
-            profile = profile,
-            kelvin_binary_info = kelvin_binary_info,
-            benchmark_path = benchmark_path,
-            **kwargs,
-        )
+    _kelvin_benchmark_device(
+        name = name,
+        model = model,
+        device_type = "asic",
+        iterations = iterations,
+        test_data = test_data,
+        profile = profile,
+        kelvin_binary_info = kelvin_binary_info,
+        benchmark_path = benchmark_path,
+        **kwargs
+    )
 
 def kelvin_benchmark_devices(
         name,
@@ -149,38 +147,37 @@
         kelvin_binary_info = None,
         benchmark_path = "benchmarks",
         **kwargs):
+    kelvin_benchmark_asic(
+        name = "{}_asic".format(name),
+        model = model,
+        iterations = iterations,
+        test_data = test_data,
+        profile = profile,
+        kelvin_binary_info = kelvin_binary_info,
+        benchmark_path = benchmark_path,
+        **kwargs
+    )
 
-        kelvin_benchmark_asic(
-            name = "{}_asic".format(name),
-            model = model,
-            iterations = iterations,
-            test_data = test_data,
-            profile = profile,
-            kelvin_binary_info = kelvin_binary_info,
-            benchmark_path = benchmark_path,
-            **kwargs,
-        )
+    kelvin_benchmark_fpga(
+        name = "{}_fpga".format(name),
+        model = model,
+        iterations = iterations,
+        test_data = test_data,
+        profile = profile,
+        kelvin_binary_info = kelvin_binary_info,
+        benchmark_path = benchmark_path,
+        **kwargs
+    )
 
-        kelvin_benchmark_fpga(
-            name = "{}_fpga".format(name),
-            model = model,
-            iterations = iterations,
-            test_data = test_data,
-            profile = profile,
-            kelvin_binary_info = kelvin_binary_info,
-            benchmark_path = benchmark_path,
-            **kwargs,
-        )
-
-        # Create a filegroup to allow building all devices
-        native.filegroup(
-            name = "{}".format(name),
-            srcs = [
-                ":{}_asic".format(name),
-                ":{}_fpga".format(name),
-            ],
-            output_group = "device_files",
-        )
+    # Create a filegroup to allow building all devices
+    native.filegroup(
+        name = "{}".format(name),
+        srcs = [
+            ":{}_asic".format(name),
+            ":{}_fpga".format(name),
+        ],
+        output_group = "device_files",
+    )
 
 def _kelvin_benchmark_device(
         name,
@@ -192,136 +189,137 @@
         profile = False,
         kelvin_binary_info = None,
         benchmark_path = "benchmarks",
-        arena_size_bytes = 1536 * 1024, # 1.5MB
+        arena_size_bytes = 1536 * 1024,  # 1.5MB
+        tags = [],
         **kwargs):
+    # Creation of binaries for running on FPGA
+    smc_flash_binary(
+        name = "{}_smc".format(name),
+        srcs = [
+            "@kelvin_sw//benchmarks:benchmark_smc.c",
+            "@kelvin_sw//benchmarks:benchmark.h",
+        ],
+        copts = ["-DBENCHMARK_NAME={}".format(name)],
+        per_device_deps = {
+            device_type: device_deps("smc").get(device_type),
+        },
+        deps = [
+            "@matcha//sw/device/lib/dif:ml_top",
+            "@matcha//sw/device/tests:test_lib_smc",
+            "@matcha//sw/device/lib/dif:i2s",
+            "@matcha//sw/device/lib/dif:tlul_mailbox",
+            "@kelvin_sw//benchmarks:benchmark_header",
+            "@kelvin_sw//benchmarks:cycle_count",
+            "@lowrisc_opentitan//sw/device/lib/dif:rv_plic",
+            "@lowrisc_opentitan//sw/device/lib/dif:rv_timer",
+        ],
+    )
 
-        # Creation of binaries for running on FPGA
-        smc_flash_binary(
-            name = "{}_smc".format(name),
-            srcs = [
-                "@kelvin_sw//benchmarks:benchmark_smc.c",
-                "@kelvin_sw//benchmarks:benchmark.h",
-            ],
-            copts = ["-DBENCHMARK_NAME={}".format(name)],
-            per_device_deps = {
-                device_type: device_deps("smc").get(device_type),
-            },
-            deps = [
-                "@matcha//sw/device/lib/dif:ml_top",
-                "@matcha//sw/device/tests:test_lib_smc",
-                "@matcha//sw/device/lib/dif:i2s",
-                "@matcha//sw/device/lib/dif:tlul_mailbox",
-                "@kelvin_sw//benchmarks:benchmark_header",
-                "@kelvin_sw//benchmarks:cycle_count",
-                "@lowrisc_opentitan//sw/device/lib/dif:rv_plic",
-                "@lowrisc_opentitan//sw/device/lib/dif:rv_timer",
-            ],
+    bin_to_c_file(
+        name = "{}-smc_bin".format(name),
+        srcs = ["{}_smc_{}_bin".format(name, device_type)],
+        var_name = "smc_bin",
+    )
+
+    sec_flash_binary(
+        name = "{}_sec".format(name),
+        srcs = [
+            "@kelvin_sw//benchmarks:benchmark_sec.c",
+            "{}-smc_bin.h".format(name),
+            "@kelvin_sw//benchmarks:benchmark.h",
+        ],
+        copts = [
+            "-DBENCHMARK_NAME={}".format(name),
+            "-DBENCHMARK_PATH={}".format(benchmark_path),
+        ],
+        per_device_deps = {
+            device_type: device_deps("secure_core").get(device_type),
+        },
+        deps = [
+            "@matcha//sw/device/lib:spi_flash",
+            "@matcha//sw/device/tests:test_lib",
+            "@matcha//sw/device/lib/dif:smc_ctrl",
+            "@matcha//sw/device/lib/dif:tlul_mailbox",
+            "@kelvin_sw//benchmarks:benchmark_header",
+            "@kelvin_sw//benchmarks:cycle_count",
+            "@lowrisc_opentitan//sw/device/lib/dif:rv_plic",
+        ],
+    )
+
+    # If provided Kelvin binary info, use that instead of the standard
+    if kelvin_binary_info:
+        kelvin_binary(
+            name = "{}_kelvin".format(name),
+            srcs = kelvin_binary_info["srcs"],
+            copts = kelvin_binary_info["copts"],
+            hdrs = kelvin_binary_info["hdrs"],
+            deps = kelvin_binary_info["deps"],
         )
-
+    else:
+        kelvin_headers = ["@kelvin_sw//benchmarks:benchmark.h"]
+        model_header_name = "{}_model".format(name)
         bin_to_c_file(
-            name = "{}-smc_bin".format(name),
-            srcs = ["{}_smc_{}_bin".format(name, device_type)],
-            var_name = "smc_bin",
+            name = "{}_model".format(name),
+            srcs = [model],
+            var_name = "g_benchmark_model_data",
         )
+        kelvin_headers.append(model_header_name)
 
-        sec_flash_binary(
-            name = "{}_sec".format(name),
+        if test_data_input:
+            input_header_name = "{}_input".format(name)
+            bin_to_c_file(
+                name = input_header_name,
+                srcs = [test_data_input],
+                var_name = "g_benchmark_input",
+            )
+            kelvin_headers.append(input_header_name)
+        if test_data_output:
+            output_header_name = "{}_output".format(name)
+            bin_to_c_file(
+                name = output_header_name,
+                srcs = [test_data_output],
+                var_name = "g_benchmark_output",
+            )
+            kelvin_headers.append(output_header_name)
+
+        kelvin_binary(
+            name = "{}_kelvin".format(name),
             srcs = [
-                "@kelvin_sw//benchmarks:benchmark_sec.c",
-                "{}-smc_bin.h".format(name),
-                "@kelvin_sw//benchmarks:benchmark.h",
+                "@kelvin_sw//benchmarks:benchmark_kelvin.cc",
             ],
             copts = [
+                "-DITERATIONS={}".format(iterations),
                 "-DBENCHMARK_NAME={}".format(name),
+                "-DTEST_DATA_INPUT={}".format(1 if test_data_input else 0),
+                "-DTEST_DATA_OUTPUT={}".format(1 if test_data_output else 0),
+                "-DPROFILE={}".format(1 if profile else 0),
                 "-DBENCHMARK_PATH={}".format(benchmark_path),
+                "-DARENA_SIZE_BYTES={}".format(arena_size_bytes),
             ],
-            per_device_deps = {
-                device_type: device_deps("secure_core").get(device_type),
-            },
+            hdrs = kelvin_headers,
             deps = [
-                "@matcha//sw/device/lib:spi_flash",
-                "@matcha//sw/device/tests:test_lib",
-                "@matcha//sw/device/lib/dif:smc_ctrl",
-                "@matcha//sw/device/lib/dif:tlul_mailbox",
                 "@kelvin_sw//benchmarks:benchmark_header",
                 "@kelvin_sw//benchmarks:cycle_count",
-                "@lowrisc_opentitan//sw/device/lib/dif:rv_plic",
+                "@tflite-micro//tensorflow/lite/micro:micro_framework",
+                "@tflite-micro//tensorflow/lite/micro:system_setup",
             ],
         )
 
-        # If provided Kelvin binary info, use that instead of the standard
-        if kelvin_binary_info:
-            kelvin_binary(
-                name = "{}_kelvin".format(name),
-                srcs = kelvin_binary_info['srcs'],
-                copts = kelvin_binary_info['copts'],
-                hdrs = kelvin_binary_info['hdrs'],
-                deps = kelvin_binary_info['deps'],
-            )
-        else:
-            kelvin_headers = ["@kelvin_sw//benchmarks:benchmark.h"]
-            model_header_name = "{}_model".format(name)
-            bin_to_c_file(
-                name = "{}_model".format(name),
-                srcs = [model],
-                var_name = "g_benchmark_model_data",
-            )
-            kelvin_headers.append(model_header_name)
+    matcha_extflash_tar(
+        name = "{}_extflash".format(name),
+        kelvin_binary = ":{}_kelvin.bin".format(name),
+        sc_binary = ":{}_sec_{}_bin".format(name, device_type),
+        tags = tags,
+    )
 
-            if test_data_input:
-                input_header_name = "{}_input".format(name)
-                bin_to_c_file(
-                    name = input_header_name,
-                    srcs = [test_data_input],
-                    var_name = "g_benchmark_input",
-                )
-                kelvin_headers.append(input_header_name)
-            if test_data_output:
-                output_header_name = "{}_output".format(name)
-                bin_to_c_file(
-                    name = output_header_name,
-                    srcs = [test_data_output],
-                    var_name = "g_benchmark_output",
-                )
-                kelvin_headers.append(output_header_name)
-
-            kelvin_binary(
-                name = "{}_kelvin".format(name),
-                srcs = [
-                    "@kelvin_sw//benchmarks:benchmark_kelvin.cc",
-                ],
-                copts = [
-                    "-DITERATIONS={}".format(iterations),
-                    "-DBENCHMARK_NAME={}".format(name),
-                    "-DTEST_DATA_INPUT={}".format(1 if test_data_input else 0),
-                    "-DTEST_DATA_OUTPUT={}".format(1 if test_data_output else 0),
-                    "-DPROFILE={}".format(1 if profile else 0),
-                    "-DBENCHMARK_PATH={}".format(benchmark_path),
-                    "-DARENA_SIZE_BYTES={}".format(arena_size_bytes),
-                ],
-                hdrs = kelvin_headers,
-                deps = [
-                    "@kelvin_sw//benchmarks:benchmark_header",
-                    "@kelvin_sw//benchmarks:cycle_count",
-                    "@tflite-micro//tensorflow/lite/micro:micro_framework",
-                    "@tflite-micro//tensorflow/lite/micro:system_setup",
-                ],
-            )
-
-        matcha_extflash_tar(
-            name = "{}_extflash".format(name),
-            kelvin_binary = ":{}_kelvin.bin".format(name),
-            sc_binary = ":{}_sec_{}_bin".format(name, device_type),
-        )
-
-        # Create a filegroup with all device targets.
-        native.filegroup(
-            name = "{}".format(name),
-            srcs = [
-                ":{}_sec".format(name),
-                ":{}-smc_bin".format(name),
-                ":{}_kelvin".format(name),
-                ":{}_extflash".format(name),
-            ],
-            output_group = "{}_files".format(device_type),
-        )
+    # Create a filegroup with all device targets.
+    native.filegroup(
+        name = "{}".format(name),
+        srcs = [
+            ":{}_sec".format(name),
+            ":{}-smc_bin".format(name),
+            ":{}_kelvin".format(name),
+            ":{}_extflash".format(name),
+        ],
+        output_group = "{}_files".format(device_type),
+    )
