Format benchmarks.bzl
Change-Id: Ie401cb79a2e2ceb24c447745a59776c61bace478
diff --git a/benchmarks/benchmarks.bzl b/benchmarks/benchmarks.bzl
index d49ba07..895f4dd 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,135 @@
profile = False,
kelvin_binary_info = None,
benchmark_path = "benchmarks",
- arena_size_bytes = 1536 * 1024, # 1.5MB
+ arena_size_bytes = 1536 * 1024, # 1.5MB
**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),
+ )
- 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),
+ )