# Copyright 2023 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_hdl//verilog:providers.bzl", "verilog_library")

exports_files(
    srcs = [
        "ClockGate.sv",
        "Sram_12ffcp_128x128.v",
        "Sram_12ffcp_512x128.v",
        "Sram_12ffcp_2048x128.v",
        "Sram_1rw_256x256.v",
        "Sram_1rwm_256x288.v",
        "RstSync.sv",
        "TlulAdapterSram.sv",
        "Uart.sv",
    ],
    visibility = ["//visibility:public"],
)

verilog_library(
    name = "clock_gate",
    srcs = ["ClockGate.sv"],
    visibility = ["//visibility:public"],
    deps = [
        "//third_party/ip/lowrisc:prim_clock_gate",
    ],
)

verilog_library(
    name = "RstSync",
    srcs = ["RstSync.sv"],
    visibility = ["//visibility:public"],
    deps = [
        ":clock_gate",
    ]
)

verilog_library(
    name = "sram_1rw_256x256",
    srcs = ["Sram_1rw_256x256.v"],
    visibility = ["//visibility:public"],
)

verilog_library(
    name = "Sram_12ffcp_128x128",
    srcs = ["Sram_12ffcp_128x128.v"],
    visibility = ["//visibility:public"],
)

verilog_library(
    name = "sram_1rw_256x288",
    srcs = ["Sram_1rwm_256x288.v"],
    visibility = ["//visibility:public"],
)

verilog_library(
    name = "tlul_adapter_sram",
    srcs = ["TlulAdapterSram.sv"],
    visibility = ["//visibility:public"],
    deps = [
        "//third_party/ip/lowrisc:prim",
        "//third_party/ip/lowrisc:tlul_adapter_sram",
    ],
)

verilog_library(
    name = "uart",
    srcs = ["Uart.sv"],
    visibility = ["//visibility:public"],
    deps = [
        "//third_party/ip/lowrisc:uart",
    ],
)
