Move verilator rule to a separate file
- Prevents downstream targest that load matcha.bzl from having to load
fusesoc_build from fusesoc.bzl
Change-Id: I5e79a03ef6b2125249ef1c6586134f7174021234
diff --git a/hw/BUILD b/hw/BUILD
index a2c652e..85d820d 100644
--- a/hw/BUILD
+++ b/hw/BUILD
@@ -4,7 +4,7 @@
# SPDX-License-Identifier: Apache-2.0
load("@bazel_skylib//rules:common_settings.bzl", "string_list_flag")
-load("//rules:matcha.bzl", "target_fusesoc_build")
+load("//rules:verilator.bzl", "target_fusesoc_build")
package(default_visibility = ["//visibility:public"])
diff --git a/rules/matcha.bzl b/rules/matcha.bzl
index 5527117..bf4886a 100644
--- a/rules/matcha.bzl
+++ b/rules/matcha.bzl
@@ -5,10 +5,6 @@
"""Rules to build Matcha for the RiscV target"""
load(
- "@lowrisc_opentitan//rules:fusesoc.bzl",
- "fusesoc_build",
-)
-load(
"@lowrisc_opentitan//rules:opentitan.bzl",
"bin_to_vmem",
"opentitan_binary",
@@ -759,34 +755,3 @@
vmem_name,
],
)
-
-def target_fusesoc_build(name, output_groups):
- """A helper macro for building verilator targets.
-
- Args:
- name: The name of the top level target.
- output_groups: Verilator testbench passed to fusesoc_build.
- """
-
- fusesoc_build(
- name = "{}_verilator_real".format(name),
- srcs = [
- ":all_files",
- "//hw/top_{}:all_files".format(name),
- "//hw/top_{}/dv/verilator:all_files".format(name),
- ],
- cores = [
- "//:cores",
- "//hw/ip:BUILD",
- "//hw/top_{}:BUILD".format(name),
- ],
- data = ["@lowrisc_opentitan//hw/ip/otbn:all_files"],
- make_options = ":make_options",
- output_groups = output_groups,
- systems = ["lowrisc:dv:{}_verilator_sim".format(name)],
- tags = [
- "manual",
- "verilator",
- ],
- target = "sim",
- )
diff --git a/rules/verilator.bzl b/rules/verilator.bzl
new file mode 100644
index 0000000..f186b85
--- /dev/null
+++ b/rules/verilator.bzl
@@ -0,0 +1,41 @@
+# Copyright 2024 Google LLC.
+# Licensed under the Apache License, Version 2.0, see LICENSE for details.
+# SPDX-License-Identifier: Apache-2.0
+
+"""Support rules for building target specific verilated simulators"""
+
+load(
+ "@lowrisc_opentitan//rules:fusesoc.bzl",
+ "fusesoc_build",
+)
+
+def target_fusesoc_build(name, output_groups):
+ """A helper macro for building verilator targets.
+
+ Args:
+ name: The name of the top level target.
+ output_groups: Verilator testbench passed to fusesoc_build.
+ """
+
+ fusesoc_build(
+ name = "{}_verilator_real".format(name),
+ srcs = [
+ ":all_files",
+ "//hw/top_{}:all_files".format(name),
+ "//hw/top_{}/dv/verilator:all_files".format(name),
+ ],
+ cores = [
+ "//:cores",
+ "//hw/ip:BUILD",
+ "//hw/top_{}:BUILD".format(name),
+ ],
+ data = ["@lowrisc_opentitan//hw/ip/otbn:all_files"],
+ make_options = ":make_options",
+ output_groups = output_groups,
+ systems = ["lowrisc:dv:{}_verilator_sim".format(name)],
+ tags = [
+ "manual",
+ "verilator",
+ ],
+ target = "sim",
+ )