blob: 6c88270ba18cb283cd805390da006f515f875d46 [file] [log] [blame]
# 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",
)