| # Copyright 2024 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( |
| "@kelvin_hw//rules:chisel.bzl", |
| "chisel_library", |
| "chisel_cc_library", |
| ) |
| load("@kelvin_hw//rules:coco_tb.bzl", "cocotb_test_suite", "verilator_cocotb_model") |
| load("@kelvin_hw//third_party/python:requirements.bzl", "requirement") |
| |
| package(default_visibility = ["//visibility:public"]) |
| |
| load( |
| "//tests/cocotb:build_defs.bzl", |
| "VERILATOR_BUILD_ARGS", |
| ) |
| |
| chisel_library( |
| name = "bus", |
| srcs = [ |
| "Axi.scala", |
| "TLUL2Axi.scala", |
| "Axi2TLUL.scala", |
| "KelvinMemIO.scala", |
| "KelvinToTlul.scala", |
| "SecdedEncoderTestbench.scala", |
| "Spi2TLUL.scala", |
| "TileLinkUL.scala", |
| "TlulFifoAsync.scala", |
| "TlulFifoSync.scala", |
| "TlulIntegrity.scala", |
| "TlulIntegrityTestbench.scala", |
| "TlulSocket1N.scala", |
| "TlulSocketM1.scala", |
| "TlulWidthBridge.scala", |
| ], |
| deps = [ |
| "//hdl/chisel/src/common", |
| "//hdl/chisel/src/kelvin:kelvin_params", |
| "@chipsalliance_rocket_chip//:asyncqueue", |
| ], |
| ) |
| |
| chisel_cc_library( |
| name = "axi2tlul_cc_library", |
| chisel_lib = ":bus", |
| emit_class = "bus.EmitAxi2TLUL", |
| module_name = "Axi2TLUL", |
| ) |
| |
| chisel_cc_library( |
| name = "tlul2axi_cc_library", |
| chisel_lib = ":bus", |
| emit_class = "bus.EmitTLUL2Axi", |
| module_name = "TLUL2Axi", |
| ) |
| |
| chisel_cc_library( |
| name = "tlul_fifo_async_128_cc_library", |
| chisel_lib = ":bus", |
| emit_class = "bus.TlulFifoAsync128Emitter", |
| module_name = "TlulFifoAsync128", |
| ) |
| |
| chisel_cc_library( |
| name = "tlul_socket_1n_128_cc_library", |
| chisel_lib = ":bus", |
| emit_class = "bus.TlulSocket1N_128Emitter", |
| module_name = "TlulSocket1N_128", |
| ) |
| |
| chisel_cc_library( |
| name = "tlul_fifo_sync_cc_library", |
| chisel_lib = ":bus", |
| emit_class = "bus.TlulFifoSyncEmitter", |
| module_name = "TlulFifoSync", |
| ) |
| |
| chisel_cc_library( |
| name = "tlul_socket_m1_2_128_cc_library", |
| chisel_lib = ":bus", |
| emit_class = "bus.TlulSocketM1_2_128Emitter", |
| module_name = "TlulSocketM1_2_128", |
| ) |
| |
| chisel_cc_library( |
| name = "tlul_socket_m1_3_128_cc_library", |
| chisel_lib = ":bus", |
| emit_class = "bus.TlulSocketM1_3_128Emitter", |
| module_name = "TlulSocketM1_3_128", |
| ) |
| |
| chisel_cc_library( |
| name = "spi2tlul_128_cc_library", |
| chisel_lib = ":bus", |
| emit_class = "bus.Spi2TLUL_128_Emitter", |
| module_name = "Spi2TLUL", |
| ) |
| |
| verilator_cocotb_model( |
| name = "spi2tlul_128_model", |
| cflags = VERILATOR_BUILD_ARGS, |
| hdl_toplevel = "Spi2TLUL", |
| trace = True, |
| verilog_source = "//hdl/chisel/src/bus:Spi2TLUL.sv", |
| ) |
| |
| verilator_cocotb_model( |
| name = "tlul_socket_m1_2_128_model", |
| cflags = VERILATOR_BUILD_ARGS, |
| hdl_toplevel = "TlulSocketM1_2_128", |
| trace = True, |
| verilog_source = "//hdl/chisel/src/bus:TlulSocketM1_2_128.sv", |
| ) |
| |
| verilator_cocotb_model( |
| name = "tlul_fifo_async_128_model", |
| cflags = VERILATOR_BUILD_ARGS, |
| hdl_toplevel = "TlulFifoAsync128", |
| trace = True, |
| verilog_source = "//hdl/chisel/src/bus:TlulFifoAsync128.sv", |
| ) |
| |
| verilator_cocotb_model( |
| name = "tlul_fifo_sync_model", |
| cflags = VERILATOR_BUILD_ARGS, |
| hdl_toplevel = "TlulFifoSync", |
| trace = True, |
| verilog_source = "//hdl/chisel/src/bus:TlulFifoSync.sv", |
| ) |
| |
| verilator_cocotb_model( |
| name = "axi2tlul_model", |
| cflags = VERILATOR_BUILD_ARGS, |
| hdl_toplevel = "Axi2TLUL", |
| trace = True, |
| verilog_source = "//hdl/chisel/src/bus:Axi2TLUL.sv", |
| ) |
| |
| verilator_cocotb_model( |
| name = "tlul2axi_model", |
| cflags = VERILATOR_BUILD_ARGS, |
| hdl_toplevel = "TLUL2Axi", |
| trace = True, |
| verilog_source = "//hdl/chisel/src/bus:TLUL2Axi.sv", |
| ) |
| |
| chisel_cc_library( |
| name = "tlul_integrity_testbench_cc_library", |
| chisel_lib = ":bus", |
| emit_class = "bus.EmitTlulIntegrityTestbench", |
| module_name = "TlulIntegrityTestbench", |
| ) |
| |
| verilator_cocotb_model( |
| name = "tlul_integrity_testbench_model", |
| cflags = VERILATOR_BUILD_ARGS, |
| hdl_toplevel = "TlulIntegrityTestbench", |
| trace = True, |
| verilog_source = "//hdl/chisel/src/bus:TlulIntegrityTestbench.sv", |
| ) |
| |
| verilator_cocotb_model( |
| name = "tlul_socket_1n_128_model", |
| cflags = VERILATOR_BUILD_ARGS, |
| hdl_toplevel = "TlulSocket1N_128", |
| trace = True, |
| verilog_source = "//hdl/chisel/src/bus:TlulSocket1N_128.sv", |
| ) |
| |
| chisel_cc_library( |
| name = "secded_encoder_testbench_cc_library", |
| chisel_lib = ":bus", |
| emit_class = "bus.EmitSecdedEncoderTestbench", |
| module_name = "SecdedEncoderTestbench128", |
| ) |
| |
| verilator_cocotb_model( |
| name = "secded_encoder_testbench_model", |
| cflags = VERILATOR_BUILD_ARGS, |
| hdl_toplevel = "SecdedEncoderTestbench128", |
| trace = True, |
| verilog_source = "//hdl/chisel/src/bus:SecdedEncoderTestbench128.sv", |
| ) |
| |
| chisel_cc_library( |
| name = "secded_encoder_testbench_32_cc_library", |
| chisel_lib = ":bus", |
| emit_class = "bus.EmitSecdedEncoderTestbench32", |
| module_name = "SecdedEncoderTestbench32", |
| ) |
| |
| verilator_cocotb_model( |
| name = "secded_encoder_testbench_32_model", |
| cflags = VERILATOR_BUILD_ARGS, |
| hdl_toplevel = "SecdedEncoderTestbench32", |
| trace = True, |
| verilog_source = "//hdl/chisel/src/bus:SecdedEncoderTestbench32.sv", |
| ) |
| |
| chisel_cc_library( |
| name = "secded_encoder_testbench_57_cc_library", |
| chisel_lib = ":bus", |
| emit_class = "bus.EmitSecdedEncoderTestbench57", |
| module_name = "SecdedEncoderTestbench57", |
| ) |
| |
| verilator_cocotb_model( |
| name = "secded_encoder_testbench_57_model", |
| cflags = VERILATOR_BUILD_ARGS, |
| hdl_toplevel = "SecdedEncoderTestbench57", |
| trace = True, |
| verilog_source = "//hdl/chisel/src/bus:SecdedEncoderTestbench57.sv", |
| ) |