# Copyright 2024 Google LLC.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
#
# Kelvin core workload

load("//rules:matcha.bzl", "kelvin_binary")

package(default_visibility = ["//visibility:public"])

kelvin_binary(
    name = "kelvin_hps_model",
    srcs = [
        "main_fpga.cc",
        "ml_input.cc",
    ] + [
        "//sw/device/tests/kelvin/hps-c-port/model/src:layer_000_conv_2d.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:layer_001_conv_2d.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:layer_002_conv_2d.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:layer_003_max_pool_2d.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:layer_004_conv_2d.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:layer_005_conv_2d.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:layer_006_max_pool_2d.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:layer_007_conv_2d.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:layer_008_max_pool_2d.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:layer_009_conv_2d.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:layer_010_max_pool_2d.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:layer_011_conv_2d.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:layer_012_reshape.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:layer_013_fullyconnected.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:layer_014_fullyconnected.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:layer_015_fullyconnected.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:layer_016_logistic.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:model.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:tfc_opt_conv2d_per_ch.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:tfc_opt_fullyconnected.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:tfc_opt_maxpool2d.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:tfc_opt_reshape.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:tfc_ref.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:tfc_ref_fullyconnected.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:tfc_ref_logistic.cc",
        "//sw/device/tests/kelvin/hps-c-port/model/src:tfc_ref_maxpool2d.cc",
    ],
    hdrs = [
        "ml_input.h",
    ] + [
        "//sw/device/tests/kelvin/hps-c-port/sw/init:kelvin.h",
        "//sw/device/tests/kelvin/hps-c-port/sw/init:kelvin_intrinsics.h",
    ] + [
        "//sw/device/tests/kelvin/hps-c-port/model/inc:layers.h",
        "//sw/device/tests/kelvin/hps-c-port/model/inc:model.h",
        "//sw/device/tests/kelvin/hps-c-port/model/inc:tfc.h",
        "//sw/device/tests/kelvin/hps-c-port/model/inc:tfc_conv2d_per_ch.h",
        "//sw/device/tests/kelvin/hps-c-port/model/inc:tfc_fullyconnected.h",
        "//sw/device/tests/kelvin/hps-c-port/model/inc:tfc_logistic.h",
        "//sw/device/tests/kelvin/hps-c-port/model/inc:tfc_maxpool2d.h",
        "//sw/device/tests/kelvin/hps-c-port/model/inc:tfc_opt_util.h",
        "//sw/device/tests/kelvin/hps-c-port/model/inc:tfc_reshape.h",
    ],
    linkopts = [
        "-Wl,--defsym,__stack_size__=256k",
    ],
)
