| # Copyright 2025 Google LLC |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| load("//rules:kelvin_v2.bzl", "kelvin_v2_binary") |
| |
| cc_library( |
| name = "hw_primitives", |
| srcs = [ |
| "hw_primitives.cc", |
| ], |
| hdrs = [ |
| "hw_primitives.h", |
| ], |
| deps = [ |
| "@com_google_absl//absl/types:span", |
| "@verilator//:libverilator", |
| ], |
| ) |
| |
| cc_library( |
| name = "core_mini_axi_wrapper", |
| hdrs = [ |
| "core_mini_axi_wrapper.h", |
| "mailbox.h", |
| ], |
| deps = [ |
| ":hw_primitives", |
| "//hdl/chisel/src/kelvin:core_mini_axi_cc_library_cc", |
| "//hdl/chisel/src/kelvin:rvv_core_mini_axi_cc_library_cc", |
| ], |
| ) |
| |
| cc_binary( |
| name = "core_mini_axi_wrapper_example", |
| srcs = [ |
| "core_mini_axi_wrapper_example.cc", |
| ], |
| data = [ |
| "//tests/cocotb:wfi_slot_0.elf", |
| ], |
| deps = [ |
| ":core_mini_axi_wrapper", |
| "//tests/verilator_sim:elf", |
| ], |
| ) |
| |
| cc_library( |
| name = "kelvin_simulator_headers", |
| hdrs = [ |
| "kelvin_simulator.h", |
| "mailbox.h", |
| ], |
| ) |
| |
| cc_library( |
| name = "core_mini_axi_simulator", |
| srcs = ["core_mini_axi_simulator.cc"], |
| linkstatic = True, |
| deps = [ |
| ":core_mini_axi_wrapper", |
| ":kelvin_simulator_headers", |
| ], |
| alwayslink = True, |
| ) |
| |
| cc_library( |
| name = "core_mini_axi_simulator_rvv", |
| srcs = ["core_mini_axi_simulator.cc"], |
| copts = ["-DENABLE_RVV"], |
| linkstatic = True, |
| deps = [ |
| ":core_mini_axi_wrapper", |
| ":kelvin_simulator_headers", |
| ], |
| alwayslink = True, |
| ) |
| |
| kelvin_v2_binary( |
| name = "mailbox_example", |
| srcs = [ |
| "mailbox_example.cc", |
| ], |
| ) |
| |
| cc_binary( |
| name = "core_mini_axi_simulator_example", |
| srcs = [ |
| "core_mini_axi_simulator_example.cc", |
| ], |
| data = [ |
| ":mailbox_example.elf", |
| ], |
| deps = [ |
| ":core_mini_axi_simulator", |
| "//tests/verilator_sim:elf", |
| ], |
| ) |
| |
| # generate libraries for external projects |
| cc_binary( |
| name = "libkelvin_simulator.so", |
| linkshared = True, |
| visibility = ["//visibility:public"], |
| deps = [":core_mini_axi_simulator"], |
| ) |
| |
| cc_binary( |
| name = "libkelvin_simulator_rvv.so", |
| linkshared = True, |
| visibility = ["//visibility:public"], |
| deps = [":core_mini_axi_simulator_rvv"], |
| ) |