Additonal Benchmark Targets

Adds macros for ASIC (kelvin_benchmark_asic) and a superset device
one that builds ASIC+FPGA (kelvin_benchmark_devices).

Change-Id: I767e0545ce41739b89590d0f3b71a47aca1c1993
diff --git a/benchmarks/benchmarks.bzl b/benchmarks/benchmarks.bzl
index 1b3b704..5556b17 100644
--- a/benchmarks/benchmarks.bzl
+++ b/benchmarks/benchmarks.bzl
@@ -56,6 +56,64 @@
         model,
         iterations,
         **kwargs):
+        _kelvin_benchmark_device(
+            name = name,
+            model = model,
+            device_type = "fpga_nexus",
+            iterations = iterations,
+            **kwargs,
+        )
+
+def kelvin_benchmark_asic(
+        name,
+        model,
+        iterations,
+        **kwargs):
+
+        _kelvin_benchmark_device(
+            name = name,
+            model = model,
+            device_type = "asic",
+            iterations = iterations,
+            **kwargs,
+        )
+
+def kelvin_benchmark_devices(
+        name,
+        model,
+        iterations,
+        **kwargs):
+
+        kelvin_benchmark_asic(
+            name = "{}_asic".format(name),
+            model = model,
+            iterations = iterations,
+            **kwargs,
+        )
+
+        kelvin_benchmark_fpga(
+            name = "{}_fpga".format(name),
+            model = model,
+            iterations = iterations,
+            **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",
+        )
+
+def _kelvin_benchmark_device(
+        name,
+        model,
+        device_type,
+        iterations,
+        **kwargs):
 
         bin_to_c_file(
             name = "{}_model".format(name),
@@ -72,7 +130,7 @@
             ],
             copts = ["-DBENCHMARK_NAME={}".format(name)],
             per_device_deps = {
-                "fpga_nexus": [NEXUS_CORE_TARGETS.get("smc")],
+                device_type: [NEXUS_CORE_TARGETS.get("smc")],
             },
             deps = [
                 "@matcha//sw/device/lib/dif:ml_top",
@@ -86,7 +144,7 @@
 
         bin_to_c_file(
             name = "{}-smc_bin".format(name),
-            srcs = ["{}_smc_fpga_nexus_bin".format(name)],
+            srcs = ["{}_smc_{}_bin".format(name, device_type)],
             var_name = "smc_bin",
         )
 
@@ -99,7 +157,7 @@
             ],
             copts = ["-DBENCHMARK_NAME={}".format(name)],
             per_device_deps = {
-                "fpga_nexus": [NEXUS_CORE_TARGETS.get("secure_core")],
+                device_type: [NEXUS_CORE_TARGETS.get("secure_core")],
             },
             deps = [
                 "@matcha//sw/device/lib:spi_flash",
@@ -131,10 +189,10 @@
         matcha_extflash_tar(
             name = "{}_extflash".format(name),
             kelvin_binary = ":{}_kelvin.bin".format(name),
-            sc_binary = ":{}_sec_fpga_nexus_bin".format(name),
+            sc_binary = ":{}_sec_{}_bin".format(name, device_type),
         )
 
-        # Create a filegroup with all FPGA targets.
+        # Create a filegroup with all device targets.
         native.filegroup(
             name = "{}".format(name),
             srcs = [
@@ -143,5 +201,5 @@
                 ":{}_kelvin".format(name),
                 ":{}_extflash".format(name),
             ],
-            output_group = "fpga_files",
+            output_group = "{}_files".format(device_type),
         )